<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://xinux.net/index.php?action=history&amp;feed=atom&amp;title=Erkl%C3%A4rung_IPS_suricata.yml</id>
	<title>Erklärung IPS suricata.yml - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://xinux.net/index.php?action=history&amp;feed=atom&amp;title=Erkl%C3%A4rung_IPS_suricata.yml"/>
	<link rel="alternate" type="text/html" href="https://xinux.net/index.php?title=Erkl%C3%A4rung_IPS_suricata.yml&amp;action=history"/>
	<updated>2026-08-23T20:48:58Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://xinux.net/index.php?title=Erkl%C3%A4rung_IPS_suricata.yml&amp;diff=72439&amp;oldid=prev</id>
		<title>Thomas.will: Die Seite wurde neu angelegt: „== Suricata-Konfiguration: suricata.yaml ==  Diese Konfiguration richtet Suricata als '''IPS/IDS im NFQ-Modus''' ein, das Pakete von iptables/nftables via NFQU…“</title>
		<link rel="alternate" type="text/html" href="https://xinux.net/index.php?title=Erkl%C3%A4rung_IPS_suricata.yml&amp;diff=72439&amp;oldid=prev"/>
		<updated>2026-08-04T11:46:05Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „== Suricata-Konfiguration: suricata.yaml ==  Diese Konfiguration richtet Suricata als &amp;#039;&amp;#039;&amp;#039;IPS/IDS im NFQ-Modus&amp;#039;&amp;#039;&amp;#039; ein, das Pakete von iptables/nftables via NFQU…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Suricata-Konfiguration: suricata.yaml ==&lt;br /&gt;
