iptables-Builder

Linux iptables Firewall-Regel-Builder & Shell-Skript-Generator

Erstellen Sie iptables-Regeln für INPUT/FORWARD/OUTPUT-Chains, Stateful Inspection, SYN-Flood-Schutz, NAT-Portweiterleitung und Shell-Skript-Export.

Firewall-Vorlagen
Firewall-Regel hinzufügen
Konfigurierte Regeln (5)Kontrollkästchen zum Aktivieren/Deaktivieren umschalten
#1INPUTTCP :22
ACCEPT
#2INPUTTCP :80
ACCEPT
#3INPUTTCP :443
ACCEPT
#4INPUTTCP :9100 from 10.0.0.0/16
ACCEPT
#5INPUTALL
LOG
#!/usr/bin/env bash
# ==============================================================================
# Linux iptables Firewall Configuration Script
# Generated by ToolsAA iptables Rule Generator (https://toolsaa.com)
# 100% Client-Side Netfilter Firewall Builder
# ==============================================================================
set -euo pipefail

# Verify root privileges
if [[ $EUID -ne 0 ]]; then
   echo "Error: This script must be executed as root (e.g. sudo bash $0)" >&2
   exit 1
fi

# Find iptables binaries
IPTABLES="$(command -v iptables || echo '/sbin/iptables')"
SYSCTL="$(command -v sysctl || echo '/sbin/sysctl')"

echo "==> Applying Linux iptables firewall rules..."

# ------------------------------------------------------------------------------
# 1. Kernel Parameter Hardening & Anti-Spoofing (sysctl)
# ------------------------------------------------------------------------------
$SYSCTL -w net.ipv4.tcp_syncookies=1 >/dev/null
$SYSCTL -w net.ipv4.conf.all.rp_filter=1 >/dev/null
$SYSCTL -w net.ipv4.conf.default.rp_filter=1 >/dev/null
$SYSCTL -w net.ipv4.conf.all.accept_source_route=0 >/dev/null
$SYSCTL -w net.ipv4.conf.all.accept_redirects=0 >/dev/null
$SYSCTL -w net.ipv4.icmp_echo_ignore_broadcasts=1 >/dev/null
$SYSCTL -w net.ipv4.icmp_ignore_bogus_error_responses=1 >/dev/null

# ------------------------------------------------------------------------------
# 2. Flush Existing Rules & Reset Counters
# ------------------------------------------------------------------------------
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -t nat -F || true
$IPTABLES -t nat -X || true
$IPTABLES -t mangle -F || true
$IPTABLES -t mangle -X || true
$IPTABLES -t raw -F || true
$IPTABLES -t raw -X || true

# ------------------------------------------------------------------------------
# 3. Set Default Chain Policies
# ------------------------------------------------------------------------------
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

# ------------------------------------------------------------------------------
# 4. Core Defensive Rules: Loopback, Conntrack & Invalid Drops
# ------------------------------------------------------------------------------
# Allow unlimited loopback traffic (localhost)
$IPTABLES -A INPUT -i lo -j ACCEPT -m comment --comment "Allow all loopback inbound"
$IPTABLES -A OUTPUT -o lo -j ACCEPT -m comment --comment "Allow all loopback outbound"
# Drop packets in INVALID connection state immediately
$IPTABLES -A INPUT -m conntrack --ctstate INVALID -j DROP -m comment --comment "Drop invalid packets"
# Stateful connection tracking: Allow established and related traffic
$IPTABLES -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Stateful allow established/related"
$IPTABLES -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Stateful allow established/related"

# ------------------------------------------------------------------------------
# 5. Anti-DDoS: TCP SYN Flood Protection Chain
# ------------------------------------------------------------------------------
$IPTABLES -N SYN_FLOOD || true
$IPTABLES -A INPUT -p tcp --syn -j SYN_FLOOD
$IPTABLES -A SYN_FLOOD -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPTABLES -A SYN_FLOOD -j DROP -m comment --comment "Drop excess SYN flood packets"

# ------------------------------------------------------------------------------
# 6. Port Scan & Malicious Flag Mitigation
# ------------------------------------------------------------------------------
# Drop NULL packets (no flags set)
$IPTABLES -A INPUT -p tcp --tcp-flags ALL NONE -j DROP -m comment --comment "Drop NULL scan packets"
# Drop XMAS packets (FIN, PSH, URG flags)
$IPTABLES -A INPUT -p tcp --tcp-flags ALL ALL -j DROP -m comment --comment "Drop XMAS scan packets"
$IPTABLES -A INPUT -p tcp --tcp-flags ALL FIN,PSH,URG -j DROP -m comment --comment "Drop XMAS variants"
# Drop SYN-FIN scans
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP -m comment --comment "Drop SYN-FIN packets"
# Drop SYN-RST scans
$IPTABLES -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP -m comment --comment "Drop SYN-RST packets"

