Suricata IDS/IPS auf Ubuntu einrichten – Anleitung | Enjyn Gruppe
Hallo Welt
Hallo Welt
Original Lingva Deutsch
Übersetzung wird vorbereitet...
Dieser Vorgang kann bis zu 60 Sekunden dauern.
Diese Seite wird erstmalig übersetzt und dann für alle Besucher gespeichert.
0%
DE Zurück zu Deutsch
Übersetzung durch Lingva Translate

303 Dokumentationen verfügbar

Wissensdatenbank

Suricata IDS IPS Einrichten Anleitung

Zuletzt aktualisiert: 05.04.2026 um 19:42 Uhr

Suricata IDS/IPS auf Ubuntu einrichten – Anleitung

Suricata ist ein modernes, hochperformantes Open-Source IDS/IPS-System. Es analysiert Netzverkehr in Echtzeit, erkennt verdächtige Aktivitäten und kann Angriffe blockieren. Diese Anleitung zeigt die komplette Installation auf Ubuntu/Debian.

IDS vs IPS – Der Unterschied

Aspekt IDS (Intrusion Detection System) IPS (Intrusion Prevention System)
Funktion Erkennt nur verdächtige Aktivitäten Erkennt UND blockiert Angriffe
Modus Monitoring/Logging (passiv) Aktiv blockierend
Performance-Impact Niedrig (passiv) Höher (aktives Blockieren)
False Positives Weniger kritisch (nur Alerts) Kritisch (könnte legitimen Traffic blockieren)
Einsatz Netzwerk-Monitoring, Logging Proaktive Verteidigung, Firewall-Ergänzung
💡 Tipp: Suricata kann in beiden Modi (IDS und IPS) betrieben werden. Beginnen Sie mit IDS-Modus zum Lernen, dann zu IPS bei genügend Vertrauen in die Regeln.

Schritt 1: Installation auf Ubuntu 22.04/Debian

System-Voraussetzungen:

  • Ubuntu 22.04 LTS oder Debian 11+
  • Mindestens 2 CPU Kerne
  • Mindestens 2GB RAM (4GB+ empfohlen)
  • Root oder sudo-Berechtigung

Installation:

#!/bin/bash
# Suricata Installation auf Ubuntu 22.04

# 1. Paketquellen aktualisieren
sudo apt-get update
sudo apt-get upgrade -y

# 2. Abhängigkeiten installieren
sudo apt-get install -y build-essential pkg-config git \
  libpcre3 libpcre3-dev libnet1-dev \
  libnetfilter-queue-dev libnetfilter-queue1 \
  libnfnetlink-dev libluajit-5.1-dev libhtp-dev

# 3. Suricata vom Official Ubuntu Repository installieren
sudo apt-get install -y suricata suricata-update

# 4. Installation überprüfen
suricata --version
sudo suricata --version

Schritt 2: Netzwerk-Interface konfigurieren

Das Monitoring-Interface bestimmen:

#!/bin/bash
# Verfügbare Netzwerk-Interfaces anschauen
ip link show

# Beispiel Output zeigt: eth0 (unser Monitoring-Interface)
# Interface in Promiscuous Mode setzen (um ALLE Pakete zu sehen)
sudo ip link set eth0 promisc on

# Status überprüfen
ip link show eth0 | grep PROMISC

Schritt 3: Suricata Haupt-Konfiguration

Hauptkonfiguration editieren:

sudo nano /etc/suricata/suricata.yaml

# Wichtige Konfigurationsabschnitte:

# 1. HOME_NET definieren (interne Netzwerke)
HOME_NET: "[192.168.0.0/16,10.0.0.0/8]"

# 2. EXTERNAL_NET definieren (alles andere)
EXTERNAL_NET: "!$HOME_NET"

# 3. Listening Interface
af-packet:
  - interface: eth0
    cluster-id: 99
    cluster-type: cluster_flow
    defrag: yes

# 4. Output Konfiguration
outputs:
  - eve-log:
      enabled: yes
      filename: eve.json
      types:
        - alert
        - http
        - dns
        - tls
        - files
        - filedata

Schritt 4: Rulesets herunterladen und aktualisieren

ET Open Rules (kostenlos von Proofpoint):

#!/bin/bash
# Regeln aktualisieren

# 1. Suricata-Update Tool verwenden
sudo suricata-update update-sources

# 2. ET Open Rules hinzufügen
sudo suricata-update enable-source et/open

# 3. Rules herunterladen und installieren
sudo suricata-update

# 4. Status überprüfen
sudo suricata-update list-enabled-sources

# 5. Regeln in Standard-Verzeichnis
ls -la /var/lib/suricata/rules/

# 6. Konfigurationen prüfen
sudo suricata -c /etc/suricata/suricata.yaml -T

# Output sollte "Configuration provided was successful" zeigen

Schritt 5: Basis-Rule-Syntax verstehen

Suricata Rules Aufbau:

action protocol source_ip source_port direction dest_ip dest_port (content: "pattern"; sid: 1000001;)

