Übersicht
iptables implementiert die Sicherheitspolitik eines Systems, indem es Regeln für ein- und ausgehende Netzwerkpakete definiert. Jede Regel gibt eine Aktion (Target) wie ACCEPT (zulassen), DROP (ignorieren) oder REJECT (ablehnen) für Pakete an, die bestimmten Bedingungen entsprechen. Hauptsächlich werden die Chains INPUT, OUTPUT und FORWARD verwendet, und für NAT-Funktionen werden auch die Chains PREROUTING und POSTROUTING genutzt.
Hauptfunktionen
- Paketfilterung (Firewall)
- Network Address Translation (NAT)
- Portweiterleitung und -umleitung
- Steuerung des Datenverkehrs basierend auf spezifischen IP-Adressen, Ports und Protokollen
Wichtige Optionen
Der Befehl iptables wird mit verschiedenen Optionen verwendet, um spezifische Regeln hinzuzufügen, zu löschen, zu ändern oder um die aktuellen Regeln abzufragen.
Regelverwaltung
Abgleichbedingungen
Targets (Aktionen)
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`iptables` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
Beispiele für die Konfiguration gängiger Firewall-Regeln mit iptables. Es wird empfohlen, die aktuellen Regeln immer zu sichern, bevor Sie neue Regeln hinzufügen.
Alle aktuellen Regeln anzeigen
sudo iptables -L -v -n
Zeigt Regeln mit detaillierten Informationen und numerischen IP-Adressen an.
SSH (Port 22) zulassen
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Erlaubt eingehende SSH-Verbindungen von außen.
Bestimmte IP-Adresse blockieren
sudo iptables -A INPUT -s 192.168.1.100 -j DROP
Blockiert den gesamten eingehenden Datenverkehr von einer bestimmten IP-Adresse (z. B. 192.168.1.100).
Allen ausgehenden Datenverkehr zulassen
sudo iptables -P OUTPUT ACCEPT
Legt die Standardrichtlinie der OUTPUT-Kette so fest, dass der gesamte ausgehende Datenverkehr des Systems erlaubt wird.
Portweiterleitung für Webserver (80 -> 8080)
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Leitet eingehende Anfragen an Port 80 auf den lokalen Port 8080 um. (Verwendet die NAT-Tabelle)
Masquerading für interne Netzwerke (NAT)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Ändert die Quell-IP für den Datenverkehr aus dem internen Netzwerk, wenn er über die externe Schnittstelle (z. B. eth0) ausgeht. (Verwendet die NAT-Tabelle)
Installation
iptables ist auf den meisten Linux-Distributionen standardmäßig installiert. Wenn es nicht installiert ist, können Sie es mit den folgenden Befehlen installieren.
Debian/Ubuntu
sudo apt update
sudo apt install iptables
CentOS/RHEL/Fedora
sudo dnf install iptables
Tipps & Hinweise
iptables-Regeln können nach einem Systemneustart verloren gehen. Daher ist es wichtig zu wissen, wie Regeln dauerhaft gespeichert werden. Achten Sie auch auf die Reihenfolge der Regeln und die Standardrichtlinien.
Regeln dauerhaft speichern
iptables-Regeln sind standardmäßig flüchtig und müssen gespeichert werden, damit sie nach einem Neustart erhalten bleiben. Die empfohlene Methode variiert je nach Distribution.
- **Debian/Ubuntu**: Installieren Sie `sudo apt install iptables-persistent` und speichern Sie die Regeln mit dem Befehl `sudo netfilter-persistent save`. Die Regeln werden in `/etc/iptables/rules.v4` und `/etc/iptables/rules.v6` gespeichert.
- **CentOS/RHEL/Fedora**: Installieren Sie `sudo dnf install iptables-services`, aktivieren Sie den Dienst mit `sudo systemctl enable iptables && sudo systemctl start iptables` und speichern Sie die Regeln mit dem Befehl `sudo iptables-save > /etc/sysconfig/iptables`.
- **Allgemeine Methode**: Speichern Sie die Regeln mit `sudo iptables-save > /pfad/zu/rules.v4` in einer Datei und erstellen Sie ein Skript, das diese Datei beim Booten mit `sudo iptables-restore < /pfad/zu/rules.v4` lädt.
Wichtigkeit der Regelreihenfolge
iptables-Regeln werden in einer Kette von oben nach unten sequenziell angewendet. Wenn ein Paket mit einer bestimmten Regel übereinstimmt, wird die Aktion dieser Regel ausgeführt und nachfolgende Regeln werden nicht mehr geprüft. Daher ist es wichtig, spezifischere Regeln (z. B. Blockieren einer bestimmten IP) über allgemeinere Regeln (z. B. Zulassen von HTTP) zu platzieren.
Vorsicht bei der Festlegung der Standardrichtlinie
Seien Sie sehr vorsichtig, wenn Sie die Standardrichtlinie einer Kette festlegen (z. B. `iptables -P INPUT DROP`). Bevor Sie die Standardrichtlinie auf DROP ändern, müssen Sie zuerst Zulassungsregeln für wesentliche Dienste wie SSH-Verbindungen hinzufügen. Andernfalls können alle Netzwerkverbindungen zum System blockiert werden, was den Zugriff unmöglich macht.
Umstellung auf nftables
Neuere Linux-Distributionen verwenden oft `nftables` als primäres Firewall-Framework anstelle von iptables. `nftables` integriert die Funktionen von iptables und bietet eine verbesserte Syntax. Der Befehl `iptables` kann intern als Kompatibilitätsschicht fungieren, die `nftables` verwendet. Daher ist es ratsam, das Standard-Firewall-Tool Ihres Systems zu überprüfen.