
Suricataのeve.jsonログを解析、フィルタリング、可視化するCLIツール。アラート、フロー、DNS、ペイロードに対応。Suricataの学習とルールテストのためのチュートリアルも含まれています。
Suricataの使い方を学び始めたとき、すぐにeve.jsonファイルを検査するツールが必要だと気づきました。既存のチュートリアルやドキュメントのほとんどは、次のタスクを実行するためにスタックをインストールすることを推奨していました。
これは非常に便利ですが、単にイベントを簡単に検査したいだけの場合はどうでしょうか?
遅かれ早かれ、次のような作業に飽きてしまうでしょう。
cat eve.json | jq -r -c 'select(.event_type=="alert")|.payload'| base64 --decode
SuricataLogは、Suricataのログファイル(/var/log/suricata/eve.jsonなど)を解析して表示するためのツール/スクリプトのセットです。
Eve JSON形式はそれほど複雑ではないため、自宅のネットワーク分析に最も役立つと思われる機能を備えたスクリプトをいくつか書きました。
おまけとして、学習体験をチュートリアルとしてまとめました。Suricataについて学び、テスト方法も確認できます。
何をするにも、まず環境が整っていることを確認してください。
python3 -m venv ~/virtualenv/suricatalog
. ~/virtualenv/suricatalog/bin/activate
python3 -m pip install --upgrade pip setuptools wheel
pip3 install --upgrade SuricataLog
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
貢献したいですか?バグを見つけてパッチを送れそうですか?素晴らしい!開発モードで実行するには、次の手順を実行します。
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 .
その後、単体テストの実行は非常に簡単です。
(SuricataLog) [josevnz@dmaf5 SuricataLog]$ python -m unittest test/*.py
.........
----------------------------------------------------------------------
Ran 9 tests in 0.334s
OK
単体テストが失敗した場合、それが問題を修正する最初の場所である可能性が高いです。
textualizeコンソールを実行し、コンソールメッセージを監視するのもお勧めします。
# textual console
textual console --exclude SYSTEM --exclude EVENT
次に、別のターミナルで次のコマンドを実行します。
textual run --dev --command eve_log --timestamp '2015-01-01 10:41:21.642899' test/eve.json
これにより、デバッグメッセージもコンソールに出力されます(コンソールを '--exclude DEBUG' で再起動すると除外できます)。
詳細についてはDOCKER.mdを参照してください。
仮想環境にすべてがインストールされたら、スクリプトを呼び出せるようになります。
自動補完を使用して、インストールされたアプリケーションを確認できます。仮想環境をアクティブにした後、次のように入力します。
eve_[tab][tab]
また、Bash自動補完拡張機能をインストールすると、フラグの候補も表示されます。
実際に確認してみてください(--help を使用してサポートされているオプションを確認することを忘れずに)。

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 ...]
このスクリプトは、[15.1.3. Eve JSON 'jq' の例](https://suricata.readthedocs.io/en/suricata-6.0.0/output/eve/eve-json-
examplesjq.html) で提供されている例にヒントを得ています。いくつかの注意点: * 出力は色付きの JSON を使用します
positional arguments:
eve 解析する /var/log/suricata/eve.json ファイルへのパス(1つ以上)
optional arguments:
-h, --help このヘルプメッセージを表示して終了
--nxdomain NXDOMAIN の DNS レコードを表示
--payload 表示可能なペイロードを持つアラートを表示
--flow プロトコルと宛先ポートごとの集約フローレポート
--netflow NETFLOW 指定された IP アドレスのネットフローを取得
--useragent HTTP トラフィックの上位ユーザーエージェント
いくつかの例を以下に示します。

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

eve_server ラッパーを使用して、Suricata Log アプリケーションをブラウザで実行できます。
# eve.json ファイルのフローレポートを表示
eve_server --application eve_json -- --flow ~/eve.json
# NX domain レポートを表示
eve_server --application eve_json -- --nxdomain ~/eve.json
# eve.json レコードを検査
eve_server --applications eve_log -- ~/eve.json
'--' を渡して、これらのオプションが呼び出したい下位の eve_* に属することをサーバーに伝える必要があります。
Docker コンテナから SuricataLog を実行することも可能です。詳細についてはDOCKER.mdを参照してください。
uv がインストールされていれば、次のように実行できます。
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
アイデアはお分かりいただけたと思います。
8.6 プログラム可能な補完 にできる限り従うようにしました。
最も一般的なフラグに対して自動補完を提供しています。すべてのフラグは、各スクリプトに '--help' を渡すことで確認できます。
すべての SuricataLog スクリプトに対して Bash 自動補完をインストールできます。'eve_autocomplete' を実行し、指示に従ってください。
eve_autocomplete --help
このプロジェクトは余暇時間に取り組んでおり、世の中にあるすべての Linux/Python の組み合わせをサポートすることはできません。以下が現在のテスト環境であり、予告なく変更される可能性があります。
以下のことは歓迎します:
| SuricataLog | サポート | OS | Python | Suricata |
|---|
| <= 0.8 | なし | NA | < 3.8 | 6.04 |
| 0.9+ | なし | fedora 37 | => 3.11.4 | 6.04 |
| 0.9+ | なし | Armbian 23.02.2 Jammy | => 3.10.6 | 6.04 |
| 0.9+ | なし | Ubuntu 20.04.4 LTS (Focal Fossa) | => 3.8.10 | 6.04 |
| 1.0.3+ | あり | fedora 40 | => 3.11.4 | 7.0.6 |