iptables Firewall Grundlagen – Linux Firewall manuell konfigurieren | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

303 Dokumentationen verfügbar

Wissensdatenbank

Iptables Firewall Grundlagen Tutorial

Zuletzt aktualisiert: 05.04.2026 um 19:42 Uhr

iptables Firewall Grundlagen – Linux Firewall manuell konfigurieren

Die iptables-Firewall ist ein leistungsstarkes Netzwerk-Filterwerkzeug unter Linux, das auf Kernel-Ebene arbeitet und es Ihnen ermöglicht, ein- und ausgehende Netzwerkverkehr zu kontrollieren. Dieses Tutorial führt Sie durch alle wichtigen Konzepte und praktische Konfigurationen.

Was ist iptables?

iptables ist ein Befehlszeilenwerkzeug zum Konfigurieren von IP-Paketfiltern im Linux-Kernel. Es arbeitet mit dem netfilter-Modul zusammen und ermöglicht es Ihnen, Regeln für eingehende, ausgehende und weiterleitete Pakete zu definieren. iptables ist seit Jahrzehnten der Standard für Firewallkonfiguration auf Linux-Systemen.

iptables vs nftables vs UFW

Im Linux-Ökosystem existieren mehrere Firewall-Lösungen mit unterschiedlichen Komplexitätsgraden:

Merkmal iptables nftables UFW
Komplexität Mittel Höher Niedrig
Syntax Mehrere Befehle für verschiedene Operationen Einheitliche Syntax, tabellenbasiert Sehr einfach und benutzerfreundlich
Performance Gut Besser (Kernel-Architektur optimiert) Gut (baut auf iptables auf)
Lernkurve Steil Steiler Flach
Einsatzbereich Fortgeschrittene Szenarien Moderne Systeme (Fedora 18+) Desktop und einfache Server
💡 Tipp: Viele moderne Linux-Distributionen migrieren zu nftables, aber iptables bleibt aufgrund seiner weitverbreiteten Nutzung und Kompatibilität relevant.

iptables Grundkonzepte

Tabellen in iptables

iptables organisiert Regeln in Tabellen, von denen jede einen anderen Aspekt der Paketverarbeitung behandelt:

  • filter-Tabelle – Die wichtigste Tabelle für die meisten Firewallaufgaben. Sie filtert Pakete basierend auf den definierten Regeln und entscheidet, welche Pakete akzeptiert oder abgelehnt werden.
  • nat-Tabelle – Network Address Translation. Sie wird verwendet, um Quell- und Zieladressen von Paketen zu modifizieren, besonders nützlich für Masquerading und Port-Weiterleitung.
  • mangle-Tabelle – Ermöglicht die Modifizierung verschiedener Paketattribute wie TTL (Time to Live) und ToS (Type of Service).
  • raw-Tabelle – Ermöglicht spezielle Verarbeitung vor der Verbindungsverfolgung (Conntrack).
  • security-Tabelle – Für SELinux und ähnliche Mandatory Access Control Systeme.

Chains in iptables

Innerhalb jeder Tabelle existieren sogenannte Chains, die Sequenzen von Regeln darstellen:

  • INPUT – Regeln für eingehende Pakete, die für das lokale System bestimmt sind.
  • OUTPUT – Regeln für ausgehende Pakete, die vom lokalen System versendet werden.
  • FORWARD – Regeln für Pakete, die durch das System weitergeleitet werden (relevant für Router).
  • PREROUTING – Nur in nat und mangle Tabellen. Verarbeitet Pakete bevor Routingentscheidungen getroffen werden.
  • POSTROUTING – Nur in nat und mangle Tabellen. Verarbeitet Pakete nachdem Routingentscheidungen getroffen wurden.

Policies und Target-Aktionen

Policies definieren das Standardverhalten für jeden Chain, wenn kein Regel zutrifft:

  • ACCEPT – Das Paket wird akzeptiert und verarbeitet
  • DROP – Das Paket wird stumm verworfen (keine Antwort)
  • REJECT – Das Paket wird abgelehnt und der Absender erhält eine Rückmeldung
  • RETURN – Verarbeitung des Chains stoppen und zum Parent Chain zurückkehren

Grundlegende iptables-Befehle

Regeln auflisten

Das Auflisten bestehender Regeln ist essentiell zum Verstehen der aktuellen Firewallkonfiguration:

iptables -L
iptables -L -v
iptables -L -v -n
iptables -L -v -n --line-numbers

Die wichtigsten Optionen:

  • -L – Listet alle Regeln auf
  • -v – Verbose Ausgabe (Paketstatistiken, Bytes)
  • -n – Numerische Ausgabe (keine DNS-Auflösungen)
  • --line-numbers – Nummeriert die Regeln zur Referenzierung

Regeln löschen und zurücksetzen

iptables -F
iptables -F INPUT
iptables -X
iptables -F -t nat

Erklärung:

  • -F – Löscht (flush) alle Regeln aus einem Chain oder der gesamten Tabelle
  • -X – Löscht alle benutzerdefinierten Chains
  • -t – Gibt die zu bearbeitende Tabelle an
⚠️ Wichtig: Seien Sie vorsichtig beim Löschen von Regeln, besonders wenn Sie remote über SSH arbeiten. Sie könnten sich selbst aussperren!

