Come capire perché il pacchetto è stato considerato NON VALIDO da `iptables`?


11

Ho impostato alcune iptablesregole in modo che registri e rilasci i pacchetti che sono INVALID ( --state INVALID). Lettura dei registri come posso capire perché il pacchetto è stato considerato non valido? Ad esempio, quanto segue:

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

Risposte:


25

I pacchetti possono trovarsi in vari stati quando si utilizza l'ispezione dei pacchetti con stato.

  • Novità : il pacchetto non fa parte di alcun flusso o socket noto e i flag TCP hanno il bit SYN attivo.
  • Stabilito : il pacchetto corrisponde a un flusso o socket tracciato da CONNTRACKe ha eventuali flag TCP. Dopo che l'handshake TCP iniziale è stato completato, il bit SYN deve essere disattivato affinché un pacchetto sia nello stato stabilito.
  • Correlati : Il pacchetto non corrisponde a nessun flusso o socket noto, ma è previsto il pacchetto perché esiste un socket esistente che lo predice (esempi di questo sono dati sulla porta 20 quando esiste una sessione FTP esistente sulla porta 21 o dati UDP per una connessione SIP esistente sulla porta TCP 5060). Ciò richiede un ALG associato.
  • Non valido : se nessuno degli stati precedenti si applica, il pacchetto è nello stato INVALID. Ciò potrebbe essere causato da vari tipi di sonde di rete stealth o potrebbe significare che stai esaurendo le CONNTRACKvoci (che dovresti anche vedere nei registri). O potrebbe semplicemente essere del tutto benigno.

Nel tuo caso, il pacchetto che citi mostra che i flag TCP ACKe RST, e che è la porta di origine 80. Ciò significa che il server Web 31.13.72.7(che sembra essere Facebook) ti ha inviato un pacchetto di ripristino. È del tutto impossibile dire perché senza vedere i pacchetti precedenti (se presenti). Ma molto probabilmente ti sta inviando un ripristino per lo stesso motivo per cui il tuo computer ritiene che non sia valido.


Quindi non c'è modo di chiedere a un kernel (o iptables) di aggiungere una sorta di "firma" a un pacchetto che potrebbe ritenere che la ragione sia non valida?
mbaitoff,

2
Per definizione, no. Non valido significa che non corrisponde ad alcuno stato conosciuto. In altre parole, questo è il kernel che dice "Non so perché ho ricevuto questo pacchetto".
bahamat,

Per il debug di pacchetti INVALID specifici, osservarli in Wireshark da un dump potrebbe funzionare ... Ho visto pacchetti con campi SACK (in realtà i normali numeri di sequenza sono cambiati dal firewall e quelli nell'opzione SACK no, con conseguente SACK valori non validi) che è stato rotto da un firewall eliminato come non valido ...
Gert van den Berg,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.