iptables
funciona em uma base de primeiro jogo. Vamos detalhar seu exemplo:
iptables -A INPUT -s 172.217.23.206 -j ACCEPT
iptables -A OUTPUT -d 172.217.23.206 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
A primeira linha informa iptables
para permitir todo o tráfego do endereço IP 172.217.23.206
para a máquina onde essas regras foram aplicadas. E todo o tráfego é, literalmente, todo o tráfego . Então, não importa o protocolo, porta, opções, etc .; contanto que a fonte corresponda a 172.217.23.206
que passa.
A segunda linha permite todo e qualquer tráfego da sua máquina para 172.217.23.206
. Novamente, não importa qual seja o protocolo, porta, etc; contanto que o destino corresponda a 172.217.23.206
, é permitido.
A terceira linha informa iptables
a soltar qualquer tráfego de entrada que não corresponda às duas primeiras regras, enquanto a quarta e última linha informa iptables
a soltar qualquer tráfego de saída que não corresponda às três linhas anteriores.
Estou supondo que você queira criar um cenário que permita o tráfego para apenas alguns sites. O conjunto de regras que você escreveu não funcionará para esse cenário;
- Seu computador não tem como saber que o google.com pode resolver para
172.217.23.206
. Normalmente, ele pode adquirir essas informações consultando um servidor DNS ou por entradas/etc/hosts
locais. - Não há motivos para permitir tráfego de entrada neste cenário, pois
iptables
é inteligente o suficiente para rastrear suas conexões e permitir respostas. Este processo está chamando estado de manutenção. - Permitir todo o tipo de tráfego para
172.217.23.206
, apenas para obter um website, não faz qualquer sentido. - O tráfego ICMP (incluindo
ping
) é um tipo especial. Você precisa bloqueá-lo especificamente.
Este conjunto de regras se encaixa neste cenário:
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 443 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Este conjunto de regras permite que seu computador consulte servidores DNS usando a porta 53 / udp. Em seguida, ele permite o tráfego TCP para unix.stackexchange.com, para a porta 80 (http) e 443 (https). Ele mantém o controle das conexões e descarta todo o tráfego.
Você pode eliminar a regra que permite consultas DNS, desde que você tenha configurado as entradas correspondentes em /etc/resolv.conf
.