0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI WAF 可視化と生成AIによる不正侵入検知

0
Last updated at Posted at 2026-10-31

概要

Oracle Cloud Infrastructure(OCI)のロードバランサーに連携したWAFのアクセス数とブロック数をZabbixで可視化し、通信傾向に変化があればOCI LoggingのログをOCI Generative AIで分析して不正侵入検知する仕組みを構成しました

目的は、管理者が「何が起きているか」を把握し、調査を始めるきっかけを得ることです。メトリックで変化の候補を絞り、ログを調査してから通知します。

構成図

ロードバランサーに適用するOCI WAFのメトリックやログを取得して生成AIで解析します

項目 構成
Web通信監視 OCI WAF
検知、ログ解析 OCI Generative AI
WAFメトリック OCI Monitoring
WAFログ OCI Logging
通知 OCI Notifications
監視分析 Virtual Machine

構成

フロー

収集したメトリックを一度SQLiteに保存し、そのデータを可視化と異常候補の評価で共有します。

メトリック収集

対象WAFのresourceIdで絞り込み、actionとcountryCodeごとに1分間の合計を取得しSQLiteに保持します

集計値 算出方法
国別アクセス数 その国の各actionの値を合計
国別ブロック数 その国のactionがblockの値を合計
全体アクセス数 国別アクセス数を合計
全体ブロック数 観測できた国別ブロック数を合計

Zabbix送信

Zabbixには、1分ごとの全体値と国別値をまとめたデータを送信します。受信側はZabbixトラッパーです。

Zabbixにてグラフ表示

Zabbixにホスト作成しアイテムで定義してグラフ表示します

生成AIでメトリック評価

AI評価では直近15分を評価対象とし、1時間の保存範囲にあるそれより前のデータを比較対象にします

AI評価に進むため、次のような条件を設けました

条件 本構成の値
直近15分の観測率 80%以上
比較対象の観測データ 30分以上
比較対象の観測率 80%以上
最終取得の鮮度 10分以内

不足する場合はinsufficient_data相当として通常の生成AI呼び出しを見送ります
生成AI評価の役割は次のように分けました

判定 意味 メトリック評価後の動作
normal 条件に該当する通信変化の候補なし Loggingを検索しない
watch 詳細確認する通信変化の候補あり Loggingを検索する
insufficient_data 評価材料が不足 通常経路のログ調査を保留
investigate 優先調査を要する兆候 メール通知の対象となるのは最終ログ評価でこの判定になった場合

メトリック段階の最終判定は、通常normalまたはwatchです。生成AIがブロック減少や小幅変動をwatchと表現しても、ローカル条件に該当しなければnormalへ補正します。補正後の判定がnormalなら、Logging検索・集計・ログAI分析は行いません

以下はwatchを許可する条件です。通常経路ではAIの評価とローカル補正を経て最終判定を決めます。バースト条件では、AIが正常寄りに評価しても調査候補を残す処理を設けています。

候補 条件の例
1分間の急増 1分1000件以上、比較対象の平均の5倍以上、最大値の2倍以上
継続的な増加 直近15分の1分平均が50件以上かつ比較平均の3倍以上で、その閾値以上の分が3分以上
実質的なブロック増加 直近15分で10件以上、比較対象よりブロック率が5パーセントポイント以上上昇し、 ブロックが発生した1分枠が3つ以上観測

OCI LoggingでWAF Loggingを検索

ログ調査では、メトリック評価に対応する時間帯と対象WAFのOCIDで検索します。集計時刻とログ時刻の境界差に備え、評価対象期間の1分前から検索します。

生成AIでログ分析

また、最新200件を取得できても、200件が期間全体の件数とは限りません。大量アクセス時に最新ページだけを調べると、過去の集中や全体比率を誤解するためです。
本構成では、詳細確認用のサンプルに加え、Logging側のサーバー集計を利用します。

データ 用途
生ログのサンプル 具体的な送信元、パス、応答元、ルールの例を確認
1分単位の件数集計 短時間のアクセス集中を確認
送信元IPと時刻等でまとめた集計 同一IPの集中、異なるパスへのアクセス、拒否の継続を確認

