Conntrack y reglas dinámicas de ipset/iptables

Conntrack y reglas dinámicas de ipset/iptables

No entiendo algunos conceptos básicos del módulo conntrack.

En primer lugar, estoy seguro de que está habilitado en mi sistema (Ubuntu 18.04), modinfomuestra información sobre nf_conntrack y /proc/modulesel archivo indica que nf_conntrack está "activo".

En segundo lugar, tengo la siguiente configuración de prueba:

Máquina A (192.168.1.2) <-----> Máquina enrutadora (192.168.1.1 y 192.168.2.1) <----> Máquina B (192.168.2.2)

En Router Machine tengo la siguiente regla de iptables:
iptables -t filter -A FORWARD -m set --match-set BlackListPort dst -j DROP

BlackListPort es una tabla ipset.
Ahora establezco una conexión SSH desde la Máquina A (1.2) a la Máquina B (2.2). Después de confirmar que funciona, agrego el puerto 22 (SSH predeterminado) a la tabla BlackListPort.

La conexión SSH se congela/cuelga hasta que elimino el puerto 22 de esa tabla ipset.

Ahora la pregunta: Dado que conntrack está presente en mi sistema, ¿por qué el bloqueo SSH tiene éxito? La conexión SSH se estableció antes de que se agregara el puerto 22 a ipset, por lo que conntrack debería omitir todos los paquetes, permitiendo que SSH funcione.

Respuesta1

La conexión SSH se estableció antes de que se agregara el puerto 22 a ipset, por lo que conntrack debería omitir todos los paquetes, permitiendo que SSH funcione.

Esto no es correcto.

Todos los paquetes se procesarán a través de las reglas de filtrado, ya sea que pertenezcan a conexiones rastreadas o no.

Es una optimización muy común de las reglas de iptables poner algo como esto cerca del comienzo de la cadena de reglas relevante ( FORWARDen su ejemplo):

iptables -t filter -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

En distribuciones más antiguas, es posible que veas esta versión:

iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

(Entiendo que conntrackahora se prefiere la coincidencia a la statecoincidencia. Creo que algunas versiones del kernel incluso te molestan por eso).

Esto permitirá el paso de paquetes que pertenecen a conexiones existentes, si existe información de seguimiento de conexión para ellos. Pero el punto es,puede controlardonde exactamenteusted pone esa regla, o si la usa en absoluto. Por lo tanto, puede hacer que las reglas de su firewall se preocupen por los estados de conexión tanto (o tan poco) como desee.

información relacionada