Gostaria de verificar qual é o comportamento do estado NOVO nas conexões TCP no iptables (Ubuntu 22.04).
Aceita apenas SYN=1 e ACK=0/FIN=0/RST=0 em flags tcp?
Exemplo mais detalhado - digamos que tenho a regra abaixo em meu servidor:
iptables -A INPUT -p tcp -m conntrack --ctstate NEW -j ACCEPT
O cliente envia pacotes com SYN=1 AND, por exemplo. FIN=1 ou RST=1. Esse pacote será correspondido pela regra ACCEPT acima?
Eu estava lendo alguns documentos antigos do iptables e a parte abaixo me fez pensar se isso ainda é algo para se preocupar com as implementações/kernel recentes no Ubuntu: https://www.frozentux.net/iptables-tutorial/iptables-tutorial.html #NEWNOTSYN
Pacotes TCP com SYN = 1 E, por exemplo. FIN=1 ou RST=1 NÃO corresponderá à sua regra:
Teste experimental:
escrevi este exemplo de conjunto de regras do iptables, onde os pacotes são apenas registrados e não aceitos ou descartados.
Então eu costumava
hping3
enviar pacotes TCP com os flags de teste desejados de outro computador:Teste 1: SYN=1 e FIN=1:
E via tcpdump eu obtive:
E o iptables:
Observe que através dos contadores de pacotes o estado do pacote foi classificado como INVÁLIDO.
Teste 2: SYN=1 e RST=1:
E via tcpdump eu obtive:
E o iptables:
Observe que houve outro pacote INVÁLIDO.
Teste 2: SYN=0 e ACK=1:
E via tcpdump eu obtive:
E o iptables:
Observe que o pacote foi classificado como NOVO, mas também foi pego pela
NEW TCP no SYN
regra, onde normalmente seria descartado.As
/var/log/syslog
entradas:Veja também .