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

330 Dokumentationen verfügbar

Wissensdatenbank

Suricata IDS IPS Einrichten Anleitung

Zuletzt aktualisiert: 14.07.2026 um 12:29 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

Texterstellung mit KI-Unterstützung

Enjix Beta

Enjyn AI Agent

Hallo 👋 Ich bin Enjix — wie kann ich dir helfen?
LLMs können Fehler machen. Ihre Nachrichten werden an Google Gemini weitergeleitet.
120