iptables NUEVAS conexiones vs. --syn

13

Cuál es la diferencia entre:

iptables ... -m state --state NEW

y

iptables ... --syn

El primero debe seleccionar NUEVAS conexiones, pero las nuevas conexiones AFAIK se realizan enviando un indicador de sincronización TCP. El otro significa justamente eso: paquetes con un indicador de sincronización.

¿Puedes dar ejemplos prácticos cuando los comandos anteriores devuelven resultados diferentes?

Wanson
fuente

Respuestas:

8

El --synindicador es útil para verificar el tráfico TCP, pero el NEWestado se puede usar para otros protocolos (incluidos TCP) como UDPy ICMP. Puedo decir que NEWes más general que la --synopción TCP.

Desde el manual de iptables, puede leer:

NEW    meaning that the packet has started a new connection,
       or otherwise associated with a connection which has not seen packets in both directions

Un ejemplo, una solicitud de DNS coincidirá con el NEWestado, pero no coincidirá con una regla con la --synopción. Simplemente, es un datagrama UDP.

Además, la --synopción se puede usar para verificar los paquetes TCP con una combinación de marcas incorrectas para descartarlos.

Además, puede usar ambas opciones juntas para verificar los NEWflujos TCP sin el --synprimer paquete y descartarlos como:

$ sudo iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"

Aquí, estamos agregando este tipo de paquetes a una cadena definida por el usuario llamada bad_tcp_packetsa ser descartada / registrada, etc.

Khaled
fuente