個人開発のオープンソースIPS「kururuIPROS」を公開しました

目次
NOUMIN ENGINEERING TECH GUIDE

💬 くるるちゃんのワンポイント図解解説

【技術背景・解説】
この記事(個人開発のオープンソースIPS「kururuIPROS」を公開しました)におけるIT技術の基本概念と重要ポイントを、わかりやすく整理・解説しています。

【アイキャッチ図解のポイント】
構成要素とデータフローを視覚的に整理し、初心者でも要点を掴みやすいグラフィック構造で表示しています。

【資格・要点ノート】
シラバス用語、基本概念の理解、実務への応用ポイント

2026年3月9日、自作のオープンソースIPS(侵入防止システム)プロジェクト「kururuIPROS」をGitHubで公開しました。本記事では、このプロジェクトの概要・技術的な特徴・想定される活用シーンについて紹介します。

kururuIPROSとは

kururuIPROSは、軽量なIPSセンサーとWebダッシュボードを組み合わせた、オープンソースの侵入検知・防止システムです。もともと自分が運用していたDjangoベースのセキュリティオペレーション基盤から、IPSセンサーと監視ダッシュボード部分だけを切り出し、誰でも単体で使える形に再設計したものです。

商用IDS/IPS製品の全機能を置き換えるものではありませんが、個人サーバーや中小規模のVPS環境において、不正アクセスの検知とブロックを手軽に始めるための実用的なツールを目指しています。

アーキテクチャの特徴

本プロジェクトの大きな特徴は、依存関係を極限まで絞った軽量構成です。ダッシュボード側はPythonのASGIアプリケーションとSQLiteだけで動作し、PostgreSQLやRedisといった重量級のミドルウェアは不要です。uvicornで起動すればすぐにダッシュボードとAPIが使えるようになります。

一方、ネットワーク上で実際にトラフィックを監視するセンサー部分はRustで実装しています。Rustを選んだ理由は、パフォーマンスとメモリ安全性の両立です。センサーはnginxのアクセスログを解析し、検知結果をダッシュボードAPIへ送信します。nftablesとの連携により、検知したIPアドレスを実際にファイアウォールレベルでブロックすることも可能です。

センサーとダッシュボード間の通信は、HMAC-SHA256による署名認証で保護されています。センサーが送信するイベントにはX-IPS-*ヘッダによる署名が付与され、改ざんや成りすましを防止します。管理APIへのアクセスはBearer tokenによる認証が必須で、デフォルトでは20文字以上のトークン長が要求されます。

3層判定エンジンと段階的緩和

kururuIPROSの検知ロジックは、ルールベースの判定、User-Agent分類、脅威インテリジェンス照合の3層で構成されています。

まずルールエンジンがアクセスパターンを評価し、該当するルールに基づいてイベントを生成します。次にUA分類器が、リクエストのUser-Agentをbrowsercrawlertoolingscannerinternalの5カテゴリに分類します。HeadlessChrome、python-requests、Scrapyなどの自動化ツールや空UAも検知対象です。さらに、AbuseIPDB、Spamhaus、GreyNoise、TorExitなどの外部脅威インテリジェンスと照合し、既知の悪性IPからのアクセスにはseverityを引き上げます。

ブロック判定後のアクションも段階的です。allow → observe → limit → challenge → block という緩和ラダー(mitigation ladder)を採用しており、いきなり全遮断するのではなく、状況に応じて段階的に対応を強めることができます。初期導入時はdry-runモードで実際のブロックを行わずに検知だけを確認でき、安全に運用を開始できます。

SOC運用を意識した設計

単なるログ可視化に留まらず、SOC(セキュリティオペレーションセンター)運用を意識した機能を備えています。rule → event → incident → triage という一連のチェーンを追跡でき、高/重大レベルのイベントからインシデントが自動生成されます。管理APIからtriage(トリアージ)やclose、reopenの操作を記録することもできます。

SCAN-*系のシグネチャはcampaign単位で集約され、同一攻撃キャンペーンが大量のアラートを生成しても、1件のインシデントに集約される仕組みです。これにより、アラート疲れを軽減しつつ、重要な脅威を見逃さない運用が可能になります。

また、誤検知が発生した場合のフィードバック機構も実装しています。管理APIからfeedbackを登録すると、一定の閾値を超えた場合にルールの自動調整(override)が行われ、運用しながら検知精度を改善していくことができます。

公開向けのセキュリティハードニング

オープンソースとして公開する以上、デフォルトで安全側に倒す設計を徹底しています。バインドアドレスは127.0.0.1固定がデフォルトで、うっかり外部に公開してしまうリスクを低減しています。全レスポンスにセキュリティヘッダ(X-Content-Type-Options、X-Frame-Options、Referrer-Policy、Permissions-Policy)を付与し、CORS設定はデフォルト無効です。

X-Forwarded-Forの偽装対策も実装しており、信頼できるプロキシを明示的に指定しない限り、XFFヘッダは無視してソケットの接続元IPのみを使用します。管理APIのアクセスは監査ログに記録され、保持期間を過ぎたログは自動削除されます。

E2E評価の実測値

公開可能な合成テストデータ(実IPや個人情報を含まない)を同梱しており、誰でも検知精度を再現・検証できます。現行の実測値は以下の通りです。

  • 不正アクセス防御率: 95.78%
  • 正常アクセス誤検知率: 0.36%(1%未満)

通知・監視連携

Discord、Slack、Grafana(Webhook)への通知チャネルをサポートしており、ブロック発生時や高severityイベント検知時に即座に通知を受け取れます。Prometheus形式のメトリクスエンドポイントも提供しているため、既存のGrafanaダッシュボードに組み込んで長期的な可視化を行うことも可能です。

GitHub公開について

kururuIPROSはGitHubで公開しています。リポジトリにはGitHub Actions CIも同梱されており、Python側の構文チェックとRustセンサーのcargo checkが自動実行されます。負荷試験スクリプト、障害注入テスト、ロールバック手順書も含まれているため、導入前の検証から運用まで一通りカバーしています。

おわりに

kururuIPROSは、大規模な商用製品には手が届かないが、自分のサーバーを最低限しっかり守りたいという個人開発者やスモールチーム向けのツールです。SQLiteベースの軽量構成でありながら、SOC運用品質に寄せた検知・対応フローを備えている点が特徴です。

今後はPostgreSQL対応、GeoIP/ASNエンリッチメント、WebSocketによるリアルタイム更新、ルールエディタUIなどの拡張を検討しています。興味のある方はぜひGitHubリポジトリをご覧ください。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ

コメント(0件)

まだコメントはありません。最初のコメントを投稿してください!

コメントを投稿