Como entender por que o pacote foi considerado INVÁLIDO pelo `iptables`?

11

Eu configurei algumas iptablesregras para que ele registre e descarte os pacotes INVALID ( --state INVALID). Lendo os logs, como posso entender por que o pacote foi considerado inválido? Por exemplo, o seguinte:

Nov 29 22:59:13 htpc-router kernel: [6550193.790402] ::IPT::DROP:: IN=ppp0 OUT= MAC= SRC=31.13.72.7 DST=136.169.151.82 LEN=40 TOS=0x00 PREC=0x00 TTL=242 ID=5104 DF PROTO=TCP SPT=80 DPT=61597 WINDOW=0 RES=0x00 ACK RST URGP=0
mbaitoff
fonte

Respostas:

25

Os pacotes podem estar em vários estados ao usar a inspeção de pacotes com estado.

  • Novo : o pacote não faz parte de nenhum fluxo ou soquete conhecido e os sinalizadores TCP possuem o bit SYN ativado.
  • Estabelecido : O pacote corresponde a um fluxo ou soquete rastreado CONNTRACKe possui quaisquer sinalizadores TCP. Após a conclusão do handshake TCP inicial, o bit SYN deve estar desativado para que um pacote esteja no estado estabelecido.
  • Relacionado : O pacote não corresponde a nenhum fluxo ou soquete conhecido, mas o pacote é esperado porque existe um soquete existente que o predica (exemplos disso são dados na porta 20 quando há uma sessão FTP existente na porta 21 ou dados UDP para uma conexão SIP existente na porta TCP 5060). Isso requer um ALG associado.
  • Inválido : se nenhum dos estados anteriores se aplicar, o pacote estará no estado INVALID. Isso pode ser causado por vários tipos de análises de rede furtivas ou pode significar que você está ficando sem CONNTRACKentradas (o que você também deve ver declarado em seus logs). Ou pode simplesmente ser inteiramente benigno.

No seu caso, o pacote que você cita mostra que os sinalizadores TCP ACKe RST, e que a porta de origem é 80. O que isso significa é que o servidor da Web 31.13.72.7(que passa a ser o Facebook) enviou um pacote de redefinição para você. É totalmente impossível dizer o porquê sem ver os pacotes que vieram antes dele (se houver). Mas provavelmente está enviando uma redefinição pelo mesmo motivo que seu computador pensa que é inválido.

bahamat
fonte
Portanto, não há como solicitar a um kernel (ou iptables) que acrescente um tipo de "assinatura" a um pacote que conteria a razão de ser inválido?
mbaitoff
2
Por definição, não. Inválido significa que não corresponde a nenhum estado conhecido. Em outras palavras, esse é o kernel dizendo "Não sei por que recebi este pacote".
bahamat
Para depurar pacotes INVALID específicos, observá-los no Wireshark a partir de um despejo pode funcionar ... Eu vi pacotes com campos SACK (na verdade os números normais de sequência são alterados pelo firewall e os da opção SACK não, resultando em SACK valores inválidos) que foram quebrados por um firewall sendo descartado como inválido ...
Gert van den Berg