iptables-Konfiguration & Sicherheit
Diese Anleitung zeigt, wie Sie mit iptables eine Default-Deny-Firewall auf Ihrem Linux-Server einrichten: Eingehender Verkehr wird blockiert, sofern er nicht explizit erlaubt ist. Sie behandelt Basisregeln, Ports für Dienste, Flood-Schutz, Protokollierung und das dauerhafte Speichern der Regeln.
Reihenfolge ist kritisch! Wenn Sie die DROP-Policy setzen, bevor SSH erlaubt ist, sperren Sie sich sofort aus (Lockout). Testen Sie Regeln stets sorgfältig, halten Sie eine zweite SSH-Sitzung offen und nutzen Sie im Notfall den Rescue-Modus im PowerPanel.
1. Basisregeln in der richtigen Reihenfolge
Konfigurieren Sie zunächst alle notwendigen Zugriffe, bevor die globale Blockierungsregel angewandt wird.
Schritt 1: Regeln löschen
Beginnen Sie mit einer sauberen Konfiguration, indem Sie alle bestehenden iptables-Regeln löschen:
Schritt 2: Loopback-Verkehr zulassen
Erlauben Sie den gesamten internen Verkehr über das Loopback-Interface. Dies ist für lokale Dienste unerlässlich:
Schritt 3: Etablierten Verkehr erlauben
Erlauben Sie Pakete, die zu einer bereits hergestellten Verbindung gehören — notwendig, damit Antworten auf ausgehende Anfragen (z. B. DNS, Updates) den Server erreichen:
Schritt 4: SSH-Zugriff erlauben
Erlauben Sie SSH bevor Sie die DROP-Policy setzen — sonst sperren Sie sich sofort aus:
Schritt 5: Standardrichtlinie auf DROP setzen
Erst jetzt, nach allen Erlaubnisregeln, setzen Sie die globale Blockierungsregel. Alle eingehenden Pakete, die keine vorherige Regel akzeptiert hat, werden verworfen. Ausgehender Verkehr bleibt erlaubt, damit der Server weiterhin DNS-Namen auflösen und Updates installieren kann:
2. Ports für Dienste öffnen
Fügen Sie Regeln für alle Dienste hinzu, die von außen erreichbar sein müssen. Für bessere Wartbarkeit empfiehlt sich die Nutzung einer benutzerdefinierten Chain:
Benutzerdefinierte Chain für Dienste
Um die INPUT-Kette übersichtlich zu halten, erstellen Sie eine eigene Chain für offene Ports:
HTTP & HTTPS (Webserver)
Datenbanken auf bestimmte IPs beschränken
Kritische Ports wie Datenbankports sollten nur für bekannte IP-Adressen geöffnet werden:
ICMP (Ping) erlauben
Optional — erlaubt eingehende und ausgehende Ping-Anfragen zur Erreichbarkeitsprüfung:
3. Schutzmechanismen & Protokollierung
Ergänzen Sie einen Basisschutz gegen Floods und die Protokollierung verworfener Pakete:
SYN-Flood-Schutz (Rate-Limit)
Begrenzt neue Verbindungen pro Quell-IP, um einfache Flood-Angriffe auf einen Port abzuwehren. Die Regeln werden oben in die INPUT-Chain eingefügt (-I), damit sie vor der allgemeinen Freigabe für Port 80 greifen:
Ungültige Pakete verwerfen (Anti-Scan)
Blockiert Pakete, die typischerweise für Port-Scans und spezielle Angriffe verwendet werden. Auch diese Regeln werden oben in die INPUT-Chain eingefügt:
Protokollierung verworfener Pakete
Hängen Sie diese Regeln ans Ende der INPUT-Chain an, damit sie direkt vor der finalen DROP-Policy greifen — mit Rate-Limit, um Log-Flooding zu verhindern:
4. Regeln speichern & prüfen
iptables-Regeln sind temporär und gehen nach einem Neustart verloren. Sie müssen persistent gespeichert werden.
Aktuelle Regeln prüfen
Persistent speichern — Debian / Ubuntu
Installieren Sie iptables-persistent — es lädt die Regeln automatisch bei jedem Neustart:
Persistent speichern — AlmaLinux / Rocky Linux
Alternative nftables: Auf aktuellen Distributionen wie Debian 13, Ubuntu 24.04, AlmaLinux und Rocky Linux hat nftables iptables als Standard abgelöst. Für neue Server empfehlen wir nftables — es ist performanter, übersichtlicher und wird aktiv weiterentwickelt. Zur nftables-Anleitung →
Weiterführende Dokumentation
Für eine vollständige Referenz aller iptables-Optionen empfehlen wir die offizielle Dokumentation.