Suricata Bridge Firewall: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 6: | Zeile 6: | ||
=Cloned die Maschine aus der Vorlage= | =Cloned die Maschine aus der Vorlage= | ||
| − | * | + | *bridge-firewall |
| + | |||
=Vorgaben= | =Vorgaben= | ||
{| class="wikitable" | {| class="wikitable" | ||
Version vom 2. Juli 2025, 13:45 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
Cloned die Maschine aus der Vorlage
- bridge-firewall
Vorgaben
| Einstellung | Wert |
|---|---|
| Name | bridge-firewall.it2xx.int |
| IP-Adresse | 172.17.2xx.21/24 |
| Gateway | 172.17.2xx.1 |
| Nameserver | 10.88.2xx.21 |
| Search-Domain | it2xx.int |
| Benutzername | kit |
| Benutzerpasswort | kit |
| Administrator | root |
| Administratorpasswort | radler |
| Netz | LAN |
Weiteres
- In den Nameserver eintragen
- Firewall anpassen so das ihr von eurem Host mit ssh draufkommt.
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 static
address 172.17.2xx.21/24
gateway 172.17.2xx.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
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


