
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.
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:
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.
uv pip install SuricataLog
git clone [email protected]:josevnz/SuricataLog.git
cd SuricataLog
uv build
uv pip install dist/suricatalog-1.1.6-py3-none-any.whl
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)
Weitere Details findest du in DOCKER.md.
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.
Sieh es dir am besten selbst an (denk daran, verwende --help, um zu erfahren, welche Optionen unterstützt werden)

eve_log --timestamp '2015-01-01 10:41:21.642899' --formats TABLE test/eve.json
(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:

eve_json --nxdomain test/eve.json

eve_json --payload ~/Downloads/eve.json

eve_json --flow test/eve_udp_flow.json

eve_json --netflow 224.0.0.251 test/eve_udp_flow.json

eve_json --useragent test/eve.json

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.
Es ist auch möglich, SuricataLog aus einem Docker-Container auszuführen. Weitere Details findest du in DOCKER.md
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.
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.