# Beispiel: HTTP GET Request
alert http any any -> any 80 (msg:"HTTP GET detected"; content:"GET"; http_method; flow:established,to_server; classtype:webapplication-activity; sid:1000001;)

# Beispiel: Port Scanning Detection
alert tcp any any -> $HOME_NET any (msg:"Port Scan Detected"; flags:S,12; threshold:type both,track by_src,count 10,seconds 60; classtype:network-scan; sid:1000002;)

# Beispiel: Shellcode Pattern
alert tcp any any -> any any (msg:"Possible Shellcode"; content:"|90 90 90|"; classtype:suspicious-shellcode; sid:1000003;)

# Wichtige Modifier:
# - content: Suchtext oder Byte-Pattern
# - msg: Beschreibung des Alerts
# - sid: Eindeutige Regel-ID (muss > 1000000 sein)
# - rev: Revision Number
# - classtype: Klassifikation (suspicious-activity, attempted-admin, etc.)
# - priority: 1 (höchst) bis 4 (niedrig)
# - flow: Datenfluss-Richtung und Status
# - threshold: Häufigkeit/Rate der Alerts

Schritt 6: IPS-Modus mit NFQueue aktivieren

IPS-Betrieb ermöglicht aktives Blockieren von Angriffen. Dies erfordert NFQueue (Netfilter Queue):

#!/bin/bash
# NFQueue Installation und Konfiguration

# 1. NFQueue Tools installieren
sudo apt-get install -y nfqueue-bindings-python3 \
  libnetfilter-queue-dev libnetfilter-queue1

# 2. IP Tables Rules konfigurieren (Traffic zu NFQueue leiten)
# Alle TCP/UDP Pakete zum Port 1:16 Queue weiterleiten
sudo iptables -I INPUT -p tcp -j NFQUEUE --queue-num 0
sudo iptables -I FORWARD -p tcp -j NFQUEUE --queue-num 0
sudo iptables -I OUTPUT -p tcp -j NFQUEUE --queue-num 0

# 3. iptables-persistent installieren (um Rules zu speichern)
sudo apt-get install -y iptables-persistent
sudo iptables-save | sudo tee /etc/iptables/rules.v4

# 4. Suricata Config für IPS/NFQueue editieren
sudo nano /etc/suricata/suricata.yaml

# Hinzufügen:
nfq:
  - number: 0
    mode: repeat
    reuseport: false

# 5. Suricata im IPS-Modus starten
sudo systemctl stop suricata
sudo suricata -c /etc/suricata/suricata.yaml -q 0

# 6. Konfiguration prüfen
sudo suricata -c /etc/suricata/suricata.yaml -T
⚠️ Wichtig: IPS-Modus mit NFQueue kann zu Paketverlusten und Latenz führen. Gründlich in einer Test-Umgebung testen bevor in Produktion aktiviert. Zu viele aktive Regeln können Performance-Probleme verursachen.

Schritt 7: Tests mit curl durchführen

Suricata mit Test-Traffic verifizieren:

#!/bin/bash
# Test-Alerts auslösen

# 1. Suricata starten (im IDS-Modus)
sudo systemctl start suricata
sudo systemctl status suricata

# 2. Einfache HTTP Request (sollte Normal sein)
curl http://google.com

# 3. SQL Injection Test (sollte Alert auslösen)
curl "http://testphp.vulnweb.com/artists.php?artist=1 AND 1=1"

# 4. Cross-Site Scripting Test
curl "http://example.com/search?q="

# 5. Port Scan simulieren (mit nmap - nur auf autorisiertem System!)
# sudo nmap -sT 192.168.1.100

# 6. Alerts überprüfen
sudo tail -f /var/log/suricata/eve.json | jq .

# 7. Spezifische Alert-Typ filtern
sudo jq 'select(.event_type=="alert")' /var/log/suricata/eve.json | tail -20

Schritt 8: Alert-Logs anschauen und analysieren

Eve-Log Format (JSON):

#!/bin/bash
# Alerts in verschiedenen Formaten anschauen

# 1. Alle Alerts anzeigen
sudo tail -100 /var/log/suricata/eve.json | jq .

# 2. Nur spezifische Alerts filtern
sudo jq 'select(.alert.action=="alert")' /var/log/suricata/eve.json | jq .alert

# 3. Alerts nach Source-IP gruppieren
sudo jq 'select(.event_type=="alert") | .src_ip' /var/log/suricata/eve.json | sort | uniq -c | sort -rn

# 4. Häufigste Alert-Signaturen
sudo jq 'select(.event_type=="alert") | .alert.signature' /var/log/suricata/eve.json | sort | uniq -c | sort -rn | head -20

# 5. HTTP Requests von verdächtigen IPs
sudo jq 'select(.event_type=="http" and .src_ip=="192.168.1.100")' /var/log/suricata/eve.json

# 6. DNS Queries überwachen
sudo jq 'select(.event_type=="dns")' /var/log/suricata/eve.json | jq '.dns | {query, answers, authority}'

# 7. TLS Certificate Informationen
sudo jq 'select(.event_type=="tls")' /var/log/suricata/eve.json | jq '.tls'

