iptables fängt bei DENY ab, aber nicht bei ACCEPT, der Stelle davor in der Kette

iptables fängt bei DENY ab, aber nicht bei ACCEPT, der Stelle davor in der Kette

Ich habe ein seltsames Problem mit meiner iptables-Firewall: Wenn ich zwei aufeinanderfolgende identische Regeln einstelle, die erste ist ACCEPTund die zweite ist DENY, wird das eingehende Paket abgelehnt (und als solches protokolliert).

Wie ist es möglich, dass das eingehende Paket von der ersten Regel ignoriert und von der zweiten abgefangen wird?

Die fwbuilder-Ansicht ist hier: Bildbeschreibung hier eingeben

Hier ist der iptablesDump:

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state     RELATED,ESTABLISHED
In_RULE_0  all  --  0.0.0.0/0            0.0.0.0/0            state NEW
In_RULE_1  all  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
In_RULE_0  all  --  0.0.0.0/0            0.0.0.0/0            state NEW
In_RULE_1  all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

Chain In_RULE_0 (2 references)
target     prot opt source               destination         
LOG        all  --  0.0.0.0/0            0.0.0.0/0            LOG flags 0     level 6 prefix "FW RULE 0 -- ACCEPT "
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain In_RULE_1 (2 references)
target     prot opt source               destination         
LOG        all  --  0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 6 prefix "FW RULE 1 -- DENY "
DROP       all  --  0.0.0.0/0            0.0.0.0/0  

Ich habe es auch ACCEPTnur mit der Regel versucht, aber es funktioniert nicht.

Der einzige Unterschied besteht für mich darin, dass die DENYRegel nicht lautet state NEW. Aber für die Dutzenden von Firewalls, die ich bereits konfiguriert habe und die einwandfrei funktionieren, ist das Gleiche.

Antwort1

Sie müssen Folgendes wissen: Eine Regel mit der -IOption „iptables“ setzt eine Regel an den ANFANG der Liste. Eine Regel mit der -AOption setzt eine Regel an das Ende der Liste.

In Ihrem Fall: Ich denke, Sie haben möglicherweise in beiden (fast identischen) iptables-Regeln "-I" verwendet, die zweite Regel wird am Anfang der Liste vor der ersten Regel eingefügt und daher haben Sie eine Regelliste mit den Regeln in der folgenden Reihenfolge erstellt:

match -s x.x.x.x action DROP
match -s x.x.x.x action ACCEPT

Da Ihr Paket beiden Regeln entspricht, DROPwird die erste () in der Reihenfolge der tatsächlichen Betriebstabelle (die sich im RAM befindet) wirksam. Die Reihenfolge hat nichts mit der Reihenfolge in Ihrer iptable-Konfigurationsdatei zu tun.

Wenn Sie die Reihenfolge vertauschen, ist das Ergebnis anders.

Antwort2

OK, ich habe es gefunden. Es stellte sich heraus, dass meine FW vollkommen in Ordnung war, aber der virtuelle Host falsch konfiguriert war. Ich hatte keinen Fehler, aber iptables war nicht erlaubt. Als ich es erlaubte, wurde die FW betriebsbereit ... Kein Wunder, dass wir den Fehler auf der iptables-Ebene nicht finden konnten ... Danke für all die Hilfe :)

Antwort3

Ihre iptables In_RULE_0gelten nur für NEUE Verbindungen, wenn Sie verwenden state NEW.

Es wird auch auf Ihre FORWARD-Kette (Pakete durch den Server) eingestellt, nicht auf Ihre INPUT-Kette (Pakete an den Server).

Wie testen Sie? Pingen Sie eine bestimmte Schnittstelle des Servers an?

Können Sie die vollständige Ausgabe von: posten?

iptables -vnL

Versuchen Sie die folgende Regel, um den Verkehr in der INPUT-Kette zu protokollieren (Pings an die Serverschnittstelle)

iptables -I INPUT 1 -j In_RULE_0

verwandte Informationen