
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, Suricata zu lernen, stellte ich schnell fest, dass ich ein Werkzeug benötigte, um die eve.json-Datei zu durchsuchen. Die meisten Tutorials und Dokumentationen empfahlen, einen Stack zu installieren, um folgende Aufgaben zu erledigen:
- Die Logs an einem zentralen Ort speichern
- Ereignisse normalisieren und anreichern, insbesondere Alarme
- Ein Frontend verwenden, um in die Daten einzutauchen
Das ist sehr nützlich, aber was, wenn ich nur eine schnelle Überprüfung der Ereignisse benötige?
Früher oder später wird es Ihnen zu langweilig, dies zu tun:
cat eve.json | jq -r -c 'select(.event_type=="alert")|.payload'| base64 --decode
SuricataLog ist eine Sammlung von Werkzeugen/Skripten, um Suricata-Logdateien (wie /var/log/suricata/eve.json) zu parsen und anzuzeigen.
Das Eve JSON-Format ist nicht sehr komplex, daher habe ich ein paar Skripte mit den Funktionen geschrieben, die ich für meine Heimnetzwerkanalyse als am nützlichsten erachtet habe.
Als Bonus habe ich meine Lernerfahrung als Tutorial festgehalten, das Sie nutzen können, um mehr über Suricata zu erfahren und wie man es testet.
Installation über PIP
Bevor Sie etwas anderes tun, stellen Sie sicher, dass Ihre Umgebung bereit ist:
python3 -m venv ~/virtualenv/suricatalog
. ~/virtualenv/suricatalog/bin/activate
python3 -m pip install --upgrade pip setuptools wheel
Installation von Pypi.org
pip3 install --upgrade SuricataLog
Installation aus dem Quellcode
git clone [email protected]:josevnz/SuricataLog.git
cd SuricataLog
python3 -m venv ~/virtualenv/suricatalog
. ~/virtualenv/suricatalog/bin/activate
python3 -m pip install --upgrade build
python3 -m build
pip3 install dist/SuricataLog-X.Y.Z-py3-none-any.whl
Entwicklerinstallation
Möchten Sie einen Beitrag leisten? Oder einen Fehler gefunden und denken, Sie können einen Patch einreichen? Schön! So können Sie den Entwicklungsmodus ausführen:
git clone [email protected]:josevnz/SuricataLog.git
cd SuricataLog
python3 -m venv ~/virtualenv/suricatalog
. ~/virtualenv/suricatalog/bin/activate
pip install --upgrade pip
python -m pip install --upgrade build
pip install textual-dev
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, um ein Problem zu beheben.
Ich empfehle auch, die textualize-Konsole auszuführen und auf 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
Das druckt sogar Debug-Meldungen auf der Konsole aus (Sie können diese ausschließen, wenn Sie die Konsole mit '--exclude DEBUG' neu starten).
Erstellen eines Docker-Images
Weitere Details finden Sie in DOCKER.md.
Ausführen der Skripte
Sobald alles in Ihrer virtuellen Umgebung installiert ist, sollten Sie die Skripte aufrufen können.
Sie können herausfinden, welche Anwendungen installiert wurden, indem Sie nach Aktivierung Ihrer virtuellen Umgebung die Auto-Vervollständigung verwenden:
eve_[tab][tab]
Und wenn Sie die Bash Auto-Vervollständigungs-Erweiterung installieren, erhalten Sie auch einige Vorschläge für die Flags.
Einfacher EVE-Log-Parser
Überzeugen Sie sich selbst (denken Sie daran, --help zu verwenden, 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
Sehen Sie sich unten einige Beispiele 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

Sie können Suricata Log-Anwendungen in einem Browser ausführen, indem Sie den eve_server-Wrapper verwenden:
# 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
Sie müssen '--' übergeben, um dem Server mitzuteilen, dass diese Optionen zu der zugrunde liegenden eve_*-Anwendung gehören, die Sie aufrufen möchten.
Ausführen mit Docker
Es ist auch möglich, SuricataLog in einem Docker-Container auszuführen. Weitere Details finden Sie in DOCKER.md.
Ausführen mit uv
Wenn Sie uv haben, können Sie 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
Sie verstehen das Prinzip.
Bash Auto-Vervollständigung
Ich habe mein Bestes gegeben, um 8.6 Programmierbare Vervollständigung zu folgen.
Ich habe Auto-Vervollständigung für die häufigsten Flags bereitgestellt. Sie können alle Flags herausfinden, indem Sie '--help' an eines der Skripte übergeben.
Installation der Auto-Vervollständigungsbefehle
Sie können die Bash Auto-Vervollständigung für alle SuricataLog-Skripte installieren. Führen Sie einfach 'eve_autocomplete' aus und folgen Sie den Anweisungen:
eve_autocomplete --help
Unterstützte Versionen
Ich arbeite an diesem Projekt in meiner Freizeit und kann nicht jede Kombination von Linux/Python unterstützen. Dies ist meine aktuelle Testumgebung, und sie kann sich ohne vorherige Ankündigung ändern.
| SuricataLog | Unterstützt | OS | Python | Suricata |
|---|---|---|---|---|
| <= 0.8 | NEIN | NA | < 3.8 | 6.04 |
| 0.9+ | NEIN | fedora 37 | => 3.11.4 | 6.04 |
| 0.9+ | NEIN | Armbian 23.02.2 Jammy | => 3.10.6 | 6.04 |
| 0.9+ | NEIN | Ubuntu 20.04.4 LTS (Focal Fossa) | => 3.8.10 | 6.04 |
| 1.0.3+ | JA | fedora 40 | => 3.11.4 | 7.0.6 |
Sie sind herzlich eingeladen:
- Patches mit neuen Funktionen und Fehlerbehebungen einreichen.
- Fehlerberichte eröffnen. Seien Sie so detailliert wie möglich, sonst bleibt mir keine andere Wahl, als sie zu schließen.