
Ich habe iptables
die 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 RST
den ACK
Flags abgelehnt.
Ist eine Ablehnung nur bei RST
gesetztem 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.1
muss 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. iptables
Befehl 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:
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.