Filter ·
NAT ·
Chains ·
Regeln ·
Zustände ·
Targets
iptables ist der Standard-Firewall-Framework unter Linux. Mit diesen Befehlen können Sie Paketfilter, NAT und Netzwerksicherheit konfigurieren.
Tabellen organisieren Firewall-Regeln nach Funktion. Chains sind die Regelketten innerhalb der Tabellen, die Pakete durchlaufen.
| Chain | Tabelle | Beschreibung |
|---|---|---|
| INPUT | filter | Pakete, die an das System selbst gerichtet sind |
| OUTPUT | filter | Pakete, die vom System ausgehen |
| FORWARD | filter | Pakete, die durch das System geroutet werden |
| PREROUTING | nat | Pakete vor dem Routing (DNAT) |
| POSTROUTING | nat | Pakete nach dem Routing (SNAT, MASQUERADE) |
| OUTPUT | nat | Lokale Pakete für NAT |
iptables -L -v -n zeigt Paket- und Byte-Zähler für jede Regel – nützlich, um zu sehen, welche Regeln aktiv genutzt werden.
Regeln definieren, was mit Paketen geschieht. Sie bestehen aus Matches (Bedingungen) und Targets (Aktionen).
| Option | Beschreibung | Beispiel |
|---|---|---|
| -A <chain> | Regel am Ende hinzufügen (Append) | -A INPUT -j DROP |
| -I <chain> [nr] | Regel am Anfang (oder an Position) einfügen | -I INPUT 1 -j DROP |
| -D <chain> | Regel löschen (durch Spezifikation oder Nr.) | -D INPUT 3 |
| -P <chain> | Default-Policy setzen | -P INPUT DROP |
| -F <chain> | Alle Regeln aus Chain löschen (Flush) | -F INPUT |
| -Z <chain> | Zähler zurücksetzen (Zero) | -Z INPUT |
iptables -F löscht alle Regeln! Wenn Sie sich über SSH verbinden, könnte die Verbindung abbrechen. Setzen Sie zuerst die Default-Policy auf ACCEPT oder planen Sie eine andere Rettungsmethode.
Matches definieren, auf welche Pakete eine Regel zutrifft – Protokoll, Quell-/Zieladresse, Ports, Zustand und mehr.
| Match | Beschreibung | Beispiel |
|---|---|---|
| -p tcp/udp/icmp | Protokoll | -p tcp |
| -s <ip> | Quell-IP-Adresse | -s 192.168.1.10 |
| -d <ip> | Ziel-IP-Adresse | -d 10.0.0.5 |
| --sport <port> | Quell-Port | --sport 1024:65535 |
| --dport <port> | Ziel-Port | --dport 80 |
| -m state | Zustandsbasiertes Filter (NEW, ESTABLISHED, RELATED) | -m state --state ESTABLISHED,RELATED |
| -m multiport | Mehrere Ports | -m multiport --dports 80,443,8080 |
| -m limit | Ratenbegrenzung | -m limit --limit 5/min --limit-burst 10 |
| -m mac | MAC-Adresse | -m mac --mac-source 00:11:22:33:44:55 |
| -m comment | Kommentar | -m comment --comment "SSH allow" |
Targets legen fest, was mit einem Paket geschieht, das alle Match-Bedingungen erfüllt – von Annehmen über Verwerfen bis zu Logging.
| Target | Beschreibung | Verwendung |
|---|---|---|
| ACCEPT | Paket annehmen | Erlaubte Verbindungen |
| DROP | Paket verwerfen (keine Antwort) | Blockierte Verbindungen (stiller) |
| REJECT | Paket verwerfen mit Fehlermeldung | Blockierte Verbindungen (sichtbar) |
| LOG | Paket ins Syslog schreiben | Debugging / Überwachung |
| DNAT | Zieladresse ändern (Destination NAT) | Port-Forwarding |
| SNAT | Quelladresse ändern (Source NAT) | Internet-Zugang für lokale Netzwerke |
| MASQUERADE | SNAT mit dynamischer IP | Bei DHCP / PPPoE |
/var/log/syslog oder /var/log/kern.log.
NAT (Network Address Translation) ermöglicht Port-Forwarding, Internetzugang für interne Netze und die Umleitung von Traffic.
/proc/sys/net/ipv4/ip_forward). Vergessen Sie nicht, die FORWARD-Chain zu konfigurieren – sie ist standardmäßig auf DROP gesetzt.
Persistenz sorgt dafür, dass iptables-Regeln nach einem Neustart erhalten bleiben. iptables-save und iptables-restore sind die Werkzeuge dafür.
| Distribution | Methode | Befehl |
|---|---|---|
| Debian / Ubuntu | iptables-persistent | netfilter-persistent save |
| RHEL / CentOS 7+ | firewalld (empfohlen) | firewall-cmd --permanent |
| RHEL / CentOS 6 | iptables-service | service iptables save |
| Arch Linux | iptables.service | systemctl enable iptables |
| Generisch | Manuelle Methode | iptables-save > /etc/iptables/rules.v4 |
iptables -L -v -n. Bei Ubuntu/Debian installieren Sie iptables-persistent für die automatische Persistenz (sudo apt install iptables-persistent).
filter
INPUT
-A
--dport
ACCEPT
DNAT
save
iptables -A INPUT -p tcp --dport 22 -j ACCEPT ·
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80