Nftables und layer2 Firewall

Aus Xinux Wiki
Version vom 1. März 2024, 14:40 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=Bridge-Filterung= =Arten von Bridge-Ketten= *Die Bridge-Familie bietet vier Kettenarten: ;prerouting: *Hier können Pakete vor der Forward-Datenbank (FDB) En…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Bridge-Filterung

Arten von Bridge-Ketten

  • Die Bridge-Familie bietet vier Kettenarten:
prerouting
  • Hier können Pakete vor der Forward-Datenbank (FDB) Entscheidung gefiltert werden.
  • Die FDB liefert den Bridge-Port, der für eine bestimmte Ziel-MAC-Adresse verwendet wird.
  • Wenn es noch keinen Eintrag in der FDB für eine gegebene Ziel-MAC gibt, werden die Pakete an alle Bridge-Ports geflutet.
  • Nach der FDB-Entscheidung können Pakete entweder dem Eingangs- oder dem Weiterleitweg folgen.
input
  • Hier können Pakete gefiltert werden, die an den IP-Stack übergeben werden.
  • Wenn Ihre Bridge-Schnittstelle eine IP-Adresse hat und Pakete an diese IP-Adresse gehen (oder diese IP-Adresse als Gateway verwendet wird), folgen die Pakete diesem Pfad (in diesem Fall verlassen die Pakete die Bridge, um in den IP-Stack einzutreten, also werden die Pakete "geroutet").
forward
  • Diese Hook kann verwendet werden, um Pakete zu filtern, die von einem Bridge-Port eingehen und an einen anderen Bridge-Port geliefert werden (dies ist der Bridge-Weiterleitungspfad, in diesem Fall werden die Pakete "gebridged").
output
  • Hier können Pakete gefiltert werden, die vom IP-Stack kommen und deren Ziel der Bridge-Port ist.
postrouting
  • Hier können Pakete gefiltert werden, die entweder vom IP-Stack kommen oder von einem anderen Bridge-Port weitergeleitet werden.

Zustandslose Filterung

Wenn Sie den TCP-Zielport in IPv4-Paketen filtern möchten:

  • nft add rule bridge filter forward ether type ip tcp dport 22 accept

Ein weiteres Beispiel zum Akzeptieren von ARP-Paketen

  • nft add rule bridge filter forward ether type arp accept

Zustandsabhängige Filterung

  • Die Bridge-Familie unterstützt die Verbindungsverfolgung seit Linux-Kernel 5.3.
  • Sie müssen nur auf den Verbindungsstatusinformationen aus Ihrer Regelmenge übereinstimmen, um dies zu aktivieren.
  • Für diejenigen, die mit iptables vertraut sind: Dies bietet einen Ersatz für br_netfilter und das -m physdev-Match für iptables.

Beispiel: Zustandsabhängige Bridge-Firewall

  • Das folgende Beispiel zeigt, wie eine zustandsabhängige Bridge-Firewall bereitgestellt wird.
  • Dies setzt voraus, dass die Bridge-Schnittstelle keine IP-Adresse hat.

Angenommen, eine Bridge mit zwei Ports, eth0 und eth1

  • Ein Desktop-Computer ist mit dem Bridge-Port eth0 verbunden.
  • Ein Webserver (mit SSH für die Remote-Verwaltung) ist mit dem Bridge-Port eth1 verbunden.
  • Die Uplink-Verbindung erfolgt über den Bridge-Port eth2.
  • Die folgende Richtlinie ermöglicht es dem Desktop-Computer und dem Webserver, eine Verbindung zu initiieren. Von außen:
  • Es kann keine Verbindung zum Desktop-Computer initiiert werden.
  • Verbindungen zu den HTTP- und SSH-Diensten zum Server sind erlaubt.
  • Von innen in die Bridge können der Desktop-Computer und der Webserver überall Verbindungen initiieren:

Regeln

  • nft add table bridge filter
  • nft add chain bridge filter forward '{type filter hook forward priority 0; }'
  • nft add rule bridge filter forward ct state established,related accept
  • nft add rule bridge filter forward iif { eth0, eth1 } oif eth2 ct state new accept
  • nft add rule bridge filter forward iif eth2 oif eth1 ct state new tcp dport { 22, 80, 443 } accept