Bridging Firewall Nftables

Aus Xinux Wiki
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…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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

Links