Novas conexões do iptables vs. --syn

13

Qual é a diferença entre:

iptables ... -m state --state NEW

e

iptables ... --syn

O primeiro deve selecionar NOVAS conexões, mas as novas conexões do AFAIK são feitas enviando um sinalizador de sincronização TCP. O outro significa exatamente isso - pacotes com um sinalizador syn.

Você pode dar exemplos práticos quando os comandos acima retornarem resultados diferentes?

Wanson
fonte

Respostas:

8

O --synsinalizador é útil para verificar o tráfego TCP, mas o NEWestado pode ser usado para outros protocolos (incluindo TCP) como UDPe ICMP. Posso dizer que NEWé mais geral que a --synopção TCP.

No manual do iptables, você pode ler:

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

Um exemplo, uma solicitação DNS corresponderá ao NEWestado, mas não corresponderá a uma regra com a --synopção Simplesmente, é um datagrama UDP.

Além disso, a --synopção pode ser usada para verificar se há pacotes TCP com combinação de sinalizadores inválidos para eliminá-los.

Além disso, você pode usar essas duas opções juntas para verificar os NEWfluxos TCP sem --syno primeiro pacote e descartá-los, como:

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

Aqui, estamos adicionando esses tipos de pacotes a uma cadeia definida pelo usuário chamada bad_tcp_packetspara ser descartada / registrada, etc ...

Khaled
fonte