【実務・中級編】 CASBのシャドーIT検出におけるDNSログ(ポート53)およびNetFlow/IPFIXの解析フロー – ゼロトラスト&エンタープライズセキュリティ実践ガイド

「見えない通信」を暴け: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という「ネットワークの息遣い」を読み解き、なぜ彼らがプロキシを迂回せざるを得ないのか、その背景にある真のニーズを理解してほしい。それこそが、凄腕のネットワークエンジニアに求められる「セキュリティと生産性の最適解」なのだから。

コメント

タイトルとURLをコピーしました