iptables-Regeln zum Blockieren bestimmter Pakete

iptables-Regeln zum Blockieren bestimmter Pakete

Ich verwende die folgende iptables-Regel:

iptables -A INPUT -p tcp -m tcp --tcp-flags PSH,ACK PSH,ACK -m length --length 52 -m state --state ESTABLISHED -j DROP

Es blockiert zwar die unerwünschten Pakete von meinem Server, blockiert aber auch Dinge, die es nicht blockieren sollten.

Hier sind die mit Wireshark erfassten Pakete:

unwanted packet:source=192.168.0.100    destination=192.168.0.111   TCP lenght=66   [TCP Retransmission] 62401→38111 [PSH, ACK] Seq=15 Ack=19 Win=65536 Len=12

needed packet:source=192.168.0.100  destination=192.168.0.111   TCP lenght=66   [TCP Retransmission] 62433→38111 [PSH, ACK] Seq=344 Ack=37855 Win=62825 Len=12

Meine Frage ist, wie ich die Regel ändern kann, um die benötigten Pakete zuzulassen und die unerwünschten zu blockieren.

Antwort1

Dies ist auf Firewall-Ebene nicht möglich (aber Sie können es – aber Sie erreichen damit nicht das, was Sie sich vorstellen oder was Sie möchten). Das zweite Paket (das Sie wünschen) ist Teil desselben TCP-Streams wie das erste Paket (das Sie nicht möchten), und TCP ist ein zuverlässiger Übermittlungsmechanismus. Das bedeutet, dass das Betriebssystem erkennt, ob ein Paket in der Mitte des Streams verloren gegangen ist (anhand der Sequenznummer im Header jedes Pakets, siehe z. B.http://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structurefür mehr Informationen).

Wenn Sie ein Paket mitten in einem Stream herausfiltern, teilt der Kernel dem anderen Ende einfach weiterhin mit, dass ein Paket fehlt, und das andere Ende überträgt es erneut (dieses Verhalten sehen Sie bereits, beachten Sie die [TCP Retransmission]Markierungen oben). Wenn Sie diese erneuten Übertragungen weiterhin blockieren, wird der Stream desynchronisiert, die Verbindung wird unterbrochen und nichts im Stream wird verarbeitet.

Sie müssen dies auf der Anwendungsebene tun.

Bearbeitenein Kommentaraustausch zwischen uns beiden (von dem viele inzwischen gelöscht wurden) hat deutlich gemacht, dass die Frage möglicherweise nicht alle Details enthält, die sie enthalten sollte. Ich empfehle Ihnen, diese Frage zu schließen – entweder meine Antwort zu akzeptieren oder die gesamte Frage zu löschen – und eine neue zu schreiben, in der Sie ausführlich darlegen, was genau jetzt passiert, wie es passiert und was Sie erreichen möchten.

Alles, was ich jetzt mit einiger Sicherheit sagen kann, ist, dassSie können nicht iptablesein einzelnes Paket aus der Mitte eines TCP-Streams ausschneiden und erwarten, dass der Rest des Streams von der empfangenden Anwendung korrekt verarbeitet wird..

verwandte Informationen