こんにちは!インフラやセキュリティの世界へようこそ。
初めてファイアウォールやSIEM(シエム)という言葉を聞くと、「なんだか難しそうだな…」「英語のログがいっぱい流れてきて頭がクラクラしそう…」と感じてしまうですよね。
でも、安心してください!セキュリティの仕組みの本質は、私たちが普段暮らしている「お家の防犯対策」とまったく同じなんです。
今日は、ファイアウォールのログをSIEMに集めて、隠れた泥棒(攻撃者)を見つけ出す「相関分析」の仕組みについて、身近な例えを交えながら一歩ずつ優しく紐解いていきましょう!
—
1. 家の玄関とファイアウォール、そして「防犯カメラのノート」
まずは、私たちが日々使っているインターネットの世界を、一軒家での暮らしに例えてみましょう。
- インターネットの世界 = 外の世界(不特定多数の人が行き交う道路)
- あなたのサーバー(システム) = あなたの大切なご自宅
- ファイアウォール = 家の頑丈な玄関のドアと、鍵付きの門
ファイアウォールは、外からやってくる怪しい人(通信)に対して、「あなた、誰ですか?」「この家に入っていい用事がありますか?」とチェックして、不審者を追い返すお仕事をしてくれます。
さて、このファイアウォールには、「誰がドアをノックしたか」「何時にガチャガチャと鍵を試したか」を記録するノート(ログ)機能がついています。
ファイアウォールログは「ただのメモの山」
ファイアウォールが吐き出すログは、実はこんな風にすごくシンプルです。
2023-10-25 02:14:05 ALLOW TCP 192.168.1.50 -> 10.0.0.5 dport=80
2023-10-25 02:14:10 DROP UDP 203.0.113.50 -> 10.0.0.5 dport=53
2023-10-25 02:14:12 DROP TCP 203.0.113.50 -> 10.0.0.5 dport=22
2023-10-25 02:14:13 DROP TCP 203.0.113.50 -> 10.0.0.5 dport=3389
英語ばかりで難しそうに見えますよね? でも、右側の dport= というのは「どの部屋のドアノック(ポート番号)を叩いたか」を表しています。
80 はリビング(Webサイト)、22 は裏口の倉庫(SSHという管理者用リモート接続)、3389 はパソコン部屋(リモートデスクトップ)のようなイメージです。
ここで、よく見てください。
203.0.113.50 という見知らぬ人物が、たった1秒の間に、裏口の鍵をガチャガチャ試したり、パソコン部屋の窓をドンと叩いたりしていますよね。
これ、「泥棒があなたの家を下見して、どこから侵入できるか総当たりで探っている(ポートスキャン)」瞬間のログなんです!
—
2. なぜ「SIEM(シエム)」が必要なの?
さて、ここで一つの問題が発生します。
あなたの家がすごく大きくて、玄関のドアだけでなく、勝手口や窓、ベランダにもそれぞれ防犯カメラとノートがあったとします。
- 玄関のノート:「100万行のデータ」
- 勝手口のノート:「50万行のデータ」
- サーバーのノート:「300万行のデータ」
人間がこれらすべてのノートを1ページずつめくって、「おや、さっきの不審な動きと、あっちの窓の傷が繋がっているぞ…」と気づくことができるでしょうか?
絶対に無理ですよね。目が回ってしまいます。
そこで登場するのが SIEM(Security Information and Event Management) です!
SIEMは、いわば「家じゅうの防犯カメラの映像とノートを全部一箇所に集めて、AIや賢いシステムに24時間監視させる中央警備室」のようなもの。
バラバラの場所にあるファイアウォールやサーバーのログを一つに集め、「この動きとこの動きが合わさったら、事件だ!」と自動で見つけて知らせてくれるのです。
—
3. SIEMの「相関分析」で泥棒を現行犯逮捕する
SIEMの真骨頂は、単にログを集めるだけではなく、「相関分析(そうかんぶんせき)」ができる点にあります。
相関分析とは、「一見するとただの些細な出来事(点)を繋ぎ合わせて、一つの大きな事件(線)としてあぶり出す技術」です。
泥棒の手口に例えてみましょう
1. 第1のステップ(下見):泥棒が家の周りをうろつき、鍵がかかっているか全窓を触って確かめる(ファイアウォールでブロックされた大量のアクセス)
2. 第2のステップ(こっそり侵入成功):運悪く、鍵の閉め忘れていた古い窓から侵入されてしまう(ファイアウォールをすり抜けた不正アクセス)
3. 第3のステップ(暴走):家の中で金庫を開けようと暴れ回る(サーバー内での異常なコマンド実行)
これらを別々に見ていると、「まぁ風で窓が揺れたのかな?」で見過ごしてしまうかもしれません。しかし、SIEMの相関分析ルールを設定しておけば、「短時間に大量のアクセス拒否(ブロック)が発生した直後に、そのIPアドレスからログイン成功のログが出たら、アラートを鳴らす!」という連携プレイが可能になります。
—
4. 実践!SIEM(Elasticsearch / Splunk等)での監視ルール設定例
それでは、実務の現場でどのようにこの監視ルールを書くのか、少しだけコード(設定ファイル)を覗いてみましょう。
ここでは、オープンソースのSIEMなどでよく使われる、疑似的な相関ルールの設定例を日本語のコメント付きで紹介します。
# 泥棒のドアガチャ(ポートスキャン)を検知してアラートを出すルールの例
rule_name: "Detect_Port_Scanning_And_BruteForce"
description: "短時間に同一の外部IPから複数の異なるポートへアクセス拒否が発生したかを検知します"
# 監視するデータの条件
trigger_condition:
# ファイアウォールでブロックされたログを対象にする
action: "DROP"
# 時間の窓口(例: 60秒以内)
time_window: 60 seconds
# 条件:同一の送信元IPアドレスから、異なる宛先ポート(dport)へのブロックが「15回以上」あった場合
group_by: "source_ip"
threshold:
distinct_count: "destination_port"
operator: "greater_than_or_equal"
value: 15
# 検知した時のアクション
actions:
- send_slack_alert:
channel: "#security-alerts"
message: "【警告】不審なIP ({{ source_ip }}) からポートスキャンを検知しました!ファイアウォールでの自動ブロックを検討してください。"
このように設定しておくと、夜中に泥棒が下見に来た瞬間に、Slackなどのチャットツールへ「ピコーン!」とスマートフォンに通知を飛ばすことができるようになります。
—
5. 現場のプロからのアドバイス:ログ設計の落とし穴
最後に、現場でインフラやセキュリティの構築をする際につまずきやすい「リアルな失敗談」をひとつ。
それは、「何でもかんでもログをSIEMに集めすぎて、本当に大事なログが埋もれてしまう問題」です。
家じゅうのすべての部屋にカメラをつけて、ゴミが風で舞うたびに警報が鳴っていたら、警備員(あなた)は疲弊してノイローゼになってしまいますよね。
ファイアウォールのログも同じです。すべての「通信許可(ALLOW)」のログを何でもかんでもSIEMに送ると、ストレージの容量(お金)がパンクするだけでなく、本当に見なきゃいけない「怪しい動き(DROP)」がノイズに埋もれてしまいます。
一歩ずつ進めるためのベストプラクティス
1. まずは「外部から内部への通信拒否(外部からの怪しいアタック)」のログだけに絞ってSIEMに取り込んでみる。
2. 次に、自分たちのシステムの「通常のアクセスの波(平日の昼間はアクセスが多くて、夜中は少ないなど)」を把握する。
3. その上で、今回紹介したような「短時間の異常な連続アクセス」を検知する相関ルールを1つずつ育てていく。
セキュリティ対策に「完璧なゴール」はありません。
でも、今日学んだ「ログを集めて、点と点を繋げて怪しい動きを見つける」という基本の仕組みさえ押さえておけば、どんなに複雑なクラウド環境であっても、必ず泥棒の足跡を見つけ出すことができます。
一歩ずつ、焦らずに堅実な防犯の仕組みを育てていきましょうね!
コメント