
SuricataLog v1.1.6
Parsen, filtern und visualisieren Sie Suricata eve.json-Protokolle mit CLI-Tools für Alarme, Flows, DNS und Payloads. Enthält ein Tutorial zum Erlernen von Suricata und zum Testen von Regeln.
SuricataLog
Als ich anfing zu lernen, wie man Suricata verwendet, stellte ich schnell fest, dass ich ein Werkzeug benötigte, um die Datei eve.json zu inspizieren; Die meisten Tutorials und Dokumentationen, die es gibt, schlugen vor, einen Stack zu installieren, um die folgenden Aufgaben zu erledigen:
- Die Protokolle an einem zentralen Ort speichern
- Die Ereignisse normalisieren und anreichern, insbesondere Warnmeldungen
- Ein Frontend verwenden, um in die Daten einzutauchen
Was sehr nützlich ist, aber was, wenn ich nur eine schnelle Inspektion der Ereignisse durchführen wollte?
Früher oder später wirst du zu Tode gelangweilt sein, wenn du das tust:
cat eve.json | jq -r -c 'select(.event_type=="alert")|.payload'| base64 --decode
SuricataLog ist eine Sammlung von Werkzeugen/Skripten zum Parsen und Anzeigen von Suricata-Protokolldateien (wie /var/log/suricata/eve.json)
Das Eve JSON-Format ist nicht sehr komplex, also schrieb ich ein paar Skripte mit den Funktionen, von denen ich dachte, dass sie für meine Heimnetzwerkanalyse am nützlichsten wären.
Als Bonus habe ich meine Lernerfahrung als Tutorial aufgeschrieben, das du verwenden kannst, um mehr über Suricata zu lernen und es auch zu testen.
Installation von Pypi
Installation von Pypi.org
uv pip install SuricataLog
Installation aus dem Quellcode
git clone [email protected]:josevnz/SuricataLog.git
cd SuricataLog
uv build
uv pip install dist/suricatalog-1.1.6-py3-none-any.whl
Entwickler-Installation
Du möchtest also beitragen? Oder hast einen Fehler gefunden und denkst, du kannst einen Patch einreichen? Schön! Hier ist, was du tun kannst, um im Entwicklungsmodus zu arbeiten:
git clone [email protected]:josevnz/SuricataLog.git
cd SuricataLog
uv build
uv sync --dev
uv pip install --editable .
Das Ausführen von Unit-Tests ist danach sehr einfach:
(SuricataLog) [josevnz@dmaf5 SuricataLog]$ python -m unittest test/*.py
.........
----------------------------------------------------------------------
Ran 9 tests in 0.334s
OK
Wenn die Unit-Tests fehlschlagen, ist dies höchstwahrscheinlich der erste Ort, an dem ein Problem behoben werden sollte.
Ich empfehle außerdem, die textualize-Konsole auszuführen und auf die Konsolenmeldungen zu achten:
# textual console
textual console --exclude SYSTEM --exclude EVENT
Dann in einem anderen Terminal:
textual run --dev --command eve_log --timestamp '2015-01-01 10:41:21.642899' test/eve.json
Dadurch werden sogar Debug-Meldungen auf der Konsole ausgegeben (du kannst diese ausschließen, wenn du die Konsole mit '--exclude DEBUG' neu startest)
Erstellen eines Docker-Images
Weitere Details findest du in DOCKER.md.
Ausführen der Skripte
Sobald alles in deiner virtuellen Umgebung installiert ist, solltest du in der Lage sein, die Skripte aufzurufen
Du kannst herausfinden, welche Anwendungen installiert wurden, indem du die Autovervollständigung verwendest, nachdem du deine virtuelle Umgebung aktiviert hast:
eve_[tab][tab]
Und wenn du die Bash-Autovervollständigungs-Erweiterung installierst, erhältst du auch einige Vorschläge für die Flags.
Einfacher EVE-Log-Parser
Sieh es dir am besten selbst an (denk daran, verwende --help, um zu erfahren, welche Optionen unterstützt werden)
Tabellenformat:

eve_log --timestamp '2015-01-01 10:41:21.642899' --formats TABLE test/eve.json
Vorgefertigte Berichte mit eve_json.py
(suricatalog) [josevnz@dmaf5 SuricataLog]$ eve_json --help
usage: eve_json [-h] [--nxdomain | --payload | --flow | --netflow NETFLOW | --useragent] eve [eve ...]
This script is inspired by the examples provided on [15.1.3. Eve JSON ‘jq’ Examples](https://suricata.readthedocs.io/en/suricata-6.0.0/output/eve/eve-json-
examplesjq.html) A few things: * The output uses colorized JSON
positional arguments:
eve Path to one or more /var/log/suricata/eve.json file to parse.
optional arguments:
-h, --help show this help message and exit
--nxdomain Show DNS records with NXDOMAIN
--payload Show alerts with a printable payload
--flow Aggregated flow report per protocol and destination port
--netflow NETFLOW Get the netflow for a given IP address
--useragent Top user agent in HTTP traffic
Schau dir einige Beispiele unten an:
NXDOMAIN

eve_json --nxdomain test/eve.json
PAYLOAD

eve_json --payload ~/Downloads/eve.json
FLOW

eve_json --flow test/eve_udp_flow.json
NETFLOW

eve_json --netflow 224.0.0.251 test/eve_udp_flow.json
USERAGENT

eve_json --useragent test/eve.json
Ausführen von eve_*-Anwendungen in einem Browser

Du kannst Suricata Log-Anwendungen in einem Browser ausführen, indem du den eve_server-Wrapper verwendest:
# Show the flow report on a eve.json file
eve_server --application eve_json -- --flow ~/eve.json
# Show NX domain report
eve_server --application eve_json -- --nxdomain ~/eve.json
# Inspect the eve.json records
eve_server --applications eve_log -- ~/eve.json
Du musst das '--' übergeben, um dem Server mitzuteilen, dass diese Optionen zu dem zugrunde liegenden eve_* gehören, das du aufrufen möchtest.
Ausführen aus Docker
Es ist auch möglich, SuricataLog aus einem Docker-Container auszuführen. Weitere Details findest du in DOCKER.md
Ausführen mit uv
Wenn du uv hast, kannst du einfach Folgendes tun:
uvx --from SuricataLog eve_log /var/log/suricata/eve.json
uvx --from SuricataLog eve_json --useragent /var/log/suricata/eve.json
uvx --from SuricataLog eve_server --application eve_json -- --flow /var/log/suricata/eve.json
Du verstehst das Prinzip.
Bash-Autovervollständigung
Ich habe mein Bestes versucht, 8.6 Programmable Completion zu befolgen
Ich habe die Autovervollständigung für die gängigsten Flags bereitgestellt. Du kannst alle Flags herausfinden, indem du '--help' an eines der Skripte übergibst.