
IT、AI、OT向けのオープンソースでセルフホスト型のセキュリティパイプライン。ログを入力し、証拠を出力: OCSF正規化、46の検出ルール(MITRE/ATLAS/ICSタグ付き)、相関分析、証拠パッケージ、NIS2ドラフト、再構築されたReactコンソール + GitHub Pagesデモ。Apache-2.0。
ログインから証拠へ。
IT、AI、OT向けのオープンソースセキュリティパイプライン:生ログから検証済みインシデント、そしてNIS2通知のドラフトまで。
プロジェクトページとライブデモ · クイックスタート · コンソール · アーキテクチャ · ステータス (SSOT)
バッジは
main上での最新の実際の実行結果を反映しており、約束ではありません。Scorecardの 残存する指摘は、ギャップではなく、受け入れ済みで文書化されたトレードオフです。詳細は SSOT.md §1を参照してください。
FENGARDEはIT、AI、OTにまたがるセキュリティテレメトリを接続し、何が起きたのか、誰または何が行動したのか、何が影響を受けたのか、イベント同士がどう関連するのか、そしてその結論を裏付ける証拠は何かを明らかにします。
欧州の産業系中堅企業向けに構築されています:オープンソース、セルフホスト、Apache-2.0ライセンス。NIS2インシデント通知のドラフト生成パス、決定論的なドイツ語/英語レポートジェネレーター、MSP型デプロイ向けのオプトイン式RBAC/MFA/監査ログ/マルチテナンシー、オプトイン式HAプロファイル(配線だけでなく実際のキルテスト済み)、そしてネットワーク外に一切出ないAIトリアージを備えています。
ログは収集され、単一のスキーマ(OCSF)に正規化され、スライディングウィンドウ上の相関ルールを通され、因果グラフとハッシュチェーン化された証拠パッケージを伴うインシデントにグループ化され、OpenSearchにインデックスされます。各サービスは独立しており、メッセージバスを通じてのみ他のサービスと通信するため、他の部分を書き換えることなく、任意の部分をスケールしたり置き換えたりできます。
OLLAMA_URLが設定されていればローカルのOllamaを使用し、そうでなければラベル付きの決定論的スタブを使用します。アラートデータがサードパーティのLLM APIを通ることはなく、コンソールには実際に実行されたエンジンが表示されます。測定された2つのモデルでは判定品質は低く(qwen2.5:3bはラベル付きアラート54件中1件正解、qwen2.5:7bは54件中7件、大半はsuspiciousという回答)、詳細はeval/llm_triage/RESULTS.mdを参照してください。ElasticではなくOpenSearch: ストレージエンジンにライセンスの但し書きはありません (ADR 003)。知っておく価値はありますが、 Wazuhに対する差別化要因ではありません(そのインデクサーもOpenSearchのフォークです)。
| 方法 | 必要なもの | 得られるもの |
|---|---|---|
| プロジェクトページ | ブラウザ | ラボ実行の記録上で動作する実際のコンソール。リプレイ可能な攻撃、アーキテクチャ、全46ルール、4つの録画済みウォークスルーを収録。静的で、書き込みはブラウザ内に留まります(docs/console-demo.mdに何が本物かが正確に記載されています)。 |
make e2e | Python 3 | 実際のアラートまでのSSHブルートフォース。リプレイに対して冪等。Docker、Redis、OpenSearchは不要。 |
make demo | Docker | 完全なライブスタック。実際のブルートフォースアラートが約1分以内にコンソールに表示されます。 |
git clone https://github.com/supermhel/fengarde.git && cd fengarde
make preflight # doctor: checks vm.max_map_count, Docker RAM, free ports
make demo # docker compose up -- a real SSH brute-force alert appears
# in the dashboard within ~30-60s, no manual step
# open http://localhost:8080
Docker が手元にない?検出パイプライン全体はゼロインフラで動作します:
make e2e # SSH brute-force -> real alert -> idempotent replay, no Docker/Redis/OpenSearch
bash tools/demo.sh # same test, narrated (Windows: powershell -File tools\demo.ps1)
表示されている内容: 1つのIPから60秒以内に10回のログイン失敗(SSHのFailed passwordまたはWindowsのEventID 4625 — どちらも同じOCSF Authenticationイベントに正規化されます)が発生すると、common_bruteforce.yml(threshold: 10、window_seconds: 60、送信元IPでグループ化)が発火し、アラートがダッシュボードのアラート一覧に表示されます。再配信時も冪等です。
前提条件: Docker DesktopまたはDocker Engine + Compose v2、Dockerに割り当てられた4 GB以上のRAM、Linux、macOS、またはWSL2経由のWindows(Linuxコンテナ、POSIX shスクリプト)。Python 3はパーサーをコントリビュートする場合のみ必要です — その場合Dockerは不要です(コントリビュートを参照)。
vm.max_map_countを引き上げる必要がありますsudo sysctl -w vm.max_map_count=262144
# persist across reboots:
echo 'vm.max_map_count=262144' | sudo tee /etc/sysctl.d/99-fengarde.conf
これがないと、OpenSearch は役立つエラーではなく JVM クラッシュで失敗します。macOS Docker Desktop では不要です(その VM 内で処理されます)。make preflight がこれをチェックし、何か不足している場合は正確な修正方法を表示します。
その他のターゲット:
make test # full zero-infra contract test suite, no Docker needed
make up # start the stack detached
make down # stop the stack, remove volumes
make ha-up # opt-in: Redis Sentinel + 3-node OpenSearch HA (needs REDIS_PASSWORD)
make ha-down # stop the HA profile, remove its volumes
| ポート | サービス | 内容 |
|---|---|---|
| 6379 | redis (siem-bus) | サービス間のメッセージバス |
| 9200 | opensearch (siem-store) | イベント/アラートの保存 + クエリ API |
| 5601 | dashboards (siem-dashboards) | OpenSearch Dashboards |
| 8000 | ws6-inventory | インベントリ API (IP/MAC 履歴) |
| 8080 | ws7-dashboard | FENGARDE アラートコンソール |
| 5514/udp | ws1-collectors | ライブ syslog 取り込み (認証なし — 信頼済みセグメントのみ) |
| 8013 | ws3-indexer | トリアージ API — 内部専用、ホストには公開されない |
| 9090 | prometheus | メトリクス — オプトイン、observability compose プロファイル |
| 3000 | grafana | Prometheus 上のダッシュボード — オプトイン、同じプロファイル。デフォルトは admin/admin、SECURITY.md §1 を参照 |
| 8081 | goatcounter | プロジェクトページのセルフホストコピー用のセルフホスト型訪問カウンター — オプトイン、同じプロファイル。Cookie 不使用、データはネットワーク外に出ない (docker exec で一度だけ設定、docs/deployment.md を参照) |
make preflight は開始前に公開ポートが空いているかを確認します。
make up の後、コンソールは http://localhost:8080 にあります (React 18 と Vite。以前の
/legacy/ にある単一ファイル UI は 2026-10-20 に廃止されました)。3 つのグループに 11 のビュー (サイドバーの 10 に加えてアカウント):
| グループ | ビュー |
|---|---|
| 検知 | 概要、アラーム (トリアージ、AI 判定、「発火した理由」、NIS2 ドラフト)、インシデント (因果グラフ、証拠パッケージ、インシデントレポート) |
| 調査 | イベント (クエリバー、ファセット、ヒストグラム、raw/OCSF)、カバレッジ (MITRE ヒートマップ、全ルール、管理者向けのテナント別スイッチ) |
| 運用 | ソース (デバイスを接続し、最初のイベントを待つ)、インベントリ (ライブ資産レコード、管理者としてデバイスを追加)、オペレーション (サービスヘルス、デッドレター、Prometheus パネル)、監査、設定 (ユーザーと通知チャネル、管理者のみ) |
| アカウント | MFA 登録 |
ドイツ語と英語、ライトとダーク、スマートフォン幅。サインインは MFA コードを受け付け、 どのホストと通信しているか、サインインサービスが応答しているかどうかを表示し、平文 HTTP では 警告を出します。各ロールが何を行えるかはサインインページに記載されています。