&lt;br /&gt;
Diese Konfiguration richtet Suricata als '''IPS/IDS im NFQ-Modus''' ein, das Pakete von iptables/nftables via NFQUEUE übernimmt, analysiert und das Verdikt zurückgibt.&lt;br /&gt;
&lt;br /&gt;
=== Adressgruppen (vars) ===&lt;br /&gt;
&lt;br /&gt;
;Beschreibung&lt;br /&gt;
Definiert Variablen für Netzsegmente, die in Regeln (local.rules) als $HOME_NET, $DMZ usw. referenziert werden können, statt IP-Bereiche hart zu codieren.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
vars:&lt;br /&gt;
  address-groups:&lt;br /&gt;
    LAN: &amp;quot;[172.26.2XX.0/24]&amp;quot;&lt;br /&gt;
    DMZ: &amp;quot;[10.88.2XX.0/24]&amp;quot;&lt;br /&gt;
    SERVER: &amp;quot;[10.2XX.1.0/24]&amp;quot;&lt;br /&gt;
    INT: &amp;quot;[$LAN,$DMZ,$SERVER]&amp;quot;&lt;br /&gt;
    HOME_NET: &amp;quot;$INT&amp;quot;&lt;br /&gt;
    EXTERNAL_NET: &amp;quot;!$INT&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''LAN / DMZ / SERVER''' – die drei internen Segmente des Labors&lt;br /&gt;
* '''INT''' – Sammelvariable aus allen drei Segmenten&lt;br /&gt;
* '''HOME_NET''' – wird auf $INT gesetzt → alles &amp;quot;Eigene&amp;quot; gilt als vertrauenswürdig referenzierbar&lt;br /&gt;
* '''EXTERNAL_NET''' – Negation von $INT (!$INT) → alles außerhalb der eigenen Netze gilt als extern&lt;br /&gt;
&lt;br /&gt;
Diese Trennung ist entscheidend für Regeln wie alert tcp $EXTERNAL_NET any -&amp;gt; $HOME_NET any, die nur eingehenden Traffic von außen betrachten.&lt;br /&gt;
&lt;br /&gt;
=== NFQ-Modus ===&lt;br /&gt;
&lt;br /&gt;
;Beschreibung&lt;br /&gt;
Legt fest, wie Suricata mit der Linux-Netfilter-Queue interagiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
nfq:&lt;br /&gt;
  mode: repeat&lt;br /&gt;
  repeat-mark: 1&lt;br /&gt;
  repeat-mask: 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* mode: repeat – das Paket wird nach der Analyse erneut durch die Firewall-Regelkette geschickt (statt es direkt zu akzeptieren/verwerfen)&lt;br /&gt;
* repeat-mark / repeat-mask – das Paket wird mit einer Markierung (mark 1) versehen, damit iptables/nftables es beim zweiten Durchlauf erkennt und nicht erneut an die Queue schickt (Endlosschleife vermeiden)&lt;br /&gt;
&lt;br /&gt;
Das ist der klassische Suricata-Inline-IPS-Aufbau: iptables -I FORWARD -j NFQUEUE --queue-num 0 (oder äquivalent in nftables) → Suricata prüft → Paket erneut durch die Kette mit gesetztem Mark → Firewall lässt es durch oder verwirft es je nach Verdikt.&lt;br /&gt;
&lt;br /&gt;
=== Logging &amp;amp; Statistiken ===&lt;br /&gt;
&lt;br /&gt;
;Beschreibung&lt;br /&gt;
Grundlegende Log-Pfade und Intervall für interne Statistiken.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default-log-dir: /var/log/suricata/&lt;br /&gt;
&lt;br /&gt;
stats:&lt;br /&gt;
  enabled: yes&lt;br /&gt;
  interval: 8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* default-log-dir – Standardverzeichnis für alle Logdateien&lt;br /&gt;
* stats.enabled – aktiviert interne Performance-/Durchsatzstatistiken&lt;br /&gt;
* stats.interval – Statistik wird alle 8 Sekunden aktualisiert (Standard wäre meist 30s; kurzes Intervall eignet sich gut für Labor/Debugging, ist aber im Dauerbetrieb unnötig I/O-lastig)&lt;br /&gt;
&lt;br /&gt;
=== Outputs ===&lt;br /&gt;
&lt;br /&gt;
;Beschreibung&lt;br /&gt;
Definiert, welche Log-Formate Suricata schreibt und was darin enthalten ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
outputs:&lt;br /&gt;
  - fast:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
      filename: fast.log&lt;br /&gt;
      append: yes&lt;br /&gt;
  - alert-debug:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
      filename: alert-debug.log&lt;br /&gt;
      append: yes&lt;br /&gt;
  - stats:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
      filename: stats.log&lt;br /&gt;
      append: yes&lt;br /&gt;
      totals: yes&lt;br /&gt;
      threads: no&lt;br /&gt;
  - eve-log:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
      filetype: regular&lt;br /&gt;
      filename: eve.json&lt;br /&gt;
      types:&lt;br /&gt;
        - alert&lt;br /&gt;
        - drop&lt;br /&gt;
        - http&lt;br /&gt;
        - dns&lt;br /&gt;
        - tls&lt;br /&gt;
        - flow&lt;br /&gt;
        - ssh&lt;br /&gt;
        - stats&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''fast.log''' – kompaktes, menschenlesbares Ein-Zeilen-Alert-Format, gut zum schnellen Überfliegen&lt;br /&gt;
