Suricata Bridge Firewall: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 4: | Zeile 4: | ||
*Pakete, die durch eine Linux-Bridge laufen, werden aktiv durch Suricata geprüft | *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 | *Suricata läuft im IPS-Modus über NFQUEUE und kann Pakete verwerfen | ||
| + | =Schaubild= | ||
| + | {{#drawio:suricata-bridge}} | ||
=Vorbereitung= | =Vorbereitung= | ||
Version vom 25. April 2025, 06:32 Uhr
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
Schaubild
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 suricata
/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/
unix-command:
enabled: yes
filename: /var/run/suricata-command.socket
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
- eve-log:
enabled: yes
filetype: regular
filename: eve.json
types:
- alert
- http
- dns
- tls
- flow
- ssh
- stats
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
app-layer:
protocols:
http:
enabled: yes
tls:
enabled: yes
dcerpc:
enabled: yes
smb:
enabled: yes
ftp:
enabled: yes
ssh:
enabled: yes
smtp:
enabled: yes
dns:
enabled: yes
modbus:
enabled: yes
enip:
enabled: yes
dnp3:
enabled: yes
nfs:
enabled: yes
ntp:
enabled: yes
tftp:
enabled: yes
ikev2:
enabled: yes
krb5:
enabled: yes
dhcp:
enabled: yes
snmp:
enabled: yes
sip:
enabled: yes
rfb:
enabled: yes
mqtt:
enabled: yes
rdp:
enabled: yes
http2:
enabled: yes
imap:
enabled: yes
Regeln zur Weiterleitung an Suricata
- cat /etc/nftables.conf
#!/usr/sbin/nft -f
define open = enp0s8
define safe = enp0s9
flush ruleset
table bridge filter {
chain forward {
type filter hook forward priority 0; policy accept;
meta iifname $open queue num 0
meta iifname $safe queue num 0
}
}
Beispielregeln
- vim /etc/suricata/rules/local.rules
drop icmp $HOME_NET any -> 1.1.1.1 any (msg:"ICMP von intern nach 1.1.1.1 geblockt"; sid:10001;) 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;) alert tcp any any -> any 80 (msg:"HTTP Traffic erkannt"; sid:10002;)
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
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

