Estou apenas começando com o iptables e me deparei com algo que eu realmente não entendo.
Para sua informação, segui as instruções do IptablesHowTo do wiki do Ubuntu .
As tabelas nat e mangle estão vazias, estou trabalhando apenas com a tabela de filtros no momento.
O problema
Se eu adicionar as seguintes regras do iptables:
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
... então ainda tenho acesso à minha máquina via ssh, no entanto, todos os comandos do iptables levam cerca de um minuto ou dois para serem executados. Não é um problema de DNS, -n
não o altera.
A solução
Se eu liberar a tabela e adicionar essas três regras, tudo estará funcionando bem:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
Alguém pode me explicar por que a primeira regra tem um impacto tão grande no iptables? Entendo que ele permite que sessões estabelecidas recebam tráfego, mas por que eu preciso se o ssh estiver aberto?
sudo strace …
(a partir de um shell raiz) para ver o que está bloqueando.
sudo
faz pesquisas de DNS e, se estiverem bloqueadas, o comando será lento. Todos os seus outrosiptables
comandos são prefixadossudo
?