# ------------------------------------------------------------------------------
# 7. ICMP / Ping Echo-Request Control
# ------------------------------------------------------------------------------
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 2 -j ACCEPT -m comment --comment "Rate-limited ICMP ping"
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j DROP -m comment --comment "Drop excess ICMP pings"

# ------------------------------------------------------------------------------
# 8. SSH Anti-Bruteforce Rate Limiter (iptables recent module)
# ------------------------------------------------------------------------------
$IPTABLES -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --set --name SSH_ATTEMPTS
$IPTABLES -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 4 -j DROP -m comment --comment "Drop SSH bruteforce flood"

# ------------------------------------------------------------------------------
# 9. User-Configured Filter Chain Rules
# ------------------------------------------------------------------------------
# Rule 1: SSH administration (protected by recent anti-bruteforce)
$IPTABLES -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT -m comment --comment "SSH administration (protected by recent anti-bruteforce)"
# Rule 2: Standard HTTP Web traffic
$IPTABLES -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT -m comment --comment "Standard HTTP Web traffic"
# Rule 3: Encrypted HTTPS / TLS Web traffic
$IPTABLES -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT -m comment --comment "Encrypted HTTPS / TLS Web traffic"
# Rule 4: Prometheus node exporter restricted to private VPC
$IPTABLES -A INPUT -i eth0 -p tcp -s 10.0.0.0/16 --dport 9100 -j ACCEPT -m comment --comment "Prometheus node exporter restricted to private VPC"
# Rule 5: Log dropped unsolicited incoming packets
$IPTABLES -A INPUT -m limit --limit 5/min -j LOG --log-prefix "[IPT-DROP-WEB]: " --log-level 4 -m comment --comment "Log dropped unsolicited incoming packets"

echo "==> Linux iptables firewall rules successfully applied!"
echo "==> Active rules summary:"
$IPTABLES -L -v -n --line-numbers | head -n 35
Aktive Filterregeln
5 Regeln · 0 NAT-Ports
NAT-Direktiven
SYN Flood · Anti-SSH
Härtungs-Direktiven
Bash .sh · rules.v4 · systemd

100% Client-seitiger Privater Generator

Keine Server-Uploads oder Telemetrie. Ihre Server-IPs, Subnetze, internen Ports und Netzwerktopologien werden ausschließlich im lokalen Browserspeicher verarbeitet.

Stateful Inspection & DDoS-Härtung

Zustandsbehaftete Paketfilterung (conntrack), SYN-Flood-Schutz mit Ratenbegrenzung, Verwerfen ungültiger Pakete, Loopback-Freigaben und Spoofing-Schutz (rp_filter).

Produktions-Shell-Skript & Systemd-Export

Exportieren Sie produktionsreife Bash-Skripte mit sicherem Rollback-Timer, iptables-save-Kompatibilität und Befehlen zur dauerhaften systemd-Einrichtung.

Technische Referenz & Architektur-Leitfaden

Linux iptables Firewall-Regel-Builder & Shell-Skript-Generator — Referenz-Leitfaden

Erstellen Sie iptables-Regeln für INPUT/FORWARD/OUTPUT-Chains, Stateful Inspection, SYN-Flood-Schutz, NAT-Portweiterleitung und Shell-Skript-Export.

Wichtige Parameter & Steuerelemente

Chain & Standard-PolicyString (Enum)

Ziel-Netfilter-Chain (INPUT, FORWARD, OUTPUT) kombiniert mit der standardmäßigen Basis-Sicherheitsrichtlinie (-P DROP, ACCEPT, REJECT).

Standard: INPUT DROP
Protokoll & Match-ModuleString

Transportprotokoll (-p tcp, udp, icmp, all) in Verbindung mit Kernel-Match-Erweiterungen (-m conntrack, -m multiport, -m limit).

Standard: tcp -m conntrack
Quell- / Ziel-FilterIPv4/CIDR / Port-Liste

Quell- (-s) oder Ziel- (-d) IP-Adressbereiche sowie Quell- und Zielports (--sport, --dport, --dports).

Standard: -s 0.0.0.0/0 --dport 22,80,443
Verbindungsstatus (ctstate)String-Liste

Zustandsbehaftete Verbindungszustände (NEW, ESTABLISHED, RELATED, INVALID, UNTRACKED) für bidirektionale Filterlogik.

Standard: ESTABLISHED,RELATED
Sprungziel-Aktion (Target)String (Enum)

Auszuführende Aktion bei Regelübereinstimmung (-j ACCEPT, DROP, REJECT, LOG, MASQUERADE, DNAT, SNAT, REDIRECT).

Standard: ACCEPT

Profi-Tipps & Best Practices

Zustandsbehaftete Conntrack-Optimierung

Platzieren Sie 'iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT' immer ganz oben in Ihrem Regelsatz. Dies umgeht die Regelauswertung für bestehende Verbindungen und minimiert die CPU-Latenz bei hoher Netzlast.

Anti-Lockout-Sicherheitsprotokoll

