pfSense: Suricata Logs mit Elasticsearch und Kibana visualisieren – Das ultimative HowTo für Nerds!

Hey Leute, was geht ab? Ihr habt Bock auf krasse IT-Security und wollt eure pfSense-Firewall auf das nächste Level bringen? Dann seid ihr hier genau richtig! Wir zeigen euch, wie ihr die Logs eures Suricata Intrusion Detection Systems (IDS) mit dem legendären ELK-Stack – also Elasticsearch, Logstash und Kibana – visualisiert. Klingt kompliziert? Ist es aber nicht, versprochen! Wir machen das Schritt für Schritt, ganz easy und für jeden verständlich.

Warum das Ganze? Na, ganz einfach: Mit Kibana könnt ihr eure Security-Daten in schicken Dashboards darstellen, Alarme einrichten und verdächtige Aktivitäten in eurem Netzwerk blitzschnell erkennen. So habt ihr den vollen Durchblick und könnt Hackerangriffen und anderen Cyber-Bedrohungen den Kampf ansagen. Also, lasst uns loslegen!

Was du brauchst

Bevor wir durchstarten, checkt kurz, ob ihr alles am Start habt:

  • Eine laufende pfSense-Installation mit aktiviertem Suricata. Wenn du noch keine Ahnung hast, wie das geht, schau mal in die pfSense-Doku.
  • Einen Server oder eine VM für euren ELK-Stack. Das kann ruhig eine kleine Kiste sein, aber je mehr Power, desto besser.
  • Ein bisschen Grundwissen über Linux-Befehle. Aber keine Sorge, wir erklären alles ganz genau.
  • Bock auf coole Technik!

Schritt 1: Elasticsearch und Kibana installieren

Wir fangen mit dem Herzstück an: Elasticsearch und Kibana. Diese beiden Tools arbeiten Hand in Hand, um eure Logs zu speichern, zu durchsuchen und zu visualisieren. Geht auf euren ELK-Server und legt los:

  1. Paketquellen hinzufügen und Elasticsearch installierenJe nach Betriebssystem auf deinem Server, musst du die entsprechenden Paketquellen hinzufügen. Hier ein Beispiel für Debian/Ubuntu:
    
        wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
        sudo apt-get install apt-transport-https
        echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
        sudo apt-get update
        sudo apt-get install elasticsearch
        
  2. Elasticsearch konfigurierenEin paar kleine Anpassungen sind nötig. Öffne die Konfigurationsdatei:
    sudo nano /etc/elasticsearch/elasticsearch.yml

    Ändere (oder füge hinzu) folgende Zeilen:

    
        cluster.name: my-cluster
        network.host: 0.0.0.0
        http.port: 9200
        discovery.seed_hosts: ["127.0.0.1"]
        cluster.initial_master_nodes: ["node-1"]
          

    Wichtig: Wenn du einen Cluster aufbaust (was mega cool wäre!), musst du die discovery.seed_hosts und cluster.initial_master_nodes entsprechend anpassen. Für den Anfang reicht aber ein einzelner Node.

  3. Elasticsearch starten
    
    sudo systemctl enable elasticsearch.service
    sudo systemctl start elasticsearch.service
  4. Kibana installieren
    sudo apt-get install kibana
  5. Kibana konfigurierenAuch hier müssen wir ein paar Zeilen anpassen:
    sudo nano /etc/kibana/kibana.yml

    Ändere (oder füge hinzu) folgende Zeilen:

    
    server.port: 5601
    server.host: "0.0.0.0"
    elasticsearch.hosts: ["http://localhost:9200"]
             
  6. Kibana starten
    
    sudo systemctl enable kibana.service
    sudo systemctl start kibana.service

