💬 くるるちゃんのワンポイント図解解説
【技術背景・解説】
この記事(個人開発セキュリティOSS 4製品を公開しました — EXkururuIPROS / XDR / SOC / EDR)におけるIT技術の基本概念と重要ポイントを、わかりやすく整理・解説しています。
【アイキャッチ図解のポイント】
構成要素とデータフローを視覚的に整理し、初心者でも要点を掴みやすいグラフィック構造で表示しています。
【資格・要点ノート】
シラバス用語、基本概念の理解、実務への応用ポイント
はじめに
セキュリティ運用の世界では、商用製品が数百万円単位で導入されるのが当たり前です。しかし、個人開発者や小規模チームが自分のVPSを守りたいとき、その選択肢はほとんどありません。
この課題を解決するために、私は4つのセキュリティOSSを開発し、GitHubで公開しました。すべてPython + Rustのハイブリッド構成で、1コア / 512MBの最小VPS環境でも動作します。
4つのOSSプロダクト
EXkururuIPROS — 次世代IPS/NDRセンサー
EXkururuIPROSは、軽量な次世代IPS(侵入防止システム)兼NDR(ネットワーク検知・応答)プラットフォームです。Rustで書かれたセンサーコアはわずか4.6MBのメモリで動作し、フロー解析による異常検知(ポートスキャン、ビーコニング、EWMA異常値検知)を行います。
攻撃防御率は公開テストで95.78%、最新のトレンドベンチマークでは99.75%を達成しています。誤検知率はわずか0.36%です。Django製のダッシュボードでは、24時間のリクエストタイムライン、脅威インテリジェンス連携、アラートグループのトリアージ、WAFポリシー管理、KPIトラッキング、リプレイラボ(A/Bテスト)まで一通りの機能を備えています。
WebSocket対応のリアルタイム更新、Prometheus メトリクス出力、Discord/Slack通知にも対応しており、小規模ながら本格的なSOC運用が可能です。
EXkururuXDR — 軽量XDR相関エンジン
EXkururuXDRは、複数のセキュリティ製品からのイベントを統合・相関分析し、インシデントに変換するXDR(Extended Detection and Response)エンジンです。FastAPI + SQLiteで構築されており、Djangoから独立して動作します。
IPSとEDRからのイベントをcommon_security_event_v1という共通スキーマに統一し、3種類の相関戦略(レガシーグルーピング、ルールベースフィルタリング、NDR+EDRクロスプロダクトチェーン)で分析します。
Rust製の相関エンジンを搭載しており、Pythonの約12倍の高速化と55%のメモリ削減を実現しています。インシデント管理、ケース管理、アクション管理、オーケストレータによる自動対応ディスパッチまでを1つのマイクロサービスで完結させています。
EXkururuSOC — セキュリティ運用オーケストレーター
EXkururuSOCは、IPS/EDR/XDRの統合運用を担うSOC(Security Operations Center)オーケストレーションサービスです。42のAPIエンドポイントを持ち、ポリシー管理、改善候補の評価、ロールアウト(段階的展開)、ランブック実行、アナリストフィードバックループを提供します。
特筆すべきは「フィードバック→候補自動生成→評価→承認→ロールアウト」のライフサイクル管理です。アナリストが誤検知を報告すると、システムが自動的にルール改善候補を生成し、カナリーリリース→段階展開→フル展開の安全なロールアウトプロセスを経て本番適用されます。
Rust製のフィードバック候補生成エンジンにより、Python比で約6倍の高速化と24%のメモリ削減を達成しています。DBサイズはわずか172KBで、軽量サーバーでも問題なく運用できます。
EXkururuEDR — エンドポイント検知・応答エージェント
EXkururuEDRは、Linuxエンドポイント向けのEDR(Endpoint Detection and Response)エージェントです。プロセス、ネットワーク接続、永続化メカニズム(crontab、systemd等)、テンポラリファイルを収集し、YAMLルールベースで脅威を評価します。
Rust製のルールエンジンは、Python比で約80倍の高速化と47%のメモリ削減を実現しており、大量のイベントを低コストで処理できます。スタンドアロンサーバーのメモリは約36MBで、サーバーへの負荷は極めて軽量です。
プロセスkill、ファイル隔離、ホスト分離の自動レスポンス機能を備えつつ、デフォルトではdry-runモードで安全に動作します。
なぜ作ったのか
きっかけは、自分のVPSに対する日常的な攻撃でした。ポートスキャン、ブルートフォース、Webスクレイピング……商用のIPS/WAFを入れれば解決しますが、月額数万円のコストは個人開発者には厳しいものがあります。
「自分で作れば、自分のインフラは自分で守れる」という思いから開発を始めました。最初はシンプルなIPブロッカーでしたが、運用するうちに「検知だけでは不十分、相関分析が必要」「手動トリアージは限界がある、自動化が必要」「ポリシー変更の影響を事前検証したい」と課題が積み重なり、結果として4製品のフルスタックに発展しました。
商用製品との最大の違いは「1台のVPSで完結する」という設計思想です。Kubernetes不要、外部DB不要、追加ライセンス不要。SQLiteとファイルベースのスプールで十分な性能を出しつつ、Rustの高速処理でボトルネックを解消しています。
導入するとどうなるのか
4製品を統合した「4-Stack」構成で運用すると、以下のセキュリティ運用が自動化されます。
- リアルタイム攻撃検知:IPSがネットワークレベル、EDRがエンドポイントレベルで脅威を検知
- クロスソース相関:XDRが「ネットワーク異常 + エンドポイント異常」の組み合わせからインシデントを自動生成
- 自動トリアージ:SOCがインシデントの優先度を判定し、ランブックに基づいて対応を実行
- フィードバック学習:誤検知報告から自動的にルール改善候補を生成し、安全にロールアウト
- ダッシュボード:24時間のトラフィック推移、トップIP/URI、レスポンスタイム、KPI達成状況を一目で把握
追加メモリは約146MB(XDR: 57MB + SOC: 47MB + EDR: 36MB + IPS: 6MB)で、1.8GBのVPSでも余裕を持って運用できることを実証済みです。
導入方法
各リポジトリは独立して利用可能ですが、4-Stack統合が最も効果的です。
# 1. リポジトリをクローン
git clone https://github.com/kurumonn/EXkururuIPROS.git
git clone https://github.com/kurumonn/EXkururuXDR.git
git clone https://github.com/kurumonn/EXkururuSOC.git
git clone https://github.com/kurumonn/EXkururuEDR.git
# 2. 各サービスのvenvを作成
cd EXkururuXDR && python3 -m venv .venv && .venv/bin/pip install -e .
cd ../EXkururuSOC && python3 -m venv .venv && .venv/bin/pip install -e .
cd ../EXkururuEDR && python3 -m venv .venv && .venv/bin/pip install -e .
# 3. IPSセンサーのRustビルド
cd ../EXkururuIPROS/secops_rust/ips_sensor
cargo build --release
# 4. 4-Stack起動
export XDR_API_ADMIN_TOKEN="your-strong-token"
bash scripts/run_4stack_stack.sh start
詳細な設定オプション(ポート変更、認証トークン、nftables連携、SOCポリシー等)は各リポジトリのREADMEを参照してください。
VPS本番運用の評価と感想
現在、これら4製品は実際のVPS(Oracle Linux / 2vCPU / 1.8GB RAM)で本番稼働しています。導入から数週間の運用を経て、いくつかの所感を共有します。
安定性は申し分ありません。IPSセンサーのRustプロセスは6MB前後で安定しており、メモリリークの兆候はゼロです。Python側の3サービスもuvicornの下で安定稼働しています。VPS再起動後もsystemdとdocker composeの組み合わせで自動復旧します。
検知精度については、日々のスキャンやボットの攻撃をほぼ完全に捕捉できています。特にフロー解析によるビーコニング検知は、従来のシグネチャベースでは見逃していたC2通信パターンを検出できました。NDR+EDRのクロスプロダクトチェーン相関は、単一ソースでは気づけない複合攻撃の検知に極めて有効です。
運用コストは事実上ゼロです。追加のクラウドサービスもライセンスも不要で、既存のVPSリソースの約7%を消費するだけです。商用SOCプラットフォームの月額コストと比較すると、その差は歴然です。
改善点としては、ダッシュボードのUI/UXにまだ粗い部分があること、ドキュメントの充実が必要なこと、そしてWindows/macOS対応のEDRエージェントがまだないことが挙げられます。これらは今後のロードマップで対応予定です。
4-Stack連携シナリオテスト — 本番環境での実証
2026年3月12日、本番VPS環境で4製品のフル連携シナリオテストを実施しました。外部からのポートスキャン攻撃を想定し、IPS検知→XDR相関→SOCフィードバックの一連のフローを検証しています。
テストシナリオ:ポートスキャン攻撃チェーン
| Step | Service | Action | Result |
|---|---|---|---|
| 1 | EDR | SSH/RDP/SMBポートプローブ + nmap検知(4イベント) | inserted: 4 |
| 2 | IPS → XDR | ブロックイベントをcommon_security_event_v1で転送 | accepted: 1, inserted: 1 |
| 3 | EDR → XDR | スキャン確認 + 不審プロセスを転送 | 2件 inserted |
| 4 | XDR | Rust相関エンジンで500イベントスキャン | 完了(1秒未満) |
| 5 | SOC | アナリストがtrue_positiveフィードバック登録 | feedback_id発行 |
テスト結果の所感
連携の堅牢性:IPS→XDR、EDR→XDR、XDR→SOCのデータフローがcommon_security_event_v1スキーマで統一されている点が秀逸です。ソースごとのトークン認証(X-Source-Key / X-Source-Token)により、どの製品からのイベントかをXDRが正確に識別できます。商用XDRでもこのレベルのソース認証を持たない製品は少なくありません。
Rust相関エンジンの実力:500イベントのスキャンが瞬時に完了します。3つの相関戦略(レガシーグルーピング、ルールベース、クロスプロダクトチェーン)を並列実行しても、処理時間は体感で1秒以下です。Python版の12倍という高速化は、リアルタイム運用で決定的な差になります。
SOCフィードバックの完成度:true_positive/false_positiveを登録すると、即座にfeedback_idが発行され、後続の候補自動生成パイプラインに投入されます。この「検知→確認→改善」のループが自動化されている点は、個人開発のOSSとしては異例の完成度です。
課題と今後:今回のテストでは相関エンジンが新規インシデントを生成しませんでした。これはベンチマークデータが大量に蓄積された状態で同一IPからの少数イベントでは相関閾値に達しなかったためです。実運用ではイベント蓄積とともに相関精度が向上していくチューニングが必要です。また、XDRのイベント参照APIは認証スキーマがイベント投入とは異なるため、統合ダッシュボードからの参照にはadmin権限の設計整理が今後の改善点です。
本番メモリ計測(テスト後)
| Service | RSS | 備考 |
|---|---|---|
| EXkururuXDR | 56.8 MB | Rust相関エンジン + 70,000件超のイベント蓄積 |
| EXkururuSOC | 47.1 MB | 42 APIエンドポイント稼働中 |
| EXkururuEDR | 35.7 MB | Rustルールエンジン統合後 |
| EXkururuIPROS | 6.4 MB | Rustセンサー(フロー解析含む) |
| 合計 | 146.0 MB | VPS全体の約8% |
まとめ
EXkururuシリーズは「個人開発者が自分のインフラを自分で守る」ためのセキュリティスタックです。商用製品の1/100のリソースで、SOC運用に必要な検知・相関・対応・学習のサイクルを回すことができます。
すべてGitHubで公開していますので、興味のある方はぜひクローンして試してみてください。フィードバックやコントリビューションも歓迎します。
コメント(0件)
まだコメントはありません。最初のコメントを投稿してください!