🔥 GRUNDLAGEN: IPTABLES & NETFILTER
Was ist iptables?
- Linux-Tool zur Konfiguration von netfilter (seit Kernel 2.4)
- Nachfolger von
ipchains, ipfadm
- Zentrale Aufgabe: Regeln zur Filterung und Manipulation von IP-Paketen definieren
- Besteht aus:
- Tabellen (z. B.
filter, nat, mangle)
- Ketten (z. B.
INPUT, OUTPUT, FORWARD)
- Regeln
📊 TABELLEN & KETTEN
| Tabelle |
Zweck |
Enthält Ketten |
filter |
Paketfilterung (Standard) |
INPUT, OUTPUT, FORWARD |
nat |
IP/Port-Umschreibung (SNAT/DNAT) |
PREROUTING, POSTROUTING, OUTPUT |
mangle |
Modifikation von Header-Daten (QoS, TTL, etc.) |
alle Ketten |
🔄 KETTEN (CHAINS)
| Chain |
Beschreibung |
INPUT |
Eingehende Pakete für lokalen Rechner |
OUTPUT |
Vom lokalen Rechner ausgehende Pakete |
FORWARD |
Weitergeleitete Pakete (Routerbetrieb) |
PREROUTING |
Vor Routingentscheidung (z. B. DNAT) |
POSTROUTING |
Nach Routingentscheidung (z. B. SNAT) |
- Ketten enthalten Regeln, die in Reihenfolge geprüft werden
- Jede Kette besitzt eine Standardregel (Policy) (z. B.
DROP, ACCEPT)
🧾 BEFEHLE (AUSZUG)
| Befehl |
Beschreibung |
-F |
Alle Regeln in Kette löschen |
-X |
Benutzerdefinierte Kette löschen |
-P |
Policy (Standardverhalten) setzen |
-A |
Regel anhängen |
-I |
Regel an Position einfügen |
-D |
Regel löschen |
-L |
Regeln anzeigen |
-N |
Neue benutzerdefinierte Kette erstellen |
-Z |
Zähler zurücksetzen |
🧠 WICHTIGE PARAMETER
| Parameter |
Beschreibung |
Beispiel |
-p |
Protokoll (tcp, udp, icmp) |
-p tcp |
-s |
Quelladresse |
-s 192.168.0.0/24 |
-d |
Zieladresse |
-d 10.0.0.1 |
-i |
Eingangsinterface |
-i eth0 |
-o |
Ausgangsinterface |
-o ppp0 |
--dport |
Zielport |
--dport 22 |
-j |
Zielaktion (ACCEPT, DROP, LOG, REJECT, etc.) |
-j DROP |
🧪 BEISPIELE
⚙️ BENUTZERDEFINIERTE KETTEN
Beispiel: Logging + Blocken
🧰 KOMPLETTES FIREWALL-SKRIPT (MINIMALE VARIANTE)
✅ BEST PRACTICE
- Besser: „Blockiere alles, erlaube nur was nötig ist“ (Default: DROP)
- Verwende
--state ESTABLISHED, RELATED, um gültige Verbindungen zu erlauben
- Speichere Regeln in Skripten (z. B.
/etc/network/firewall) und rufe sie über /etc/rc.local auf