Jetzt solltet ihr Kibana über euren Browser erreichen können (z.B. http://deine-server-ip:5601). Wenn ihr das Kibana-Logo seht, habt ihr alles richtig gemacht!

Schritt 2: Logstash installieren und konfigurieren

Logstash ist der „Arbeiter“ im ELK-Stack. Es nimmt die Logs von Suricata entgegen, bereitet sie auf und schickt sie an Elasticsearch.
Installiert Logstash und konfiguriert eine Pipeline:

sudo apt-get install logstash

Erstellt eine Konfigurationsdatei für die Logstash-Pipeline:

sudo nano /etc/logstash/conf.d/suricata.conf

Fügt folgenden Inhalt ein (und passt ihn an eure Umgebung an!):


input {
  file {
    path => "/var/log/suricata/eve.json" # Pfad zu eurer Suricata eve.json
    codec => "json"
    type => "suricata"
  }
}

filter {
  # Hier könnt ihr eure Logs filtern und bearbeiten (optional)
  # Beispiel: Bestimmte Felder entfernen
  # mutate {
  #   remove_field => ["field1", "field2"]
  # }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "suricata-%{+YYYY.MM.dd}"
    # user => "elastic" # Falls ihr Authentifizierung verwendet
    # password => "changeme"
  }
}

Startet Logstash:

sudo systemctl enable logstash.service
sudo systemctl start logstash.service

Schritt 3: Suricata für das Logging konfigurieren

Jetzt müssen wir Suricata noch sagen, dass es seine Logs im JSON-Format ausgeben soll. Das geht ganz einfach:

  1. Geht in der pfSense-Weboberfläche auf Services -> Suricata.
  2. Wählt das Interface aus, auf dem Suricata läuft, und klickt auf das Bearbeiten-Symbol.
  3. Geht zum Reiter Output Settings.
  4. Aktiviert Eve (JSON) Output.
  5. Stellt sicher, dass der Pfad zur eve.json-Datei mit dem in eurer Logstash-Konfiguration übereinstimmt (Standard ist /var/log/suricata/eve.json).
  6. Speichert die Einstellungen und startet Suricata neu.

Schritt 4: Kibana rocken!

Jetzt kommt der spaßige Teil! Öffnet Kibana in eurem Browser und legt los:

  1. Geht auf Management -> Stack Management -> Index Patterns.
  2. Klickt auf Create index pattern.
  3. Gebt suricata-* als Index Pattern ein und klickt auf Next step.
  4. Wählt @timestamp als Time Filter field name und klickt auf Create index pattern.
  5. Jetzt könnt ihr unter Discover eure Suricata-Logs durchsuchen und erste Visualisierungen erstellen.
  6. Probiert verschiedene Diagrammtypen aus (z.B. Balkendiagramme, Tortendiagramme, Heatmaps) und erstellt coole Dashboards, um eure Daten zu präsentieren.

Ihr könnt in Kibana sehr viel herumspielen und entdecken. Erstellt euch eine Übersicht oder spezielle Übersichten um Angriffe direkt erkennen zu können.

Feintuning und Extras

  • Logrotate: Damit eure Logdateien nicht ins Unendliche wachsen, solltet ihr Logrotate einrichten. Das geht sowohl für die Suricata-Logs als auch für die Elasticsearch-Indizes.
  • Alerting: Kibana bietet eine mächtige Alerting-Funktion. Ihr könnt Regeln erstellen, die euch benachrichtigen, wenn bestimmte Ereignisse auftreten (z.B. eine hohe Anzahl an fehlgeschlagenen Logins).
  • Security: Wenn euer ELK-Stack öffentlich erreichbar ist, solltet ihr unbedingt Sicherheitsmaßnahmen ergreifen (z.B. Authentifizierung, Verschlüsselung, Firewall-Regeln).
  • Performance-Tuning: Wenn ihr viele Logs habt, kann es sich lohnen, die Performance von Elasticsearch und Logstash zu optimieren (z.B. durch mehr RAM, schnellere Festplatten, Sharding).

Schlusswort:

So, das war’s! Ihr habt jetzt eine mega coole Security-Monitoring-Lösung am Start. Mit pfSense, Suricata, Elasticsearch und Kibana seid ihr bestens gerüstet, um euer Netzwerk zu schützen und Cyberkriminellen das Leben schwer zu machen.

Denkt dran: Security ist ein fortlaufender Prozess. Bleibt am Ball, probiert neue Sachen aus und teilt euer Wissen mit der Community! Wenn ihr Fragen habt, immer her damit!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert