Recién estoy comenzando con iptables y me topé con algo que realmente no entiendo.
Para su información, seguí las instrucciones de IptablesHowTo de Ubuntu wiki .
Las tablas nat y mangle están vacías, solo estoy trabajando con la tabla de filtro en este momento.
El problema
Si agrego las siguientes reglas de iptables:
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
... entonces todavía tengo acceso a mi máquina a través de ssh, sin embargo, todos los comandos de iptables tardan aproximadamente un minuto o dos en ejecutarse. No es un problema de DNS, -n
no lo cambia.
La solución
Si enjuago la tabla y agrego estas tres reglas, todo funciona bien:
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
¿Alguien puede explicarme por qué la primera regla tiene un impacto tan grande en iptables? Entiendo que permite que las sesiones establecidas reciban tráfico, pero ¿por qué lo necesito si ssh está abierto?
sudo strace …
(desde un shell raíz) para ver en qué está bloqueando.
sudo
las búsquedas de DNS y si están bloqueadas, el comando será lento. ¿Todos sus otrosiptables
comandos tienen el prefijosudo
?