Bridging Firewall Nftables
Version vom 20. Juni 2025, 05:17 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=Was ist nftables für Bridges?= *nftables ist der moderne Ersatz für iptables, ip6tables, arptables und ebtables. *Für Ethernet-Filterung (Layer 2) auf Brid…“)
Was ist nftables für Bridges?
- nftables ist der moderne Ersatz für iptables, ip6tables, arptables und ebtables.
- Für Ethernet-Filterung (Layer 2) auf Bridges kann nftables direkt mit dem Hook „bridge“ verwendet werden.
- Damit können MAC-Adressen, ARP, VLAN und IP-Pakete auf Bridge-Ebene gefiltert werden.
- Vorteile: einheitliche Syntax, atomare Regeländerung, besseres Logging, kein Chaos mehr mit 4 Tools.
- Bridge-Interfaces müssen in VirtualBox weiterhin auf „promiscuous mode“ stehen, damit alle Pakete verarbeitet werden können.
Installation
- apt install nftables bridge-utils
/etc/network/interfaces
auto lo
iface lo inet loopback
auto enp0s3
iface enp0s3 inet static
address 10.0.10.11/24
gateway 10.0.10.1
auto enp0s8
iface enp0s8 inet manual
auto enp0s9
iface enp0s9 inet manual
auto vmbr0
iface vmbr0 inet manual
bridge_ports enp0s8 enp0s9
bridge_fd 5
bridge_stp no
- ifup vmbr0
Konzept Schaubild
- hook bridge wird für Pakete verwendet, die durch eine Linux-Bridge laufen.
- Prio -200 ist der empfohlene Punkt, an dem man filtert (siehe nftables bridge-Hook).
- Filter sind möglich für:
- Ether-Typ (IPv4, ARP, VLAN, 802.1Q etc.)
- MAC-Quell- und Zieladresse
- IP-Adresse, Protokoll, Ports (wenn Ether-Typ IPv4 erkannt wird)
Skript mit nftables Regeln
- cd /etc/nftables/
- vi bridge-firewall.nft
#!/usr/sbin/nft -f
flush ruleset
table bridge filter {
chain forward {
type filter hook forward priority -200; policy accept;
# Logging aller weitergeleiteten Pakete
log prefix "BRIDGEFW: " level info
# Beispiel: MAC-Adresse blockieren
# ether saddr 08:00:27:75:ba:ec drop
# Beispiel: Antispoofing – IP darf nur von bestimmter MAC kommen
# ether saddr != 00:11:22:33:44:55 ip saddr 172.16.1.4 drop
# IPv4-Verkehr nur von einer MAC erlauben
# ether saddr 00:11:22:33:44:55 ether type ip accept
# drop # alles andere
# IPv4 erlauben
ether type ip accept
# ARP erlauben
ether type arp accept
# Alles andere droppen?
# drop
}
}
- chmod +x bridge-firewall.nft
Test der Regeln
- nft -f /etc/nftables/bridge-firewall.nft
- nft list ruleset
Dauerhafte Aktivierung
- vi /etc/nftables.conf
include "/etc/nftables/bridge-firewall.nft"
- systemctl enable nftables
- systemctl start nftables
Hinweise zu nftables im Bridging
- Bridge-Filtering funktioniert nur, wenn das Paket nicht schon im Kernel weiterverarbeitet wurde – promisc-Modus wichtig!
- Pakete, die an den Host selbst gehen, werden zusätzlich über den "inet"-Hook verarbeitet – dieser kann kombiniert werden.
Beispiel: Block MAC-Adresse auf Bridge
ether saddr 08:00:27:75:ba:ec drop