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:
- 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
- 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
undcluster.initial_master_nodes
entsprechend anpassen. Für den Anfang reicht aber ein einzelner Node. - Elasticsearch starten
sudo systemctl enable elasticsearch.service sudo systemctl start elasticsearch.service
- Kibana installieren
sudo apt-get install kibana
- 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"]
- 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:
- Geht in der pfSense-Weboberfläche auf Services -> Suricata.
- Wählt das Interface aus, auf dem Suricata läuft, und klickt auf das Bearbeiten-Symbol.
- Geht zum Reiter Output Settings.
- Aktiviert Eve (JSON) Output.
- Stellt sicher, dass der Pfad zur
eve.json
-Datei mit dem in eurer Logstash-Konfiguration übereinstimmt (Standard ist/var/log/suricata/eve.json
). - 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:
- Geht auf Management -> Stack Management -> Index Patterns.
- Klickt auf Create index pattern.
- Gebt
suricata-*
als Index Pattern ein und klickt auf Next step. - Wählt
@timestamp
als Time Filter field name und klickt auf Create index pattern. - Jetzt könnt ihr unter Discover eure Suricata-Logs durchsuchen und erste Visualisierungen erstellen.
- 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!