Praktischer nftables-Leitfaden: Netzwerksicherheit auf Debian
nftables auf Debian bietet robuste Traffic-Filterung für Server oder Workstations. Ziel? Unerwünschte eingehende Verbindungen blockieren und ausgehenden Traffic kontrollieren. Vorgehen: Bedrohungen modellieren, Zugriffssteuerungen definieren und Filterregeln erstellen.
Legen Sie mit einer Debian-11.4-Netinstall-VM-Vorlage los: Minimalaufbau ohne Ballast, dann SSH, Midnight Commander und conntrack via apt install mc ssh conntrack hinzufügen. Nutzen Sie eine Virtualisierungsplattform mit Netzwerkkontrolle wie QEMU-KVM oder VirtualBox.
Bedrohungsmodellierung und Abwehrstrategien
Identifizieren Sie Ihre Top-Bedrohungen:
- T1: Dienst-Exploits — eingehenden Traffic nach Ports/IPs blockieren.
- T2: DoS-Angriffe — Pakete rate-limitieren, Loopback-Quellen (127.0.0.0/8 außer von lo) droppen.
- T3: Brute-Force-Angriffe — fehlgeschlagene Logins tracken und IPs sperren.
- T4: Bösartige ausgehende Verbindungen — nach IPs, Ports, Protokollen filtern.
- T5: Unerlaubte Ports — neue eingehende Verbindungen verbieten.
Zugriffssteuerungsschemata, von basisch bis gehärtet:
- Minimal (Workstations): Alle eingehenden blockieren außer established; alle ausgehenden erlauben.
- Standard (Server): SSH (22), HTTP/HTTPS (80/443), ICMP erlauben; conntrack begrenzen.
- Gehärtet: IP-Whitelists, Rate-Limits auf Ports, Blacklists für DoS.
Einrichtung gehärteter Server-Schutz
Lab-Aufbau: Debian-Server im 192.168.1.0/24-Netz, eth0-Schnittstelle.
Mission: nftables mit gehärteter Sicherheit deployen.
Vorbereitungsschritte:
apt update && apt install nftables
systemctl enable nftables
Regeln in /etc/nftables.conf:
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0; policy drop; }
nft add chain inet filter output { type filter hook output priority 0; policy accept; }
nft add chain inet filter forward { type filter hook forward priority 0; policy drop; }
# Established/related
nft add rule inet filter input ct state established,related accept
# Loopback
nft add rule inet filter input iifname "lo" accept
# ICMP
nft add rule inet filter input ip protocol icmp icmp type { echo-request, echo-reply } accept
# SSH Rate-Limit
nft add rule inet filter input tcp dport 22 ct state new limit rate 5/minute accept
nft add rule inet filter input tcp dport 22 ct state new drop
# Loopback-Quellen droppen
nft add rule inet filter input ip saddr 127.0.0.0/8 iifname != "lo" drop
nft add rule inet filter input ct state invalid drop
nft add rule inet filter input accept
Anwenden mit: nft -f /etc/nftables.conf. Überprüfen: nft list ruleset, conntrack -L.
Firewall testen
Lab: Client (192.168.1.10), Server (192.168.1.20).
Mission: Ports prüfen, DoS-Resistenz, ausgehende Flows testen.
Schritte:
nmap -p 22,80,443 192.168.1.20— nur SSH offen.hping3 --flood -S 192.168.1.20 -p 22— Rate-Limit greift.tcpdump -i eth0um Drops zu beobachten.
Netzwerksegmentierung mit Routing
IP-Forwarding aktivieren: sysctl net.ipv4.ip_forward=1.
Lab: Router (eth0: LAN1 192.168.10.0/24, eth1: LAN2 192.168.20.0/24).
Mission: Benutzer- und Serverbereiche isolieren.
Regeln:
nft add table inet filter
nft add chain inet filter forward { type filter hook forward priority 0; policy drop; }
# Benutzer zu Server: nur wichtige Ports
nft add rule inet filter forward iifname "eth0" oifname "eth1" tcp dport {22,80,443} ct state new accept
nft add rule inet filter forward iifname "eth0" oifname "eth1" ct state established,related accept
# Rückweg
nft add rule inet filter forward iifname "eth1" oifname "eth0" ct state established,related accept
# Server zu Internet
nft add rule inet filter forward iifname "eth1" oifname "eth2" accept
Layer-2-Segmentierung (Switch-Firewall)
Keine IP-Subnets nötig: VLANs oder MAC-basierte Filterung nutzen.
Bridge-Regeln:
nft add table bridge filter
nft add chain bridge filter forward { type filter hook forward priority 0; }
# Zwischen MAC-Gruppen blockieren
nft add rule bridge filter forward ether saddr 00:11:22:33:44:00 ether daddr 00:55:66:77:88:99 drop
OneButtonFirewall: Schneller Segment-Schutz
Projekt für schnelle Einführung: Skript generiert Regeln aus Vorlagen.
Lab: OBF-Gerät zwischen Segmenten.
Funktionsweise: Skript parst Konfig (JSON/YAML), wendet nftables an.
Vorteile: Null-Konfig, Auto-Updates. Nachteile: Weniger flexibel.
Anwendungsfälle: Home-Offices, kleine Unternehmen ohne Security-Experten.
Wichtige Erkenntnisse:
- Bedrohungen immer zuerst modellieren.
- Standardmäßig Drop-Policy mit expliziten Accepts.
- Rate-Limits und conntrack testen.
- Sicherheit mit Benutzerfreundlichkeit balancieren.
- nftables-Logs überwachen (
nft log rule).
— Editorial Team
Noch keine Kommentare.