ログでは、件数に加えて継続時間、送信元、パスの種類、既知の攻撃検知機能への一致を確認します。既知のルールIDの意味はローカルの定義を参照し、任意のルール名から攻撃種別を推測させません。

investigateを許可する条件の例

候補 本構成の初期条件
1分間の複数パスへの集中 同一IPで400・401・403・404が合計100件以上、異なるパス20種類以上
継続的な複数パスへのアクセス 同一IPで毎分50件以上の該当エラーが3分連続、計150件以上、異なるパス20種類以上
低速の複数パスへのアクセス 同一IPで期間内150件以上、異なるパス50種類以上、5分以上で観測
設定したログインパスへの拒否集中 同一IP・同一ホスト・同一パスで401・403が20件以上/分
分散したログインパスへの拒否 同一ホスト・同一パスで401・403が100件以上/分、送信元10IP以上
既知の攻撃検知機能への反復一致 合計5件以上かつ2分以上で観測、または1分間に20件以上
重点監視する攻撃検知機能への一致 明示した重大なルールIDへの一致
急激なアクセス集中 1分1000件以上で暫定基準からの倍率条件も満たす

OCI Notificationsで通知

通知条件は、通常の分析経路で最終ログ評価がinvestigateになった場合のみです

実際に通知文が作成された例です(一部情報をマスクしています)

【タイトル】[WAF][investigate] waf1 要調査
【本文】
判定: investigate
WAF名: waf1
WAF OCID: ocid1.webappfirewall.oc1.***
WAFリージョン: ***
ログ検索期間: 2026-10-28 15:30:00 JST ~ 2026-10-28 15:46:00 JST
事象ID: c918d1ab9c46***

【状況(AIによる要約)】
IP **.**.**.* が 3 分間に 179 件のリクエストを送信し、20 異なるパスをアクセス。
403 応答が多く、WAF ルール "waf_e2e_test" が一致。ログサンプルでは同 IP が
20 個のパスを連続でリクエストし、すべて 403。リクエスト数とエラー率が基準を
超えているため、スキャンや不正アクセスの可能性がある。

【ローカル判定条件への一致】
継続した探索候補 / 件数=179 / 送信元IP=**.**.**.* / パス種類数=20

【参照根拠】
{"id": "G01", "metric": "sampled_entries", "value": 200}
{"id": "G02", "metric": "sample_top_client_ip", 
 "value": [{"value": "**.**.**.*", "count": 188},
           {"value": "**.**.**.*", "count": 6}, 
           {"value": "**.**.**.*", "count": 6}]}

【管理者の確認事項】
1. 1) **.**.**.* の過去 24 時間のリクエスト履歴を確認し、
      同様のパターンが継続しているか調査。
2. 2) 403 応答の詳細(レスポンスヘッダーやボディ)を取得し、WAF のブロック理由を特定。
3. 3) 同 IP からの 200 応答があるか確認し、認証成功や正常アクセスの有無を検証。

【制約・未確認事項】
- サンプルは最新 200 件のみで、全体の分布は不明。ログ欠損や遅延の可能性がある。
- IP **.**.**.* の行動が必ずしも攻撃を示すわけではなく、
  テストや自動化ツールの可能性もある。
- ログの反映遅延・取得上限・誤検知の可能性があります。
- 不審なIP/URLはログ上のデータです。自動遮断やURLへのアクセスは行っていません。
推定AI料金 [メトリック分析]: USD 0.00031906
推定AI料金 [WAFログ分析]: USD 0.00056670

同一WAF・同一の判定条件/ルールの組合せは、設定した間隔で重複通知を抑制します。

生成AI費用を把握するため生成AI呼び出しごとに、APIが返す入力・出力トークン数と設定した単価から推定料金を計算します

まとめ

OCI WAFのメトリックを収集し、Zabbixでアクセス数やブロック数を全体・国別に可視化する仕組みを構築しました。さらに、メトリックの変化から異常候補を抽出し、OCI Loggingのログを生成AIで分析して、調査が必要な攻撃兆候をメールで通知します。数値による判定条件と生成AIの分析を組み合わせ、過剰な通知を抑えながら、管理者が調査を始めるきっかけを提供します。今後は判定条件の改善や生成AIによる遮断の仕組みを検討したいと考えています

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?