iptables-Regel, um den gesamten ausgehenden lokal entstehenden Datenverkehr zuzulassen?


11

Ich habe mich gefragt, ob mir jemand mit der folgenden iptables-Regel helfen könnte:

Wir möchten JEDEN und ALLEN lokal entstehenden Datenverkehr (wie in, auf dem Server, auf dem iptables ausgeführt wird) zulassen.

DNS, HTTP, etc ... alles. Jede Verbindung, die von dem Server initiiert wird, auf dem iptables ausgeführt wird, sollte zulässig sein.

Derzeit verwenden wir grundsätzlich die OUTPUT-Standardrichtlinie ACCEPT. Ist das richtig? Eingänge sind blockiert, daher gehe ich davon aus, dass die Verbindungen (mit Ausnahme der von uns zugelassenen) nicht gestartet werden können, da sie getrennt werden, bevor unsere Seite die OUTPUT-Richtlinie erreichen kann.

Sorry, meine iptables Fähigkeiten sind schwach;)

Dankesehr.

Antworten:


26

Dazu benötigen Sie zwei Regeln:

iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT
iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

Einige Notizen.

  • Bereits vorhandene Regeln, die Sie möglicherweise haben, tun dies möglicherweise bereits, sehen jedoch anders aus.
  • Dies wird verwendet, um -Izu erzwingen, dass diese Regeln an erster Stelle stehen. iptablesRegeln werden von oben nach unten ausgewertet.
  • Die Flags -ound -ibedeuten "out" bzw. "in". Ersetzen Sie ihn eth0durch den richtigen Namen der Ethernet-Schnittstelle.

wir haben beide :) ich habe den zweiten nicht erwähnt, weil wie gesagt ... meine iptables Fähigkeiten sind schwache Soße. danke für die Klarstellung :)
anonym-eins

2
-d 0.0.0.0/0ist redundant und wird nicht benötigt.
Zapstar

Gute Antwort. Aber jetzt kann ich den Server anpingen und verstehe nicht warum. Können Sie erklären?
Daniel

@Daniel Wenn Sie nur ausgehenden Datenverkehr zulassen, wird die Ping-Antwort vom Paketfilter gelöscht, wenn sie Ihren Host erreicht. Um dies zu verhindern, müssen Sie auch eingehenden Datenverkehr zulassen, der derselben Sitzung zugeordnet ist wie ausgehender Datenverkehr oder mit diesem verbunden ist. Mit anderen Worten, da die Ping-Antwort mit der Ping-Anforderung zusammenhängt, sollte sie zulässig sein. Wenn eine eingehende Ping-Anforderung vorliegt und kein ausgehender Ping in der Sitzungstabelle aufgezeichnet ist, wird das eingehende Paket verworfen. Hoffe das macht Sinn!
Bahamat

@bahamat: Nachdem ich es erneut versucht hatte, stellte ich fest, dass ich den ICMP-Verkehr explizit zulassen muss. Und ich sprach davon, den Server anpingen zu können, wo ich die obigen Regeln implementiert habe. Kann es übrigens nicht reproduzieren, vielleicht habe ich irgendwo einen Fehler gemacht. Danke trotzdem.
Daniel

0

Derzeit verwenden wir grundsätzlich die OUTPUT-Standardrichtlinie ACCEPT.

Dies reicht für OUTPUT aus, da Netfilter keine speziellen Regeln benötigt, um die Verfolgung zustandsbehafteter Verbindungen zu starten.

Wenn Sie jedoch eingehenden Datenverkehr gemäß der Richtlinie " Standardverweigerung " herausfiltern möchten, können Sie INPUT-chain auf Folgendes umschalten DROP:iptables -P INPUT DROP

Danach würde alles mit nur 2 Regeln eingestellt :

iptables -A INPUT -j ACCEPT -i lo
iptables -A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED

Achten Sie auf die Regel, die Eingabeverkehr auf der Loopback-Oberfläche zulässt - wie ich in meinem Blogbeitrag " Minimale Firewall für Endbenutzer " ausgeführt habe, wird Loopback-Verkehr im Vergleich zur Rückgabe nicht durch "etablierte" Statusprüfung behandelt, sofern dies nicht ausdrücklich gestattet ist Verkehr vorbei, sagen wir , eth0.

Um sicherzustellen, dass dieser minimale Regelsatz " wie besehen" geladen wird , ohne die bereits vorhandenen Regeln zu beeinträchtigen, ist es zweckmäßig, ihn iptables-restorein der SHELL-Sitzung zu verwenden:

lptables-restore <<__EOF__
-P INPUT DROP
-A INPUT -j ACCEPT -i lo
-A INPUT -j ACCEPT -m state --state RELATED,ESTABLISHED
__EOF__

Bevor Sie dies tun, stellen Sie sicher, dass Sie Ihre eigene Netzwerkverbindung 1 nicht trennen. Obwohl bereits geöffnete SSH-Sitzungen weiterhin normal funktionieren sollten, funktionieren die Versuche, neue zu öffnen, nicht.

__ __

  1. Natürlich können Sie andere Regeln hinzufügen, um solche Verbindungen zuzulassen. Es kann so einfach wie einfach sein -A INPUT -j ACCEPT -p tcp --dport 22- hier muss man nicht basteln -m state. Vergiss auch nicht, dich vor dem Ausprobieren lptables-restorewieder zu reparieren iptables-restore;)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.