
みなさまこんにちは!SB C&SでFortinet製品のプリセールスを担当している草野です。
FortiAnalyzerは「ログ保管装置」というイメージを持たれがちです。確かにログの長期保存やレポート出力は主要機能のひとつです。
しかし実際にはそれだけではありません。FortiAnalyzerにはイベントハンドラーという機能があり、複数のログを組み合わせて攻撃の兆候を自動検知できます。
イベントハンドラー機能を活用すると、ログ監視やアラート対応を自動化し、運用負荷を大幅に削減できます。
本記事では、イベントハンドラーの概要および設定例についてご紹介します。
免責

イベントハンドラーで何ができるのか
では、イベントハンドラーを使うと具体的に何ができるのでしょうか。
イベントハンドラーは、単にログを検索・抽出する機能ではありません。
ログの発生回数や発生順序といった相関関係をもとに分析を行い、「異常なパターン」を検知する仕組みです。
例えば次のような検知が可能です。
・一定時間内に特定のログが一定回数を超えたらアラート(閾値検知)
・あるイベントに加え、別のイベントが続いたら検知(相関分析)
単発ログではなく「振る舞い」や「傾向」を捉えられる点が、一般的なログアラートとの大きな違いです。
実際のルール作成画面は以下のとおりです。複数のログをAND条件やOR条件などを組み合わせて指定することができます。


さらに、イベント条件の定義においては、ログの発生回数や一定期間内の出力頻度をもとに条件を設定することが可能です。

これらのルールをイベントハンドラーとして定義することで、イベントの検知および通知が可能となります。
なお、デフォルトでも多数のイベントハンドラーが用意されており、通知を有効化するだけで運用を始められます。

MITRE ATT&CKフレームワークとの連携
さらに、イベントハンドラーはMITRE ATT&CKにマッピングして可視化することができます。
MITRE ATT&CKは、サイバー攻撃で用いられる戦術や手法を体系化したフレームワークです。
これにより、「どの攻撃手法(テクニック)をどの程度検知できているか」を棚卸ししやすくなり、攻撃の流れをチェーン(連鎖)としてストーリー性をもって理解できるようになります。
また、検知した攻撃手法には色が付与され、検知回数が増えるごとにより濃く表示されます。

カバー範囲タブでは、MITRE ATT&CKマトリックスに基づき、イベントハンドラーが対応している攻撃テクニックを一覧で確認できます。
各テクニックを選択すると、関連付けられたイベントハンドラーを確認でき、どの検知ロジックが該当テクニックに紐づいているかを把握できます。
これにより、イベントハンドラーの設定内容をATT&CKの体系に沿って整理・確認することが可能です。

次に、実際にイベントハンドラーの設定を行い、イベントが生成されるまでの流れをご紹介します。
実践例①:ブルートフォース攻撃の検知(デフォルトルール)
最初の例として、FortiGate本体へのブルートフォース攻撃の検知を取り上げます。
イベントハンドラーを使えば、「連続した異常ログイン試行」を自動検知し、管理者へ通知できます。
このルールはデフォルトで用意されているため、通知を有効化するだけですぐに利用可能です。

以下がイベントハンドラーの編集画面となります。
この定義では、コリレーション(相関)シーケンスとして、FortiGateへのログイン失敗が一定回数以上発生し、その後にログイン成功が確認されない場合を検知します。

なお、イベントハンドラーの条件に一致した際に「インシデント」を生成するには、上記画面の「インシデント自動生成」を有効にします。
これにより、条件に合致したログが検知されたタイミングでインシデントが自動的に作成されます。
イベントハンドラーによるインシデントの自動生成は、初動対応の迅速化や対応漏れの防止に有効です。
次に通知プロファイルを指定します。

通知プロファイルは事前に作成しておくことで、メールやSNMPを利用したアラート通知が可能となります。

実際にFortiGateへのブルートフォース攻撃を検知した場合の動作が以下となります。
先ほど「インシデント自動生成」を有効にしたことで、該当イベントが「インシデント」画面に表示されるようになりました。

さらに、イベントモニタ上で詳細情報を確認できます。

通知プロファイル設定により、以下の通りメールでも通知が行われます。

実践例②FortiGateのメモリ閾値監視(カスタムルール)
次に、FortiGateのメモリ使用率が閾値を超えた場合の検知例を紹介します。
高負荷は障害予兆であるだけでなく、状況によってはDoSなどの兆候として現れることもあるため、早期検知が有効です。
本ルールはデフォルトで定義されていないため、手動で作成する手順とあわせて紹介します。
まずイベントハンドラーの新規作成を行い、新規ルールを作成します。

FortiGateのイベントログを対象とする設定を行い、その上でメモリの閾値を「70%より大きい」ものとします。

次にイベント条件の設定となります。
FortiGateは5分ごとにメモリ使用率をログ出力するため、今回は30分以内に5件以上のログが生成されることを条件としています。
このように設定することで、一時的な増加ではなく、一定期間にわたりメモリ使用率の高負荷状態が継続している事象を検知できます。

最後に作成したルールを新規作成のイベントハンドラーに埋め込むことで設定が完了します。
※必要に応じて、インシデント自動生成や通知プロファイルを有効にします。

実際にFortiGateのメモリ使用率が設定した閾値を超えた場合、以下のようにインシデントが生成されます。

最後に
FortiAnalyzerは、単なるログ保管装置ではありません。イベントハンドラーを活用することで、ログの回数や関係性から異常な挙動を検知し、攻撃の兆候を早期に把握できます。
まずは既存のデフォルトルールを有効化するところから始め、段階的にカスタムルールを追加していくことをおすすめします。
FortiAnalyzerを単なる「ログ保管装置」で終わらせるのではなく、「検知基盤」として積極的に活用していきましょう。
なお、FortiAI機能を利用してイベントハンドラーを自動生成することも可能です。FortiAIの詳細については、以下のおすすめ記事をご参照ください。
最後までお読みいただき、ありがとうございました!
※本ブログの内容は投稿時点での情報となります。今後アップデートが重なるにつれ
正確性、最新性、完全性は保証できませんのでご了承ください。
他のおすすめ記事はこちら
著者紹介
SB C&S株式会社
技術本部 技術統括部 第3技術部 2課
草野 孝


