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.