Parte de un firewall en un servidor:
iptables -A INPUT -p tcp --dport 22 -m state NEW --state -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 100 --hitcount 10 -j DROP
Cuando busco en línea, siempre veo que NUEVA se usa en esa regla, pero me cuesta entender por qué no se usan ESTABLECIDO y RELACIONADO.
Me gusta esto :
iptables -A INPUT -p tcp --dport 22 -m state NEW,ESTABLISHED,RELATED --state -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -m recent --update --seconds 100 --hitcount 10 -j DROP
¿Alguien puede explicarme cuándo exactamente un NUEVO paquete cambia a ESTABLECIDO y RELACIONADO?
SYN
/ACK
/RST
/ etc a medida que pasan a través del enrutador, y esperaría que iptables haga esto.Asumiendo que tanto el servidor como el cliente sean restrictivos
INPUT
y abiertosOUTPUT
, es decir:Y de iptables-extensions (8) sobre el ejemplo de FTP en modo activo:
1. NUEVO
El cliente en el puerto
50000
(cualquier puerto aleatorio sin privilegios) se conecta al servidor FTP en el puerto21
, el servidor necesitaría al menos esto para aceptar esta conexión entrante:2. ESTABLECIDO
Ahora, en el lado del cliente, abrió una conexión de salida de servidor en el puerto
21
utilizando un puerto local50000
y necesita los siguientes iptables para permitir que la respuesta a llegar a partirserver (21)
declient (50000)
:3. RELACIONADO
Ahora, una vez que se ha establecido la conexión FTP y se va a realizar una conexión de datos, el cliente abrirá un socket de servidor (sí, con el cliente FTP activo se convierte en un servidor para la conexión de datos) en el puerto
60000
(según tengo entendido, el cliente marcará este puerto60000
en cuantoRELATED
a la otra conexión desde50000->21
) y enviará este número de puerto al servidor utilizando elPORT
comando FTP . Luego, el servidor FTP abrirá una nueva conexión de su puerto20
a puerto60000
en el cliente, y bueno, el cliente ahora requiere lo siguiente para permitir que esta nueva conexión tenga éxito:Finalmente, para que esto funcione, debe habilitar el
ip_conntrack_ftp
módulo del kernel para permitir que el sistema marque conexiones / paquetes comoRELATED
( según tengo entendido, no he profundizado demasiado en esto):fuente
INPUT
.