PfSense DPI Dashboard mit Grafana

PfSense DPI Dashboard mit Grafana

September 20, 2021 0 Von Tobias

In diesem Reddit Post stellt der User Lephisto sein Grafana Dashboard vor, das die Ergebnisse der Deep Packet Inspection visualisiert.

Er hat auch ein Video dazu gemacht:

Wir werden die von der PfSense-Firewall erzeugten Protokolldatensätze auswerten. Unser Graylog-Server läuft bereits, und wir beginnen mit der Vorbereitung des Geländes für die Erfassung dieser Protokolle.

Indexe

Wir erstellen nun den Pfsense-Index in System / Indizes

Index Shard 4 und Index Replikate 0, die Rotation des Index Zeitindex und die Aufbewahrung kann gelöscht werden, Schließung eines Index nach der maximalen Anzahl von Indizes oder nichts zu tun. In meinem Fall habe ich ihn auf monatliche Rotation eingestellt und die Indizes nach 12 Monaten gelöscht. Kurz gesagt, es gibt viele Möglichkeiten, die Rotation festzulegen. Dieser Index wird sofort erstellt.

und mit Cerebro können wir es überprüfen.

Content Pack

Dieses Inhaltspaket enthält Input rsyslog type, Extraktoren, Lookup-Tabellen, Datenadapter für Lockup-Tabellen und Cache für Lookup-Tabellen. Um diese Dateien herunterzuladen, installieren wir git, um das Repository zu klonen.

#apt-get install git

und dann klonen wir es:

#git clone https://github.com/devopstales/pfsense-graylog

Wir werden die CSV-Daten der Nachschlagetabellen suchen, um später die Anzahl der Ports in Dienstnamen umzuwandeln. Aus dem Git, das Sie gerade geklont haben, haben wir die Datei service-names-port-numbers.csv ausgewählt und nach /etc/graylog/server kopiert.

#cp service-names-port-numbers.csv /etc/graylog/server

Wir importieren nun die Datei aus dem Content-Pack-Ordner und wählen für sie im System / Content Packs die Option Import content packs, um die Datei hochzuladen.

Wie wir sehen, wird sie der Liste hinzugefügt.

Jetzt wählen wir das Pfsense Content Pack aus:

Und wir wenden es an:

Streams

Wir bearbeiten den Stream von pfsense in Streams, um den Index zuzuordnen, den wir ursprünglich erstellt haben. Wir markieren, dass er die Übereinstimmungen für den Standard-Stream “Alle Nachrichten” beseitigt, so dass nur er ihn im Index von pfsense speichert.

Cerebro

Wie bereits erläutert, erzeugt graylog standardmäßig für jeden erstellten Index eine eigene Vorlage und wendet sie bei jeder Indexrotation an. Wenn wir unsere eigenen Vorlagen wollen, müssen wir sie in der gleichen elasticsearch erstellen. Wir fügen das Feld real_timestamp hinzu, das bei der Verwendung von grafana nützlich ist, und wir konvertieren auch die Geo-Typen dest_ip_geolocation und src_ip_geolocation in den Typ geo_point, um in den Weltkarten-Panels verwendet zu werden, da graylog dieses Format nicht verwendet.

Um die personalisierte Vorlage zu importieren, öffnen Sie cerebro und gehen Sie zu more/index template

Wir erstellen eine neue Vorlage

Im Namen tragen wir pfsense-custom ein und öffnen die Git-Datei mit der Vorlage und fügen ihren Inhalt hier ein.

Und dann drücken wir die Schaltfläche Erstellen.

Jetzt stoppen wir den Graylog-Dienst, um den Index durch Cerebro zu eliminieren.

#systemctl stop graylog-server.service

In Cerebro stehen wir oben auf dem Index, klappen die Optionen aus und wählen Index löschen.

Wir starten den Graylog-Dienst erneut und dieser wird den Index mit dieser Vorlage erstellen.

#systemctl start graylog-server.service

Aktivierung des GeoIP-Plugins

In Graylog gehen Sie zu System->Konfigurationen und:

  1. Ändern Sie die Reihenfolge nach Nachrichtenprozessoren, um die folgende Reihenfolge zu erhalten:
1. AWS Instance Name Lookup
2. Message Filter Chain
3. Pipeline Processor
4. GeoIP Resolver

Aktivieren der Endaktualisierung des Geo-Location-Prozessors.

cd /etc/graylog/server/
wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz
tar -xzf GeoLite2-City.tar.gz
mv GeoLite2-City_*/GeoLite2-City.mmdb .

Aktualisieren Sie dann die Konfiguration des Geo-Location-Prozessors, um den Geo-Location-Prozessor zu aktivieren.

Pipelines

Die Pfsense-Logs, die bei Graylog ankommen, werden nicht mit Datum und Uhrzeit versehen, sondern speichern im Zeitstempel-Feld die Zeit, zu der sie bei Graylog selbst ankommen, und dieses Datum und die Uhrzeit sind im UTC-Format, so dass wir es ändern müssen, damit es keine Interpretationsprobleme im Grafana-Zeitformat gibt, wenn sie angezeigt werden.

Wir müssen die Pipeline von pfsense dann in System/Pipelines bearbeiten

Quelle der Regel, die die Anpassung des Zeitstempels vornimmt, den wir in grafana verwenden werden:

    rule "timestamp_pfsense_for_grafana"
     when
     has_field("timestamp")
    then
    // the following date format assumes there's no time zone in the string
     let source_timestamp = parse_date(substring(to_string(now("America/Habana")),0,23), "yyyy-MM-dd'T'HH:mm:ss.SSS");
     let dest_timestamp = format_date(source_timestamp,"yyyy-MM-dd HH:mm:ss");
     set_field("real_timestamp", dest_timestamp);
    end

Wir speichern und die Pipeline ist bereit, um später die ersten Protokolle zu empfangen.

Pfsense

Wir werden nun Pfsense so vorbereiten, dass es die Logs an graylog sendet, und dazu werden wir unter Status/System Logs/ Settings die Optionen ändern, die uns dies ermöglichen.

Wir gehen zum Abschnitt Remote Logging Options und geben unter Remote Log Server die IP-Adresse und den Port an, der im Content Pack in der Pfsense-Eingabe von graylog vorangestellt ist, in diesem Fall 5442.

Wir speichern die Konfiguration.

Graylog

Wir gehen nun zu graylog, indem wir den pfsense-Stream auswählen, und wir werden sehen, wie er die Protokollnachrichten analysiert und die Felder erstellt.

Grafana

Graylog-Dashboards bieten mir nicht die Möglichkeiten, die Grafana hat, daher wird unser Dashboard in Grafana erstellt.

Wir erstellen die Datenquelle in grafana, die wir Pfsense-Graylog nennen werden.

Ich teile mit Ihnen ein vorgefertigtes Dashboard auf der offiziellen Grafana-Seite, das importiert werden kann.

Wir wählen Dashboard importieren

Wir laden die heruntergeladene Datei Upload .json file hoch und verknüpfen sie mit der dafür erstellten Datenquelle.

Wir können das Dashboard bereits in Aktion sehen.

Quelle: devopstales / pfsense-graylog

Share