「見えない通信」を暴け:CASBによるシャドーIT検出の現場的アプローチ
「プロキシを通していない通信は、ネットワーク管理者の死角である」。
現場でこう断言すると、多くの運用担当者が苦笑いする。Webブラウザに設定されたプロキシをバイパスし、カフェのWi-Fiやテザリングを装って直接SaaSへ接続する社員たち。彼らが社内の機密データを個人のDropboxやGoogle Driveに放り込んでいるとしたら?
ゼロトラストアーキテクチャにおいて、CASB(Cloud Access Security Broker)は「守護神」だが、それはあくまで「可視化された通信」に対してのみ有効だ。今回は、プロキシをすり抜ける「シャドーIT」を、DNSとNetFlowという泥臭い通信の痕跡から炙り出す手法について、実務の知見を交えて解説する。
—
1. なぜ「ポート53」と「NetFlow」なのか?
プロキシを通さない通信を検出するには、境界防御の要である次世代ファイアウォール(NGFW)やコアスイッチから出力されるログを逆引きするしかない。
- DNSログ(Port 53/UDP): ユーザーがどのドメイン名にアクセスしようとしているかを示す「意図」のログ。
- NetFlow/IPFIX: 誰が、どのIPアドレスに対して、どれくらいのバイト数を送ったかを示す「事実」のログ。
これらを組み合わせれば、「誰かが unknown-saas.com に向かって大量のデータをアップロードしている」という事実を、プロキシのログなしで突き止めることができる。
—
2. ログ解析の標準フローとシーケンス
実務では、以下のフローで「シャドーIT」をプロファイリングする。
1. DNS Queryの集約: 内部DNSキャッシュサーバーのログから、未知のSaaSドメイン(*.saas-example.com 等)を抽出。
2. NetFlow/IPFIXの突合: DNSクエリのタイムスタンプと、NGFWのフロー記録を照合し、該当する src_ip (クライアント)と dst_ip (宛先)を特定。
3. レピュテーション判定: 抽出した dst_ip をCASBのデータベースや脅威インテリジェンスと突き合わせ、カテゴリを特定。
特に注意すべきは、DNS がクエリを投げた直後に通信が発生する点だ。この時間差を埋めるために、SIEM や Splunk でのタイムウィンドウ解析(数秒以内の相関)が鍵となる。
—
3. 実践:ログ解析と特定のためのコード例
ここでは、Pythonを使用してNetFlow形式(CSVエクスポート想定)から異常トラフィックを抽出する簡易的なスクリプトを紹介する。
import pandas as pd
# NetFlowのダンプデータを読み込み
# カラム例: [src_ip, dst_ip, bytes, timestamp]
df = pd.read_csv('netflow_export.csv')
# 異常トラフィックの定義:特定宛先への大量アップロード
# 例: 100MB以上の転送を異常とみなす
threshold = 100 * 1024 * 1024
abnormal_traffic = df[df['bytes'] > threshold]
# ここでDNSクエリログと照合し、ドメイン名を紐付ける処理を挟む
# 現場ではここでIPアドレスから逆引きを行い、SaaSのFQDNを特定する
print("--- 検出された疑わしい通信 ---")
for index, row in abnormal_traffic.iterrows():
print(f"Client: {row['src_ip']} -> Dest: {row['dst_ip']} (Size: {row['bytes']} bytes)")
また、クライアント端末で「プロキシを使わずに直接繋ぐスクリプト」が動いていないかを調査する場合、以下のような curl コマンドのログを監査対象にするのも有効だ。
# 明示的にプロキシを無視して通信する例
# 運用環境でこれらが頻出していないか、EDRのログを確認する
curl -x "" https://api.unknown-saas.com/v1/upload \
-H "Authorization: Bearer <TOKEN>" \
-d '{"data": "sensitive_info"}'
—
4. 運用上のTips:現場でハマるポイント
私がこれまでの経験で学んだ、最も重要なポイントを共有しておく。
DNSの「キャッシュ」に騙されるな
クライアントが DNS クエリを投げるのは「名前解決が必要な初回のみ」だ。その後の通信は IP アドレスで直接行われるため、フローログ上の dst_ip が CDN(CloudFrontやFastlyなど)の共有IPである場合、どのSaaSに繋がっているのか特定できないことが頻繁にある。
- 対策:
SNI(Server Name Indication)をパケットキャプチャで確認するか、EDRからネットワーク接続プロセスを追跡するのが正攻法だ。
NetFlow/IPFIXの「サンプリングレート」を意識する
ネットワーク機器が負荷を避けるためにパケットをサンプリング(例:1/1000)している場合、少量のデータ転送(APIのキー検証など)は見逃される。シャドーITの「偵察フェーズ」を捉えるには、フローログの精度を上げるか、DNSクエリログの完全な記録が不可欠である。
—
まとめ
ゼロトラストは、境界防御を「物理的な壁」から「論理的なIDとログ」へ移行させる作業だ。プロキシをバイパスする通信は、今の時代において「隠れた悪意」ではなく「利便性を求める現場の叫び」であることも多い。
だからこそ、ただ遮断するのではなく、DNSやNetFlowという「ネットワークの息遣い」を読み解き、なぜ彼らがプロキシを迂回せざるを得ないのか、その背景にある真のニーズを理解してほしい。それこそが、凄腕のネットワークエンジニアに求められる「セキュリティと生産性の最適解」なのだから。
コメント