Suricata Bridge Firewall
Version vom 24. April 2025, 16:44 Uhr von Thomas.will (Diskussion | Beiträge) (→Installation der Bridgeutils)
Suricata als IPS auf einer Bridge
- Ziel
- Pakete, die durch eine Linux-Bridge laufen, werden aktiv durch Suricata geprüft
- Suricata läuft im IPS-Modus über NFQUEUE und kann Pakete verwerfen
Vorbereitung
- Suricata muss im NFQUEUE-Modus laufen
- af-packet Abschnitt in der YAML entfernen oder auskommentieren
- nfq-Modus konfigurieren
Vorab
- Bei Virtualisierungen Bridge Ports auf Promisc setzen
Installation der Bridgeutils
- apt install bridge-utils suricataa
/etc/network/interfaces
auto lo
iface lo inet loopback
auto enp0s3
iface enp0s3 inet dhcp
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
Suricata Bridge Firewall
Konfiguration Suricata
- vim /etc/suricata/suricata.yaml
%YAML 1.1
---
vars:
address-groups:
LAN: "[172.17.113.0/24]"
DMZ: "[10.88.113.0/24]"
SERVER: "[172.16.113.0/24]"
INT: "[$LAN,$DMZ,$SERVER]"
HOME_NET: "$INT"
EXTERNAL_NET: "!$INT"
default-log-dir: /var/log/suricata/
nfq:
mode: repeat
repeat-mark: 1
repeat-mask: 1
outputs:
- fast:
enabled: yes
filename: fast.log
append: yes
- alert-debug:
enabled: yes
filename: alert-debug.log
append: yes
pid-file: /var/run/suricata.pid
default-rule-path: /etc/suricata/rules
rule-files:
- local.rules
classification-file: /etc/suricata/classification.config
reference-config-file: /etc/suricata/reference.config
Regeln zur Weiterleitung an Suricata
- 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;
meta iifname "enp0s8" queue num 0
meta iifname "enp0s9" queue num 0
}
Starten im IPS-Modus
- suricata -D -q 0 -c /etc/suricata/suricata.yaml
- oder dauerhaft mit eigener systemd-Datei:
- siehe Suricata als IPS mit systemd starten
Beispielregeln
- vim /etc/suricata/rules/local.rules
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"ICMP von extern geblockt"; sid:10001;) alert tcp any any -> any 80 (msg:"HTTP Traffic erkannt"; sid:10002;)
Log-Analyse
- tail -f /var/log/suricata/fast.log
Hinweise
- Pakete werden wirklich blockiert – nicht nur geloggt
- Testen mit Ping oder einfachem Curl
- Performance beachten – NFQUEUE braucht CPU

