個別では見えない攻撃を、全システム横断のログ相関で検知する仕組みを作った #
ファイアウォールのポートスキャン、VPNの認証失敗、アプリケーションのログイン試行。個々のイベントは重大度「低」。しかし同一IPがこの3つの層に同時に出現したとき、それは偶然ではなく攻撃キャンペーンである。BASTIONに多層相関エンジンを実装し、実際の攻撃で3層横断のキャンペーン検知を実証した。
個別機器の監視には構造的な死角がある #
BASTIONはこれまで、機器ごとにログを分析して異常を検知してきました。ファイアウォールのポートスキャン、Webサーバーへのbot攻撃、ADの認証失敗——それぞれの機器で閾値を超えたらブロックする。
しかしこの方式では、閾値未満の攻撃を組み合わせたキャンペーンが検知できません。
この「個別では見えないが、横断すると見える」パターンを検知するために、BASTIONに多層相関エンジンを実装しました。
多層防御の構造 #
BASTIONが監視するインフラは、5つの防御層で構成されています。
| 層 | 防御対象 | 検知するイベント |
|---|---|---|
| L1: ネットワーク境界 | ファイアウォール | ポートスキャン、DDoS、不正パケット |
| L2: VPN / リモートアクセス | VPNゲートウェイ | TLSエラー、認証失敗、証明書探査 |
| L3: 認証基盤 | AD / LDAP | ログイン失敗、アカウントロック、資格情報詰め込み |
| L4: アプリケーション | Webサーバー / クラウドアプリ | Botスパム、脆弱性スキャン、ログイン試行 |
| L5: エンドポイント | Windowsクライアント | PowerShell不審実行、USB接続、権限昇格 |
従来はこの5層をそれぞれ独立して監視していました。多層相関エンジンは、全層のログを同一IPで紐づけて横断的に追跡します。
トレースの蓄積と相関 #
多層相関エンジンの核心は、攻撃元IPの「トレース(痕跡)」を層横断で蓄積する仕組みです。
15分ごとの定期分析 → 各層のログからIPを抽出 → トレースレジストリに「いつ、どの層で、何を検出されたか」を記録 → 複数の層に出現するIPを自動検出 → 閾値を超えたらキャンペーン判定 → 自動ブロック
個別の層では重大度「低」でも、複数の層にトレースが蓄積すると相関スコアが上昇し、キャンペーンとして自動ブロックが発動します。
トレースは減衰する #
トレースは永続しません。一定時間更新がなければ自動的に削除されます。攻撃者がスキャンをやめれば痕跡は消え、誤検知のリスクを低減します。逆に、短時間に複数の層でトレースが重なれば、相関スコアが急上昇してブロックが発動します。「記憶するが、忘れる」設計です。
実際のキャンペーン検知 #
多層相関エンジンを実装した直後、実際の攻撃でキャンペーン検知が発動しました。
多層相関キャンペーン検知
攻撃元IP: xx.xxx.156.12
出現層 (3層): L1_network, L3_auth, L4_app
延べイベント数: 120
同一IPが複数の防御層で検出されました。
このIPは以下の行動パターンを示していました。
| 層 | 検出内容 | 個別判定 |
|---|---|---|
| L1: ネットワーク境界 | ファイアウォールでブロックされたアクセス | — (通常のノイズ範囲) |
| L3: 認証基盤 | A認証関連イベントを検出 | — (個別では閾値未満) |
| L4: アプリケーション | アプリケーション層でアクセスを検出 | — (個別では閾値未満) |
どの層でも単独では「低」判定。しかし3層に同一IPが出現したことで、多層相関エンジンがキャンペーンと判定し、自動ブロックが発動しました。
なぜこれが重要なのか #
Fail2Banとの根本的な違い #
Fail2Banは優れたツールですが、単一ログファイルの閾値判定しかできません。「nginx-error.logで403が10回出たらBan」。これは1つの機器の1つのログに閉じた判断です。
多層相関エンジンは、全機器のログを横断して同一IPの行動パターンを追跡します。個別の機器では検知できない「低頻度・多層型」の攻撃キャンペーンを、ログの文脈から検知します。
接続する機器が増えるほど精度が上がる #
BASTIONに新しい機器のsyslogを接続すると、多層相関の「層」が1つ増えます。層が増えるほど、同一IPの行動パターンがより多くの角度から観測され、キャンペーン検知の精度が向上します。
これは従来の監視ツール(機器ごとに独立した分析)にはない特性です。BASTIONでは、監視対象が増えるほどシステム全体の防御力が上がる。
「syslogを向けるだけ」の設計が前提条件だった #
第4回の記事で実装した「syslogを向けるだけで機器種別を自動判定」する仕組みは、多層相関のためのオンボーディング設計でもありました。新しい機器を追加する際に設定ファイルの編集や機器登録が不要なので、顧客環境の全機器を短期間でBASTIONに接続できます。接続が容易であることが、多層相関の実用性を支えています。
安全設計 #
多層相関で自動ブロックする以上、誤検知のリスク管理は重要です。
| 安全機構 | 目的 |
|---|---|
| トレースの自動減衰 | 一定時間更新のないトレースは自動削除。古い痕跡による誤判定を防止 |
| ホワイトリスト照合 | プライベートIP・自社IP・DNSサーバーは絶対にブロックしない |
| 既存ブロックとの重複チェック | 既にブロック済みのIPを二重ブロックしない |
| 24時間自動解除 | 誤ブロックでも24時間で自動復旧 |
| Slackからの即時解除 | 業務影響時にSlackコマンドで即座に解除可能 |
まとめ #
BASTIONに多層相関エンジンを実装し、全システムのログを横断して攻撃キャンペーンを自動検知する仕組みを構築しました。個別の機器では閾値未満の攻撃でも、複数の防御層に同一IPが出現すればキャンペーンとして判定し、自動ブロックします。
実装直後に実際の攻撃で3層横断のキャンペーン検知が発動し、概念実証が完了しました。BASTIONは「個別機器の監視ツール」から「全システム横断の攻撃キャンペーン検知エンジン」に進化しています。
BASTIONは閉域環境でAIセキュリティ監視を実現するサービスです。
貴社のインフラ全体をBASTIONに接続することで、多層相関による防御が有効になります。