Quero restringir todo o tráfego da minha máquina Ubuntu para entrar ou sair da rede local ( eth0
) ou de ou para minha VPN ( tun0
). Deveria ser possível conectar o roteador na rede local, mas não seria possível sair da rede local sem usar a VPN.
Como não tenho experiência com iptables e não consegui encontrar algumas instruções, tentei o ufw, mas não tive sucesso.
Obrigado por algumas dicas ou trechos de código sobre como chegar mais perto!
Responder1
Você desejará operar na cadeia INPUT da tabela de filtros com uma ação padrão DROP e, em seguida, definir regras ACCEPT para pacotes recebidos (-i) em cada interface. Para melhorar a segurança, você também pode impor a sub-rede do host de origem, mas as regras abaixo serão suficientes.
iptables -t filter -p INPUT DROP
iptables -t filter -A INPUT -i eth0 -j ACCEPT
iptables -t filter -A INPUT -i tun0 -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT
Se você também quiser impor a mesma coisa para o tráfego que sai do host, faça também o seguinte:
iptables -t filter -p OUTPUT DROP
iptables -t filter -A OUTPUT -o eth0 -j ACCEPT
iptables -t filter -A OUTPUT -o tun0 -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
Porém, se você fizer isso, é melhor não ter as outras interfaces. Além disso, lo
está lá porque é a interface de loopback; sem essas regras, o loopback não funcionaria mais.
Observe que se o seu host for um roteador, essas regras não se aplicarão ao tráfego que ele está roteando (apenas ao tráfego que ele próprio gera ou que é destinado a ele e não através dele).