Eu queria fazer algo semelhante no passado. Eu tinha duas ideias: dividir as coisas com base na porta e dividir as coisas com base no proprietário do processo. O sistema de rede do Linux pode, por isso, lidar com esses dois cenários.
Eu fiz duas perguntas no Unix.SE. Eu não acompanhei particularmente bem, então se você brincar, me diga o que funciona para você.
- pela porta Permitir apenas determinados tráfegos de saída em determinadas interfaces
- Pelo usuário Posso limitar um usuário (e seus aplicativos) a uma interface de rede?
Eu ouso dizer que há alguma sobreposição entre as duas técnicas e é por isso que eu menciono as duas aqui. Eu também coloquei uma grande recompensa no segundo para alguns exemplos sólidos. Acho que dividir as conexões de rede entre os usuários é provavelmente o cenário mais útil para nós dois.
Editar: acabei de criar um Google para iptables owner
e encontrado isso . Isso parece sugerir que algumas linhas sujas do iptables consertariam isso. Eu ainda estou para testar, mas parece positivamente simples ...
Suponha que você tinha eth0
e eth1
conexões e queria que o usuário bob
usasse eth1
e usasse apenas eth1
e force todo o restante para eth0
. Isso deve fazer isso ...
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o eth0 -m owner --uid-owner bob -j DROP
iptables -A OUTPUT -o eth1 -m owner --uid-owner bob -j ACCEPT
iptables -A OUTPUT -o eth1 -j DROP
iptables -A OUTPUT -o eth0 -j ALLOW
Estou assumindo que você pode apenas trocar o nosso eth1
pelo nome da sua conexão VPN e bob
por um novo usuário que você criará para executar sua conexão ssh via: su -c ssh username@host bob
.