Schritt 9: Syslog Integration einrichten

Suricata Alerts zu Syslog senden für zentrale Überwachung:

#!/bin/bash
# Suricata mit Syslog konfigurieren

# 1. Syslog-ng oder rsyslog überprüfen
sudo systemctl status rsyslog

# 2. Suricata für Syslog Output konfigurieren
sudo nano /etc/suricata/suricata.yaml

# Konfiguration hinzufügen:
# outputs:
#   - syslog:
#       enabled: yes
#       facility: LOG_LOCAL0
#       level: INFO

# 3. Rsyslog für Suricata Logs konfigurieren
sudo nano /etc/rsyslog.d/30-suricata.conf

# Hinzufügen:
# :programname, isequal, "suricata" /var/log/suricata/suricata-syslog.log
# & stop

# 4. Rsyslog neustarten
sudo systemctl restart rsyslog

# 5. Logs überprüfen
sudo tail -f /var/log/suricata/suricata-syslog.log

Schritt 10: Systemd Service starten und enablen

Suricata automatisch beim Booten starten:

#!/bin/bash
# Systemd Service konfigurieren

# 1. Systemd Service Datei prüfen
sudo systemctl cat suricata

# 2. Service starten
sudo systemctl start suricata

# 3. Status überprüfen
sudo systemctl status suricata

# 4. Beim Booten automatisch starten
sudo systemctl enable suricata

# 5. Logs anschauen
sudo journalctl -u suricata -f

# 6. Service neu starten (nach Konfigurationsänderungen)
sudo systemctl restart suricata

# 7. Konfiguration validieren vor Restart
sudo suricata -c /etc/suricata/suricata.yaml -T

Schritt 11: Performance-Optimierung

Suricata für hohe Durchsatzraten optimieren:

#!/bin/bash
# Performance-Tuning für Suricata

# 1. CPU Affinity für bessere Performance
# In suricata.yaml:
# threading:
#   set-cpu-affinity: yes
#   cpu-affinity:
#     - management-cpu-set:
#         cpu: [ 0 ]
#     - detect-cpu-set:
#         cpu: [ 1, 2, 3 ]
#     - receive-cpu-set:
#         cpu: [ 0 ]
#     - decode-cpu-set:
#         cpu: [ 0 ]

# 2. Anzahl der Detect Threads anpassen (für Multi-Core)
# 1 Thread pro CPU-Core (minus 1-2 für andere Tasks)

# 3. Memory-Einstellungen
# memcap: Maximale Speichernutzung für Stream-Tracking
# flow:
#   memcap: 128mb
#   hash-size: 65536

# 4. Packet Capture Buffer erhöhen
# af-packet:
#   - interface: eth0
#     buffer-size: 32768

# 5. Performance testen
sudo suricata -c /etc/suricata/suricata.yaml --pcap /path/to/pcap.file

# 6. Stats anschauen
sudo tail -f /var/log/suricata/stats.log

Häufige Probleme und Lösungen

Problem Ursache Lösung
Keine Alerts erscheinen Falsch konfiguriertes Interface oder Regeln laden nicht Interface mit promisc überprüfen, Regeln validieren mit -T
Hohe CPU-Auslastung Zu viele aktive Regeln oder falsche Threading-Config CPU-Affinity aktivieren, Ruleset optimieren, nur nötige Regeln
Paketverluste in IPS Mode NFQueue Bottleneck oder zu komplexe Regeln Queue-Größe erhöhen, zu strenge Regeln deaktivieren
Eve-Log wächst zu schnell Zu viele Events werden geloggt Event-Logging selektiv konfigurieren, unwichtige Typen ausschalten
Service startet nicht Konfigurationsfehler oder Rechte-Problem suricata -T ausführen, sudo-Berechtigungen überprüfen
✅ Gut zu wissen: Suricata in IDS-Modus ist eine gute Lösung für Netzwerk-Monitoring und gibt Sicherheitsfachleuten Zeit, potenzielle Bedrohungen zu analysieren. Aktivieren Sie IPS-Modus nur mit sehr zuverlässigen und getesteten Regeln.

Monitoring und Alerting

Suricata mit ELK Stack (Elasticsearch, Logstash, Kibana) integrieren:

#!/bin/bash
# Eve-Log zu Elasticsearch senden mit Filebeat

# 1. Filebeat installieren
sudo apt-get install -y filebeat

# 2. Filebeat konfigurieren
sudo nano /etc/filebeat/filebeat.yml

# Konfiguration:
# filebeat.inputs:
# - type: log
#   enabled: true
#   paths:
#     - /var/log/suricata/eve.json
#   json.message_key: message
#   json.keys_under_root: true
#   json.add_error_key: true

# output.elasticsearch:
#   hosts: ["localhost:9200"]
#   index: "suricata-%{+yyyy.MM.dd}"

# 3. Filebeat starten
sudo systemctl start filebeat
sudo systemctl enable filebeat

# 4. Kibana öffnen und Dashboards erstellen
# http://localhost:5601

Verwandte Artikel

Weitere Ressourcen

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
120