境界防御の終焉と、その先の「自動化」という名の聖杯
「境界の内側なら安全」という神話が崩壊して久しい。今や我々の戦場は、オフィスという閉じた箱庭から、SaaSが乱立する広大なクラウドの海へと移った。その中でSASE(Secure Access Service Edge)という武器を手にし、CASB(Cloud Access Security Broker)を導入して「可視化と制御」を手に入れたエンジニア諸君、ここまでは素晴らしい。
しかし、こう思ったことはないだろうか?
「CASBがアラートを吐くたびに、夜中に叩き起こされて管理画面にログインするのは、もう勘弁してくれ」と。
そう、真の運用効率化は「検知」ではなく「自動化」にある。今日は、CASBが検知したインシデントをSIEMやSOARへ流し込み、泥臭い手作業を駆逐するための「Syslog/CEFフォーマット」の深淵に迫ろう。
—
なぜ今、CEF(Common Event Format)なのか?
CASBが吐き出すアラートは、製品ごとに方言がひどい。JSONで構造化されているものもあれば、独自のCSVもどきもある。これをSOAR側で一つひとつ解析(パース)するのは、エンジニアにとって地獄だ。
そこで登場するのが、ArcSightが提唱した CEF である。ベンダーを問わずログ形式を統一するための規格で、構造が極めてシンプルかつ堅牢だ。
CEFの基本構造
CEFの書式は、以下のテンプレートに集約される。
CEF:Version|Device Vendor|Device Product|Device Version|Signature ID|Name|Severity|Extension
Device Vendor: 誰が吐いたか(例: Netskope, Zscaler, PaloAlto)Signature ID: アラートの種別(これが一番重要。SOARでトリガーにするキーになる)Extension: ここが肝だ。key=value形式で、ユーザー名、IP、URL、ファイルハッシュなどを詰め込む。
—
現場で使える「SOAR連携」のためのSyslog設定
CASBからSIEM/SOARへログを飛ばす際、重要なのは「ノイズを減らし、コンテキストを増やす」ことだ。単に「マルウェア検知」とだけ送っても、SOAR側で自動隔離はできない。
以下は、CASB側のSyslog送信設定における、Extensionフィールドの推奨構成例だ。
# CASBからSOARへ送るSyslogのExtension設定イメージ
# コンテキストを豊富に持たせることが自動化の鍵
cat=malware_detection
src=192.168.10.5
duser=john.doe@example.com
filePath=/home/admin/malicious.exe
fileHash=e3b0c44298fc1c149afbf4c8996fb924
requestMethod=POST
このログがSOARに届いた瞬間、SOARは fileHash を抽出してVirusTotalに問い合わせ、duser の権限を一時的に剥奪する、といったシナリオが組めるようになる。
—
PythonによるSyslog受信のデバッグ・コード
「本当に正しいフォーマットでログが飛んできているか?」を確認するために、本番環境のSIEMに食わせる前に、自前で簡易的なSyslogレシーバーを立ててログをキャプチャしてみよう。これがトラブルシューティングの第一歩だ。
import socket
# 514番ポートは特権が必要なため、テスト時は1514などで代用すること
UDP_IP = "0.0.0.0"
UDP_PORT = 1514
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))
print(f"UDP Syslogレシーバー起動中: {UDP_PORT}...")
while True:
data, addr = sock.recvfrom(4096)
# 受信したCEF形式のログをデコードしてコンソールに出力
print(f"受信元: {addr}, 内容: {data.decode('utf-8')}")
このスクリプトを回しながら、CASBの管理画面で「テストログ送信」を実行してほしい。ここで Extension フィールドに期待した情報が全て含まれているか確認する。特に、日本語環境だとマルチバイト文字が文字化けしてパースエラーになるケースが多いため、必ず UTF-8 で統一されているかを確認すること。
—
シニアエンジニアからの「泥臭い」助言
最後に、現場で泣きを見ないためのTipsを3つ授ける。
1. タイムスタンプの闇に注意せよ:
CASBの時刻と、Syslogを受信するSIEMの時刻がズレていると、相関分析が死ぬ。必ずNTP同期を徹底し、できればCEFのヘッダーにデバイスのローカル時刻だけでなく、UTCのタイムスタンプを含めるようカスタマイズせよ。
2. TCP/UDPの選択:
Syslogはデフォルトで UDP だが、信頼性が求められるインシデントログには TCP(できればTLS暗号化)を選べ。パケットロスはインシデントのロストを意味する。
3. パースの例外処理を忘れるな:
ベンダーのアップデートで、突然 Extension のキー名が変わることがある。SOAR側のレシピには、キーが見つからなかった場合の「例外処理(エラーハンドリング)」を必ず入れろ。
自動化は、完璧な仕組みを作ることではなく、「壊れた時にどこが原因か即座に分かる仕組み」を作ることだ。
さあ、管理画面の監視から解放され、より本質的なセキュリティアーキテクチャの設計に時間を割こう。君のネットワークが、今日も強固でありますように。
コメント