Bevor Sie auf Remote-Servern die INPUT-Standardrichtlinie auf DROP setzen, starten Sie in einer zweiten Shell einen Notfall-Timer: 'sleep 300 && iptables -P INPUT ACCEPT && iptables -F'. Alternativ verwenden Sie 'iptables-apply' für automatisches Rollback bei Verbindungsverlust.

SYN-Flood-Ratenbegrenzung

Schützen Sie Ihre Server vor volumetrischen TCP-SYN-Floods durch Ratenbegrenzung unvollständiger Handshakes: 'iptables -A INPUT -p tcp --syn -m limit --limit 25/s --limit-burst 100 -j ACCEPT' gefolgt von einer DROP-Regel.

Loopback-Interface & ICMP-Diagnose

Verwerfen Sie niemals Loopback-Verkehr ('-i lo -j ACCEPT'), da lokale Systemdienste (IPC, MySQL, Redis) auf localhost angewiesen sind. Erlauben Sie kontrollierte ICMP-Echo-Requests ('-p icmp --icmp-type echo-request -m limit --limit 5/s -j ACCEPT') für Netzwerkdiagnosen.

Häufige Fallstricke & Fehlerbehebung

SSH-Verbindung bricht sofort nach Anwendung der Firewall-Regeln ab

Die Standard-INPUT-Policy wurde auf DROP gesetzt, bevor Port 22 oder ESTABLISHED-Verbindungen freigegeben wurden. Stellen Sie den Zugriff über die Out-of-Band-Konsole (IPMI/VNC) wieder her, setzen Sie 'iptables -P INPUT ACCEPT' und stellen Sie sicher, dass 'iptables -A INPUT -p tcp --dport 22 -j ACCEPT' vor dem Richtlinienwechsel ausgeführt wird.

Kernel-Fehlermeldung: 'nf_conntrack: table full, dropping packet'

Die Verbindungstracking-Tabelle ist durch massiven Datenverkehr vollgelaufen. Erhöhen Sie das Limit via sysctl ('sysctl -w net.netfilter.nf_conntrack_max=262144'), verkürzen Sie Timeouts ('net.netfilter.nf_conntrack_tcp_timeout_established=600') oder deaktivieren Sie das Tracking für Hochdurchsatz-Ports mit '-t raw -A PREROUTING -p tcp --dport 80 -j NOTRACK'.

Docker überschreibt oder ignoriert benutzerdefinierte FORWARD- und NAT-Regeln

Docker greift direkt auf iptables zu und erstellt eigene Chains (DOCKER, DOCKER-USER). Fügen Sie benutzerdefinierte Filterregeln in die 'DOCKER-USER'-Chain ein statt in die standardmäßige FORWARD-Chain, damit Daemon-Neustarts Ihre Regeln nicht überschreiben.

Häufig gestellte Fragen (FAQ)

Was ist der fundamentale Unterschied zwischen iptables, nftables und UFW/firewalld?▼

iptables steuert Netfilter-Hooks im Linux-Kernel über statische Tabellen (filter, nat, mangle). nftables ist der moderne Nachfolger mit Bytecode-Engine und atomaren Transaktionen. UFW und firewalld sind übergeordnete Steuerungsdienste, die im Hintergrund dynamisch iptables- oder nftables-Regelsätze generieren.

Warum ist DROP auf externen Schnittstellen meist besser als REJECT?▼

DROP verwirft eingehende Pakete stillschweigend ohne Antwort. Angreifer und Portscanner laufen in Timeouts und können nicht feststellen, ob der Host existiert. REJECT hingegen sendet TCP RST- oder ICMP port-unreachable-Pakete zurück, was die Existenz des Hosts bestätigt und Egress-Bandbreite verbraucht.

Wie unterscheiden sich NAT PREROUTING und POSTROUTING bei der Portweiterleitung?▼

PREROUTING greift vor der Routing-Entscheidung und ändert Zieladressen (-j DNAT --to-destination IP:Port), um eingehenden Verkehr an interne Server weiterzuleiten. POSTROUTING greift nach dem Routing und ändert Quelladressen (-j MASQUERADE oder -j SNAT), damit interne private Netze über eine öffentliche IP ins Internet kommunizieren können.

Wie werden iptables-Regeln nach einem Server-Neustart persistent geladen?▼

iptables-Regeln existieren nur im flüchtigen Kernelspeicher. Unter Debian/Ubuntu installieren Sie 'iptables-persistent' und speichern mit 'netfilter-persistent save'. Unter RHEL/AlmaLinux installieren Sie 'iptables-services', führen 'iptables-save > /etc/sysconfig/iptables' aus und aktivieren den systemd-Dienst.

Wie kann man Paket-Zähler und Trefferquoten für aktive Regeln in Echtzeit überwachen?▼

Führen Sie 'iptables -nvL --line-numbers' aus, um Zeilennummern, Trefferzahlen und kumulierte Bytes pro Regel einzusehen. Für eine kontinuierliche Live-Anzeige bei Stresstests nutzen Sie 'watch -n 1 iptables -nvL INPUT'.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →