アップデート一覧に戻る
New releaseJul 26, 2026

SuricataLog v1.1.6

Suricataのeve.jsonログを解析、フィルタリング、可視化するCLIツール。アラート、フロー、DNS、ペイロードに対応。Suricataの学習とルールテストのためのチュートリアルも含まれています。

共有

SuricataLog

Downloads

Suricataの使い方を学び始めたとき、すぐにeve.jsonファイルを検査するツールが必要だと気づきました。既存のチュートリアルやドキュメントのほとんどは、次のタスクを実行するためにスタックをインストールすることを推奨していました。

  1. ログを中央の場所に保存する
  2. イベント(特にアラート)を正規化し、エンリッチする
  3. フロントエンドを使用してデータを詳しく調べる

これは非常に便利ですが、単にイベントを簡単に検査したいだけの場合はどうでしょうか?

遅かれ早かれ、次のような作業に飽きてしまうでしょう。

cat eve.json | jq -r -c 'select(.event_type=="alert")|.payload'| base64 --decode

SuricataLogは、Suricataのログファイル(/var/log/suricata/eve.jsonなど)を解析して表示するためのツール/スクリプトのセットです。

Eve JSON形式はそれほど複雑ではないため、自宅のネットワーク分析に最も役立つと思われる機能を備えたスクリプトをいくつか書きました。

おまけとして、学習体験をチュートリアルとしてまとめました。Suricataについて学び、テスト方法も確認できます。

PIPからのインストール

何をするにも、まず環境が整っていることを確認してください。

python3 -m venv ~/virtualenv/suricatalog
. ~/virtualenv/suricatalog/bin/activate
python3 -m pip install --upgrade pip setuptools wheel

Pypi.orgからのインストール

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イメージの作成

詳細についてはDOCKER.mdを参照してください。

スクリプトの実行

仮想環境にすべてがインストールされたら、スクリプトを呼び出せるようになります。

自動補完を使用して、インストールされたアプリケーションを確認できます。仮想環境をアクティブにした後、次のように入力します。

eve_[tab][tab]

また、Bash自動補完拡張機能をインストールすると、フラグの候補も表示されます。

シンプルなEVEログパーサー

実際に確認してみてください(--help を使用してサポートされているオプションを確認することを忘れずに)。

テーブル形式:

suricatalog-eve_log-table.png

eve_log --timestamp '2015-01-01 10:41:21.642899' --formats TABLE test/eve.json

eve_json.py による定型レポート

(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 トラフィックの上位ユーザーエージェント

いくつかの例を以下に示します。

NXDOMAIN

suricatalog-eve_json-nxdomain.png

eve_json --nxdomain test/eve.json

PAYLOAD

suricatalog-eve_json-payload.png

eve_json --payload ~/Downloads/eve.json

FLOW

suricatalog_eve_json-flow.png

eve_json --flow test/eve_udp_flow.json

NETFLOW

suricatalog_eve_json-netflow.png

eve_json --netflow 224.0.0.251 test/eve_udp_flow.json

USERAGENT

suricatalog-eve_json-useragent.png

eve_json --useragent test/eve.json

ブラウザでの eve_* アプリケーションの実行

ブラウザで eve* アプリケーションを実行する Suricata eve サーバー

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 からの実行

Docker コンテナから SuricataLog を実行することも可能です。詳細についてはDOCKER.mdを参照してください。

uv での実行

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

アイデアはお分かりいただけたと思います。

Bash 自動補完

8.6 プログラム可能な補完 にできる限り従うようにしました。

最も一般的なフラグに対して自動補完を提供しています。すべてのフラグは、各スクリプトに '--help' を渡すことで確認できます。

自動補完コマンドのインストール

すべての SuricataLog スクリプトに対して Bash 自動補完をインストールできます。'eve_autocomplete' を実行し、指示に従ってください。

eve_autocomplete --help

サポートされているバージョン

このプロジェクトは余暇時間に取り組んでおり、世の中にあるすべての Linux/Python の組み合わせをサポートすることはできません。以下が現在のテスト環境であり、予告なく変更される可能性があります。

SuricataLogサポートOSPythonSuricata
<= 0.8なしNA< 3.86.04
0.9+なしfedora 37=> 3.11.46.04
0.9+なしArmbian 23.02.2 Jammy=> 3.10.66.04
0.9+なしUbuntu 20.04.4 LTS (Focal Fossa)=> 3.8.106.04
1.0.3+ありfedora 40=> 3.11.47.0.6

以下のことは歓迎します:

  • 新機能やバグ修正を含むパッチの提出。
  • バグレポートの作成。できるだけ詳細に記述してください。そうでなければ、やむを得ずクローズすることがあります。

チュートリアル

カテゴリ