Ich brauche eine Regel zum Abgleichen von Paketen ohne festgelegte Optionen und/oder mit festgelegter spezifischer Empfangsfenstergröße:
IP (tos 0x0, ttl 66, id 9000, offset 0, flags [keine], proto TCP (6), länge 40) yyyy11111 > xxxxhttp: Flags [S], cksum 0xe425 (korrekt), seq 1729214256, win 715, länge 0
Dieses Paket hat also Win 715, Flags [keine] -> wie könnte ich solche Pakete zuordnen?
Antwort1
Vielen Dank für die Antworten, aber ich glaube, ich habe die beste Lösung (mit der besten Geschwindigkeit) gefunden:
iptables -I INPUT -m u32 --u32 "6&0xFF=0x6 && 0>>22&0x3C@12&0xFFFF=0x02CB" -j LOG
Die obige Zeile stellt sicher, dass es sich um ein TCP-Paket handelt, ermittelt dann die IP-Länge und passt sie (es werden zusätzlich zwei Byte extrahiert) an die Bytes an, die verglichen werden müssen (im Beispiel 715). Mit einem Wort könnte jeder mit dem großen Modul -> u32 jedes Bit/Byte in den Paketen extrahieren/finden/vergleichen. Weitere Informationen:iptables-u32.v0.1
Antwort2
Iptables verfügt über Optionen zum Umgang mit TCP-Flags und TCP-Optionen, nämlich --tcp-option number
und --tcp-flags
.
Für die Fenstergröße können Sie das String-Modul mit der Option: verwenden --hex-string pattern
. In Ihrem Fall lautet die Option also --hex-string 02CB
. Um genaue Ergebnisse zu erhalten, sollten Sie den Suchversatz mit --from
und einschränken --to
. Sehen Sie sich aniptables-HandbuchFür mehr Information.