* '''alert-debug.log''' – sehr ausführliches Alert-Log mit internen Details (Paketinhalt, Signatur-Metadaten), primär für Regel-Debugging gedacht, im Produktivbetrieb meist deaktiviert wegen Größe&lt;br /&gt;
* '''stats.log''' – periodische Textstatistik (Durchsatz, Drops, Speichernutzung); totals: yes aggregiert über alle Threads, threads: no unterdrückt Pro-Thread-Aufschlüsselung&lt;br /&gt;
* '''eve.json''' – das wichtigste Output-Format: strukturiertes JSON, das von SIEM-Systemen (hier: Wazuh) eingelesen wird&lt;br /&gt;
** types – legt fest, welche Event-Typen ins eve.json geschrieben werden: alert (IDS/IPS-Treffer), drop (im Inline-Modus verworfene Pakete), sowie Protokoll-Metadaten zu http, dns, tls, flow, ssh und stats&lt;br /&gt;
&lt;br /&gt;
;Hinweis für den SOC-Kurs&lt;br /&gt;
pcap-log fehlt hier bewusst (noch) – für POCs, bei denen zu einem Alert das zugehörige Rohpaket z. B. für eine spätere NetworkMiner-Analyse extrahiert werden soll, müsste dieser Output ergänzt werden.&lt;br /&gt;
&lt;br /&gt;
=== Logging-Einstellungen (Suricata selbst) ===&lt;br /&gt;
&lt;br /&gt;
;Beschreibung&lt;br /&gt;
Nicht zu verwechseln mit outputs (Netzwerk-Events) – dieser Block steuert, wie Suricata über sich selbst (Start, Fehler, Warnungen) protokolliert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
logging:&lt;br /&gt;
  default-log-level: notice&lt;br /&gt;
  outputs:&lt;br /&gt;
  - console:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
  - file:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
      level: info&lt;br /&gt;
      filename: suricata.log&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* default-log-level: notice – Standard-Schwellwert für Log-Meldungen&lt;br /&gt;
* console – Ausgabe zusätzlich auf die Konsole/systemd-journal (nützlich bei systemctl status suricata oder journalctl -u suricata)&lt;br /&gt;
* file – separates Betriebslog (suricata.log) mit Level info, unabhängig von den eve.json-Netzwerk-Events&lt;br /&gt;
&lt;br /&gt;
=== Prozess- und Systemeinstellungen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pid-file: /var/run/suricata.pid&lt;br /&gt;
&lt;br /&gt;
coredump:&lt;br /&gt;
  max-dump: unlimited&lt;br /&gt;
&lt;br /&gt;
host-mode: auto&lt;br /&gt;
&lt;br /&gt;
unix-command:&lt;br /&gt;
  enabled: yes&lt;br /&gt;
  filename: /var/run/suricata-command.socket&lt;br /&gt;
&lt;br /&gt;
engine-analysis:&lt;br /&gt;
  rules-fast-pattern: yes&lt;br /&gt;
  rules: yes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* pid-file – Prozess-ID-Datei für Init-System/Monitoring&lt;br /&gt;
* coredump.max-dump: unlimited – bei einem Absturz wird ein vollständiger Core-Dump geschrieben (hilfreich zum Debuggen, sollte in Produktivumgebungen ggf. eingeschränkt werden)&lt;br /&gt;
* host-mode: auto – Suricata erkennt selbst, ob es als Router (Traffic für viele Hosts) oder als Sniffer für einen einzelnen Host arbeitet; beeinflusst u. a. Stream-Reassembly-Verhalten&lt;br /&gt;
* unix-command – öffnet ein Unix-Socket für die Laufzeitsteuerung via suricatasc (z. B. Regeln neu laden ohne Neustart: reload-rules)&lt;br /&gt;
* engine-analysis – erzeugt beim Start Analyse-Reports (rules-fast-pattern.txt, rules.txt) im Log-Verzeichnis, die zeigen, wie Suricata die Regeln intern optimiert hat (nützlich für Regel-Tuning)&lt;br /&gt;
&lt;br /&gt;
=== Defragmentierung ===&lt;br /&gt;
&lt;br /&gt;
;Beschreibung&lt;br /&gt;
Steuert, wie fragmentierte IP-Pakete vor der Analyse wieder zusammengesetzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
defrag:&lt;br /&gt;
  memcap: 32mb&lt;br /&gt;
  hash-size: 65536&lt;br /&gt;
  trackers: 65535&lt;br /&gt;
  max-frags: 65535&lt;br /&gt;
  prealloc: yes&lt;br /&gt;
  timeout: 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* memcap – maximaler Speicher für den Defragmentierungs-Puffer&lt;br /&gt;
