In diesem Handbuch wird versucht zu erklären, wie iptables unter Linux in einer leicht verständlichen Sprache verwendet wird.
Überblick
Iptables ist eine regelbasierte Firewall, die jede Regel der Reihe nach verarbeitet, bis eine passende gefunden wird.
Todo: Beispiel hier einfügen
Verwendung
Das Dienstprogramm iptables ist normalerweise auf Ihrer Linux-Distribution vorinstalliert, führt jedoch keine Regeln aus. Sie finden das Dienstprogramm hier auf den meisten Distributionen:
/sbin/iptables
Blockieren einer einzelnen IP-Adresse
Sie können eine IP blockieren, indem Sie den Parameter -s verwenden und 10.10.10.10 durch die Adresse ersetzen, die Sie blockieren möchten. Sie werden in diesem Beispiel feststellen, dass wir den Parameter -I (oder –insert funktioniert auch) anstelle des Anhängens verwendet haben, da wir sicherstellen möchten, dass diese Regel zuerst angezeigt wird, bevor Regeln zugelassen werden.
/sbin/iptables -I INPUT -s 10.10.10.10 -j DROP
Zulassen des gesamten Datenverkehrs von einer IP-Adresse
Sie können alternativ den gesamten Datenverkehr von einer IP-Adresse zulassen, indem Sie denselben Befehl wie oben verwenden, jedoch DROP durch ACCEPT ersetzen. Sie müssen sicherstellen, dass diese Regel zuerst angezeigt wird, bevor DROP-Regeln angezeigt werden.
/sbin/iptables -A INPUT -s 10.10.10.10 -j ACCEPT
Blockieren eines Ports von allen Adressen
Sie können den Zugriff auf einen Port vollständig über das Netzwerk blockieren, indem Sie den Schalter –dport verwenden und den Port des Dienstes hinzufügen, den Sie blockieren möchten. In diesem Beispiel blockieren wir den MySQL-Port:
/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP
Zulassen eines einzelnen Ports von einer einzelnen IP
Sie können den Befehl -s zusammen mit dem Befehl –dport hinzufügen, um die Regel weiter auf einen bestimmten Port zu beschränken:
/sbin/iptables -A INPUT -p tcp -s 10.10.10.10 --dport 3306 -j ACCEPT
Anzeigen der aktuellen Regeln
Sie können die aktuellen Regeln mit dem folgenden Befehl anzeigen:
/sbin/iptables -L
Dies sollte eine Ausgabe ähnlich der folgenden ergeben:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 192.168.1.1/24 anywhere
ACCEPT all -- 10.10.10.0/24 anywhere
DROP tcp -- anywhere anywhere tcp dpt:ssh
DROP tcp -- anywhere anywhere tcp dpt:mysql
Die tatsächliche Ausgabe wird natürlich etwas länger sein.
Löschen der aktuellen Regeln
Sie können alle aktuellen Regeln mit dem Parameter flush löschen. Dies ist sehr nützlich, wenn Sie die Regeln in die richtige Reihenfolge bringen müssen oder wenn Sie testen.
/sbin/iptables --flush
Vertriebsspezifisch
Während die meisten Linux-Distributionen eine Form von iptables enthalten, enthalten einige von ihnen auch Wrapper, die die Verwaltung ein wenig vereinfachen. Meistens haben diese „Addons“ die Form von Init-Skripten, die sich beim Start um die Initialisierung von iptables kümmern. Einige Distributionen enthalten jedoch auch vollständige Wrapper-Anwendungen, die versuchen, den allgemeinen Fall zu vereinfachen.
Gentoo
Das iptables Das Init-Skript auf Gentoo kann viele gängige Szenarien verarbeiten. Für den Anfang können Sie iptables so konfigurieren, dass es beim Start geladen wird (normalerweise das, was Sie wollen):
rc-update add iptables default
Mit dem Init-Skript können Sie die Firewall mit einem leicht zu merkenden Befehl laden und löschen:
/etc/init.d/iptables start
/etc/init.d/iptables stop
Das Init-Skript behandelt die Details zum Beibehalten Ihrer aktuellen Firewall-Konfiguration beim Starten / Stoppen. Somit befindet sich Ihre Firewall immer in dem Zustand, in dem Sie sie verlassen haben. Wenn Sie eine neue Regel manuell speichern müssen, kann das Init-Skript dies auch verarbeiten:
/etc/init.d/iptables save
Darüber hinaus können Sie Ihre Firewall auf den zuvor gespeicherten Status zurücksetzen (für den Fall, dass Sie mit Regeln experimentiert haben und jetzt die vorherige Arbeitskonfiguration wiederherstellen möchten):
/etc/init.d/iptables reload
Schließlich kann das Init-Skript iptables in einen «Panik» -Modus versetzen, in dem der gesamte eingehende und ausgehende Datenverkehr blockiert wird. Ich bin nicht sicher, warum dieser Modus nützlich ist, aber alle Linux-Firewalls scheinen ihn zu haben.
/etc/init.d/iptables panic
Warnung: Starten Sie den Panikmodus nicht, wenn Sie über SSH mit Ihrem Server verbunden sind. Du werden getrennt werden! Das einzige Mal, wenn Sie iptables in den Panikmodus versetzen sollten, ist, während Sie sind physisch vor dem Computer.