Jak zrozumieć, dlaczego pakiet został uznany za NIEPRAWIDŁOWY przez `iptables`?

11

Skonfigurowałem niektóre iptablesreguły, aby rejestrował i upuszczał pakiety INVALID ( --state INVALID). Czytanie dzienników Jak mogę zrozumieć, dlaczego pakiet został uznany za nieprawidłowy? Na przykład:

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
źródło

Odpowiedzi:

25

Pakiety mogą znajdować się w różnych stanach podczas korzystania ze stanowej kontroli pakietów.

  • Nowość : Pakiet nie jest częścią żadnego znanego przepływu lub gniazda, a flagi TCP mają włączony bit SYN.
  • Ustanowiony : Pakiet pasuje do przepływu lub gniazda śledzonego przez CONNTRACKi ma dowolne flagi TCP. Po zakończeniu wstępnego uzgadniania protokołu TCP bit SYN musi być wyłączony, aby pakiet mógł zostać ustanowiony.
  • Powiązane : Pakiet nie pasuje do żadnego znanego przepływu lub gniazda, ale pakiet jest oczekiwany, ponieważ istnieje istniejące gniazdo, które go przewiduje (przykładami są dane na porcie 20, gdy istnieje sesja FTP na porcie 21 lub dane UDP dla istniejącego połączenia SIP na porcie TCP 5060). Wymaga to powiązanego ALG.
  • Nieprawidłowy : jeśli żaden z poprzednich stanów nie ma zastosowania, pakiet jest w stanie INVALID. Może to być spowodowane różnymi rodzajami ukrytych sond sieciowych lub może oznaczać, że brakuje Ci CONNTRACKwpisów (co również powinieneś zobaczyć w dziennikach). Lub może być po prostu całkowicie łagodny.

W twoim przypadku cytowany pakiet pokazuje, że flagi TCP ACKi RSTport źródłowy to 80. Oznacza to, że serwer sieciowy pod adresem 31.13.72.7(którym jest Facebook) wysłał ci pakiet resetowania. Nie można powiedzieć dlaczego, nie widząc pakietów, które przyszły (jeśli w ogóle). Ale najprawdopodobniej wysyła reset z tego samego powodu, dla którego komputer uważa, że ​​jest nieprawidłowy.

bahamat
źródło
Więc nie ma sposobu, aby poprosić jądro (lub iptables) o dodanie pewnego rodzaju „sygnatury” do pakietu, który utrzymywałby przyczynę jego nieprawidłowości?
mbaitoff,
2
Z definicji nie. Nieprawidłowy oznacza, że ​​nie pasuje do żadnego znanego stanu. Innymi słowy, to jądro mówi: „Nie wiem, dlaczego otrzymałem ten pakiet”.
bahamat
W przypadku debugowania określonych NIEPRAWIDŁOWYCH pakietów przeglądanie ich w Wireshark ze zrzutu może działać ... Widziałem pakiety z polami SACK (w rzeczywistości zapora zmienia normalne numery sekwencyjne, a te w opcji SACK nie, co powoduje SACK wartości są niepoprawne), który został uszkodzony przez zaporę sieciową upuszczoną jako niepoprawną ...
Gert van den Berg