* hash-size / trackers / max-frags – Größe der internen Tracking-Strukturen für gleichzeitig offene Fragment-Ketten&lt;br /&gt;
* prealloc: yes – Speicher wird beim Start reserviert statt dynamisch (bessere Performance, etwas höherer Grundverbrauch)&lt;br /&gt;
* timeout: 60 – nach 60 Sekunden ohne vollständige Reassemblierung wird die Fragmentkette verworfen&lt;br /&gt;
&lt;br /&gt;
=== Regeln ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default-rule-path: /etc/suricata/rules&lt;br /&gt;
rule-files:&lt;br /&gt;
  - local.rules&lt;br /&gt;
classification-file: /etc/suricata/classification.config&lt;br /&gt;
reference-config-file: /etc/suricata/reference.config&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* default-rule-path – Basisverzeichnis für Regeldateien&lt;br /&gt;
* rule-files – hier wird ausschließlich local.rules geladen; es sind (noch) keine Community-Regelsätze (z. B. ET Open, über suricata-update) eingebunden – im Kurs vermutlich bewusst so gehalten, um mit eigenen, nachvollziehbaren Regeln zu arbeiten&lt;br /&gt;
* classification-file – ordnet Alert-Klassen (z. B. attempted-recon) Schweregrade zu, wird u. a. für die Priorisierung in eve.json/Wazuh genutzt&lt;br /&gt;
* reference-config-file – definiert, wie externe Referenzen in Regeln (z. B. reference:cve,...) aufgelöst/verlinkt werden&lt;br /&gt;
&lt;br /&gt;
=== App-Layer-Protokolle ===&lt;br /&gt;
&lt;br /&gt;
;Beschreibung&lt;br /&gt;
Aktiviert Protokoll-Parser, die Suricata befähigen, den jeweiligen Anwendungsschicht-Traffic inhaltlich zu verstehen (nicht nur als rohe TCP/UDP-Bytes), was Voraussetzung für protokollspezifische Alerts (z. B. http.uri, tls.sni) und die entsprechenden Metadaten-Logs in eve.json ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
app-layer:&lt;br /&gt;
  protocols:&lt;br /&gt;
    http:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    tls:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    dcerpc:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    smb:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    ftp:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    ssh:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    smtp:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    dns:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    modbus:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    enip:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    dnp3:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    nfs:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    ntp:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    tftp:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    ikev2:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    krb5:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    dhcp:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    snmp:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    sip:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    rfb:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    mqtt:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    rdp:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    http2:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
    imap:&lt;br /&gt;
      enabled: yes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bemerkenswert ist, dass hier praktisch ''alle'' verfügbaren Parser aktiviert sind – inklusive Industrie-/OT-Protokolle wie modbus, enip und dnp3, die in einem klassischen DMZ/SOC-Lab eher unüblich sind. Das erhöht den CPU-Overhead geringfügig, hat aber für ein Übungs-/Kurssystem keine praktische Relevanz und deckt bewusst ein möglichst breites Analyse-Spektrum ab.&lt;br /&gt;
&lt;br /&gt;
;Kurzübersicht der Protokollgruppen&lt;br /&gt;
* '''Web/Mail''': http, http2, tls, smtp, imap&lt;br /&gt;
* '''Windows/Fileservices''': dcerpc, smb, rdp&lt;br /&gt;
* '''Klassische Dienste''': ftp, ssh, dns, ntp, tftp, dhcp, snmp, nfs&lt;br /&gt;
* '''VPN/Auth''': ikev2, krb5&lt;br /&gt;
* '''IoT/Sonstiges''': mqtt, rfb (VNC), sip&lt;br /&gt;
* '''OT/Industrie (ICS/SCADA)''': modbus, enip, dnp3&lt;/div&gt;</summary>
		<author><name>Thomas.will</name></author>
	</entry>
</feed>