Fechando todo o tráfego UDP, exceto a resolução DNS

0

Estas são minhas configurações do iptables:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT ! -s 87.27.77.107/32 -p tcp -m tcp --dport 21 -j DROP
-A INPUT -i eth0 -p udp -j DROP
-A OUTPUT -p udp -j DROP

Tentando permitir a resolução de DNS usando os dois servidores DNS especificados em /etc/resolv.conf, mas estou tendo problemas. Tentei abrir a porta 53 sem restringir o endereço IP de origem / destino, mas sem sorte:

iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

iptables -A INPUT -p tcp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT

# host google.it
;; connection timed out; trying next origin

Onde estou errado?

    
por Marco Marsala 24.09.2018 / 10:30

1 resposta

2

Não é suficiente verificar as configurações do iptables no começo; você também tem que verificá-los no final para ver o resultado dos seus comandos. As regras são processadas de cima para baixo, e toda vez que você usa -A (que é a abreviação de --append ), ele adiciona a regra na parte inferior - abaixo a regra "drop all UDP packets" existente.

Veja o que você tem:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT ! -s 87.27.77.107/32 -p tcp -m tcp --dport 21 -j DROP
-A INPUT -i eth0 -p udp -j DROP
-A INPUT -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 53 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp -j DROP
-A OUTPUT -p udp -m udp --sport 53 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT

Para corrigir isso, mova suas regras de "aceitar" acima da regra "suspensa", por exemplo, especificando a posição exata ao inserir ou anexar ( -I/-A INPUT <lineno> ).

(Melhor ainda, prepare um conjunto de regras completo em forma de arquivo de texto e carregue tudo de uma vez (iptables-save / restore ou até mesmo ferm ) em vez de inserir regras aleatórias em lugares aleatórios.)

Observe que metade das regras de aceitação são inúteis se você estiver atuando apenas como um cliente DNS (não um servidor DNS). Consultas DNS de saída terão 53 como porta de destino, mas não como a porta de origem (que é aleatória); e vice-versa, as respostas recebidas terão 53 como fonte, mas uma porta de destino aleatória.

    
por 24.09.2018 / 10:38

Tags