Suricata Bridge Firewall: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 88: Zeile 88:
 
<pre>
 
<pre>
 
#!/usr/sbin/nft -f
 
#!/usr/sbin/nft -f
 +
 
define open    = enp0s8
 
define open    = enp0s8
define filter = enp0s9
+
define safe = enp0s9
 
flush ruleset
 
flush ruleset
 
table bridge filter {
 
table bridge filter {
 
         chain forward {
 
         chain forward {
 
                 type filter hook forward priority 0; policy drop;
 
                 type filter hook forward priority 0; policy drop;
                 meta iifname "enp0s8" queue num 0
+
                 meta iifname $open queue num 0
                 meta iifname "enp0s9" queue num 0
+
                 meta iifname $safe queue num 0
              }
+
                }
 +
            }
 +
 
 
</pre>
 
</pre>
  

Version vom 24. April 2025, 16:48 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

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

Vm-promisc-1.png

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/

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 safe  = enp0s9
flush ruleset
table bridge filter {
        chain forward {
                type filter hook forward priority 0; policy drop;
                meta iifname $open queue num 0
                meta iifname $safe queue num 0
                 }
             }

Starten im IPS-Modus

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