Policies setzen

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

Dies setzt die Standardrichtlinie für jeden Chain. Im obigen Beispiel werden alle eingehenden und weiterleiteten Pakete standardmäßig verworfen, während ausgehende Pakete akzeptiert werden.

Regeln hinzufügen und entfernen

Regeln hinzufügen

Der allgemeine Syntax zum Hinzufügen von Regeln:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP

Parameter erklären:

  • -A – Regel am Ende des Chains anhängen (append)
  • -I – Regel am Anfang des Chains einfügen (insert)
  • -p – Protokoll (tcp, udp, icmp, all)
  • --dport – Zielport
  • --sport – Quellport
  • -j – Jump/Target (ACCEPT, DROP, REJECT)
  • -i – Eingangsschnittstelle (eth0, wlan0)
  • -o – Ausgangsschnittstelle

IPs blockieren

iptables -A INPUT -s 192.168.1.100 -j DROP
iptables -A INPUT -s 10.0.0.0/8 -j DROP

Mit -s können Sie Quelladressen oder Subnetzblöcke blockieren.

Regeln mit Statusverfolgung (stateful)

Stateful Filtering ist essentiell für einen funktionsfähigen Server:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP

Dies akzeptiert alle Pakete, die zu etablierten oder verknüpften Verbindungen gehören, was den Datenverkehr von auslaufenden Verbindungen ermöglicht.

Rate Limiting

iptables -A INPUT -p tcp --dport 22 -m limit --limit 5/min --limit-burst 10 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

Dies beschränkt SSH-Verbindungen auf maximal 5 pro Minute mit einer Burst von 10, was Brute-Force-Angriffe erschwert.

NAT und Masquerading

Masquerading für Router

Wenn Ihr Linux-System als Router fungiert, müssen Sie Masquerading aktivieren:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

Dies ermöglicht es dem System, Pakete von einem privaten Netzwerk ins Internet weiterzuleiten und dabei die Quelladresse zu maskieren.

Port-Weiterleitung

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80
iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT

Dies leitet eingehende Verbindungen auf Port 8080 an einen internen Server auf Port 80 weiter.

Regeln speichern und wiederherstellen

Regeln speichern

Ohne Persistierung gehen Ihre Regeln beim Neustart verloren:

iptables-save > /etc/iptables/rules.v4
iptables-save > /tmp/firewall-backup.txt

Regeln bei Systemstart wiederherstellen

Auf Debian/Ubuntu Systemen:

apt install iptables-persistent
iptables-restore < /etc/iptables/rules.v4

Nach der Installation fragt das System, ob es die aktuellen Regeln speichern soll. Sie können diese auch manuell später speichern:

netfilter-persistent save

Praktische Serverfirewall-Konfiguration

Hier ist eine vollständige Beispielkonfiguration für einen Web- und SSH-Server:

#!/bin/bash
# Standardrichtlinien setzen
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Loopback Interface zulassen
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Stateful Filtering
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP

# ICMP (Ping) zulassen
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# SSH mit Rate Limiting
iptables -A INPUT -p tcp --dport 22 -m limit --limit 5/min --limit-burst 10 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

# HTTP und HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Alle anderen Pakete ablehnen
iptables -A INPUT -j DROP

# Regeln speichern
iptables-save > /etc/iptables/rules.v4
✅ Gut zu wissen: Dieser Konfigurationsschritte sollten immer lokal auf der Konsole oder über eine Out-of-Band-Verwaltung durchgeführt werden, da Sie sich sonst selbst über SSH aussperren können.

Häufige iptables-Szenarien

Spezifisches Subnetz blockieren

iptables -A INPUT -s 203.0.113.0/24 -j DROP

Ein Port-Range öffnen

iptables -A INPUT -p tcp --dport 6000:6100 -j ACCEPT

Regeln mit Reihenfolge verwalten

iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
iptables -D INPUT 3
iptables -R INPUT 2 -p tcp --dport 2222 -j ACCEPT

Erklärung:

  • -I – Insert (an Positionnummer einfügen)
  • -D – Delete (Regel nach Position löschen)
  • -R – Replace (Regel ersetzen)

Fehlerbehandlung und Debugging

Aktuelle Regeln mit Statistiken anzeigen

iptables -L -v -n --line-numbers
iptables -L -v -n -t nat

Kernelmodule überprüfen

lsmod | grep ip_tables
modprobe ip_tables

iptables-Status prüfen

systemctl status iptables
systemctl status netfilter-persistent

Migration zu nftables

Moderne Systeme können die Kompatibilität mit iptables nutzen, während sie nftables unterstützen:

update-alternatives --install /etc/alternatives/iptables iptables /usr/sbin/iptables-nft 100

Zusammenfassung

iptables bleibt ein unverzichtbares Werkzeug für Linux-Systemadministratoren. Mit den Konzepten von Tabellen, Chains und Regeln können Sie granulare Kontrolle über Netzwerkverkehr ausüben. Die Kombination von stateful Filtering, Rate Limiting und gezielten Regeln schafft eine robuste Firewall für Ihre Infrastruktur.

Weiterführende Ressourcen

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120