iptables reject-mit tcp-reset ohne ACK-Flag

iptables reject-mit tcp-reset ohne ACK-Flag

Ich habe iptablesdie Regel erstellt:

iptables -I INPUT -p tcp --tcp-flags SYN,RST,ACK,FIN SYN --dport 10000 -j REJECT --reject-with tcp-reset

Tatsächlich werden dadurch aber alle Pakete mit RSTden ACKFlags abgelehnt.

Ist eine Ablehnung nur bei RSTgesetztem Flag möglich?

Ich weiß, dass dies in einer normalen Umgebung keinen Sinn ergibt, aber ich habe ein Labor und muss genau wie beschrieben vorgehen.

Antwort1

Ich bin in China, also dig +tcp twiter.com @1.1.1.1muss ich vorher diese beiden Zeilen eingeben:

sudo iptables -A INPUT -p tcp -s 1.1.1.1/32 --tcp-flags ALL RST,ACK -j DROP
sudo iptables -A INPUT -p tcp -s 1.1.1.1/32 --tcp-flags ALL RST -j DROP

Dann bekomme ich die richtige Antwort:

;; ANSWER SECTION:
twitter.com.        204 IN  A   104.244.42.65

Wenn ich nur den 1. iptablesBefehl ausführe, schlägt mein Dig fehl:

";; communications error to 1.1.1.1#53: connection reset"

Die Große Firewall von Chinaist komisch...

Antwort2

Um eingehende RST-Pakete zu verwerfen,

  iptables -I INPUT -p tcp --tcp-flags ALL RST,ACK  --dport 10000 -j DROP

Um ausgehende RST-Pakete zu verwerfen,

  iptables -I OUTPUT -p tcp --tcp-flags ALL RST,ACK --dport 10000 -j DROP

Ehemalige jugoslawische Republik Mazedonien:

URL:https://networkengineering.stackexchange.com/questions/2012/why-do-i-see-a-rst-ack-packet-instead-of-a-rst-packet

Ein RST/ACK ist keine Bestätigung eines RST, genauso wie ein SYN/ACK nicht genau eine Bestätigung eines SYN ist. Die TCP-Einrichtung ist eigentlich ein Vier-Wege-Prozess: Der initiierende Host sendet ein SYN an den empfangenden Host, der ein ACK für dieses SYN sendet. Der empfangende Host sendet ein SYN an den initiierenden Host, der ein ACK zurücksendet. Dadurch wird eine zustandsbehaftete Kommunikation hergestellt.

SYN --> 
    <-- ACK
    <-- SYN
ACK -->

Um dies effizienter zu gestalten, kann der empfangende Host das SYN bestätigen und sein eigenes SYN im selben Paket senden, wodurch der gewohnte Drei-Wege-Prozess entsteht.

SYN -->
    <-- SYN/ACK
ACK -->

Im Falle eines RST/ACK bestätigt das Gerät mit einem ACK, welche Daten in den vorherigen Paketen in der Sequenz gesendet wurden, und benachrichtigt den Absender dann mit dem RST, dass die Verbindung geschlossen wurde. Das Gerät kombiniert die beiden Pakete einfach zu einem, genau wie bei einem SYN/ACK. Ein RST/ACK ist normalerweise keine normale Antwort beim Schließen einer TCP-Sitzung, aber es ist auch nicht unbedingt ein Hinweis auf ein Problem.

verwandte Informationen