Suricata Bridge Firewall

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Vorab

Bei Virtualisierungen Bridge Ports auf Promisc setzen

Vm-promisc-1.png


Installation der Bridgeutils

  • apt install bridge-utils

/etc/network/interfaces

auto lo
iface lo inet loopback

auto enp0s3
iface enp0s3 inet static
 address 10.88.113.69/24
 gateway 10.88.113.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

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.

Arp

  • arp ist im Gegensatz zur Layer 3 Firewall nicht automatisch freigeschaltet

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.
  • Sie müssen nur auf den Verbindungsstatusinformationen aus Ihrer Regelmenge übereinstimmen, um dies zu aktivieren.

Beispiel: Zustandsabhängige Bridge-Firewall

  • Wir erstellen einen bridgefilter
  • Wir erstellen die Policy drop
  • Connection Tracking wie üblich
  • arp ist generell erlaubt


nftables schnellstart

Bridge Firewall

Regeln

  • cat /etc/nftables.conf
#!/usr/sbin/nft -f
define open    = enp0s8
define filter  = enp0s9
flush ruleset
table bridge filter {
        chain forward {
                type filter hook forward priority 0; policy drop;
                ct state established,related accept
                # Arp freischalten
	        iif $open ether type arp accept
                iif $filter ether type arp accept
                ####icmp von filter nach open freischalten 
                #iif $filter oif $open ip protocol icmp ct state new accept
                ####dns von filter nach open freischalten 
                #iif $filter oif $open udp dport 53 ct state new accept
                ####http von filter nach open freischalten 
                #iif $filter oif $open tcp dport 80 ct state new accept
                ####https von filter nach open freischalten 
                #iif $filter oif $open tcp dport 443 ct state new accept
                ####alles von open nach filter freischalten 
                #iif $open oif $filter ct state new accept
                #### Loggen von abgelehnten Paketen
                log prefix " nft-drop"
        }
}

Regel Handling

Laden der Regeln
  • nft -f /etc/nftables.conf
Kontrolle der Regeln
  • nft list ruleset
Löschender Regeln
  • nft flush ruleset

Live Log der Regel Verstösse

  • journalctl -f -t kernel -g "nft-drop"