nftables + Docker: Saubere Regeln ohne “iptables Chaos”

Die Integration von Docker in Linux-Umgebungen bringt oft Herausforderungen im Bereich Firewall-Management mit sich. Klassischerweise werden Docker-Netzwerke über iptables verwaltet, was auf Hosts mit komplexen Regeln schnell zu einem schwer durchschaubaren “iptables-Chaos” führen kann. Moderne Linux-Distributionen unterstützen nftables als leistungsfähige und flexible Alternative. In diesem Artikel erläutern wir, wie man Docker sauber mit nftables betreibt, Konflikte vermeidet und wartbare Regeln erstellt.

1. Grundlagen von nftables

nftables ersetzt die bisherigen iptables-Familien (IPv4, IPv6, ARP) durch eine einheitliche Syntax und ein konsistentes Regelwerk. Es bietet:

  • Zentrale Verwaltung aller Netzwerkfilterregeln
  • Unterstützung für Sets, Maps und dynamische Regeln
  • Bessere Performance durch atomare Updates

Beispiel: Einfaches Filter-Table Setup

sudo nft add table inet filter
sudo nft add chain inet filter input { type filter hook input priority 0 ; }
sudo nft add chain inet filter forward { type filter hook forward priority 0 ; }
sudo nft add chain inet filter output { type filter hook output priority 0 ; }

2. Docker und Firewall-Integration

Docker erstellt automatisch iptables-Regeln für NAT, Port-Forwarding und Container-Isolation. Bei der Nutzung von nftables ist es wichtig, dass Docker die iptables-Kompatibilität deaktiviert, um Konflikte zu vermeiden.

Docker Daemon für nftables konfigurieren

In der Docker-Daemon-Konfiguration /etc/docker/daemon.json kann man die Integration folgendermaßen deaktivieren:

{
  "iptables": false
}

Nach einem Neustart von Docker übernimmt der Administrator die Verantwortung, dass NAT und Filterung korrekt eingerichtet werden.

3. NAT für Container

Damit Container auf das externe Netzwerk zugreifen können, ist NAT notwendig. Mit nftables lässt sich dies sauber konfigurieren.

Beispiel NAT-Regel

sudo nft add table ip nat
sudo nft add chain ip nat postrouting { type nat hook postrouting priority 100 ; }
sudo nft add rule ip nat postrouting oifname "eth0" ip saddr 172.18.0.0/16 masquerade

Diese Regel sorgt dafür, dass Container des Subnetzes 172.18.0.0/16 ins externe Netzwerk gelangen können.

4. Filterung und Port-Publishing

Ports sollten nur gezielt veröffentlicht werden, um Angriffsflächen zu minimieren. Mit nftables können gezielte ACCEPT- und DROP-Regeln definiert werden.

Beispiel Port erlauben

sudo nft add rule inet filter input tcp dport 8080 accept
sudo nft add rule inet filter input tcp dport 22 accept
sudo nft add rule inet filter input drop

Unnötige Ports werden automatisch blockiert, während essentielle Services erreichbar bleiben.

5. Container-Isolation verbessern

Zusätzlich zum NAT und Filter kann man interne Container-Kommunikation über eigene Bridge-Netzwerke steuern:

docker network create --driver bridge internal-net
docker run -d --name db --network internal-net mysql:latest
docker run -d --name app --network internal-net myapp:latest

Die Container sind isoliert, externe Zugriffe erfolgen nur über definierte Ports.

6. Logging und Monitoring

Mit nftables lassen sich Logs für verdächtigen Traffic einfach aktivieren:

sudo nft add rule inet filter input tcp dport 3306 log prefix "MYSQL ATTEMPT: " counter drop

Dies hilft beim Monitoring und der schnellen Identifikation unerwünschter Zugriffe.

7. Best Practices

  • Docker iptables deaktivieren bei Nutzung von nftables
  • NAT explizit definieren, um Container-Internetzugang sicherzustellen
  • Interne Netzwerke nutzen, externe Ports nur gezielt öffnen
  • Reverse Proxy oder Load Balancer für externe Services einsetzen
  • Regelmäßiges Auditing der nftables-Regeln durchführen
  • Logs aktivieren für Monitoring und Incident Response

Fazit

Die Kombination aus Docker und nftables ermöglicht eine saubere, transparente und wartbare Firewall-Architektur. Durch die bewusste Konfiguration von NAT, Filterregeln und internen Netzwerken wird die Exposition minimiert und die Sicherheit der Container-Hosts erhöht. Damit wird das klassische “iptables-Chaos” vermieden und gleichzeitig eine moderne, skalierbare Netzwerksicherheit umgesetzt.

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles