【実務・中級編】 NACにおけるホストポスチャ(Health Check)の評価項目とランサムウェア感染端末の隔離 – サイバーセキュリティとプライバシー保護実践ガイド

境界防御は死んだ。ならば「端末の健康診断」を自動化せよ:NACによる隔離戦略のリアル

ネットワークエンジニアの皆さん、お疲れ様です。境界防御の時代はとうに終わりを告げました。「社内ネットワークなら安全」なんて幻想は、ランサムウェアが横行する今の現場では通用しません。今日のテーマはNAC(Network Access Control)によるホストポスチャ(Health Check)です。

パッチ未適用のPCを放置することは、爆弾を抱えたままオフィスに招き入れるのと同じ。今回は、現場で泥臭く生き抜くための「端末検疫と隔離」の技術的裏側を深掘りします。

—

1. ホストポスチャ:なぜ「健康診断」が重要なのか

ランサムウェアの侵入経路は、メールの添付ファイルやドライブバイダウンロードだけではありません。VPN経由で接続したノートPCが既に感染しており、そこから水平移動(Lateral Movement)を始めるケースが後を絶ちません。

NACのホストポスチャは、接続要求があった瞬間に端末の状態を評価します。

  • OSパッチ適用状況: 既知の脆弱性(CVE-XXXX-XXXX)が放置されていないか。
  • AV/EDRの稼働状態: セキュリティエージェントが死んでいないか。
  • 定義ファイルの鮮度: 3日前のシグネチャで現代の脅威と戦えるのか。

これらが一つでも欠けていれば、即座に「隔離VLAN」へ追放する。これがゼロトラスト時代の必須作法です。

—

2. 通信フロー:認証から隔離までの裏側

標準的なIEEE 802.1X認証をベースにすると、通信は以下のシーケンスを辿ります。

1. Supplicant(端末): RADIUSリクエストを送信。
2. Authenticator(スイッチ/AP): 認証情報をRADIUSサーバーへ転送。
3. Posture Server: 端末へ「健康診断書を出せ」と要求。
4. Health Check: エージェントがOS情報を収集し、JSON形式等でサーバーへPOST。
5. Policy Decision: サーバーが準拠/非準拠を判定し、RADIUS VSA(Vendor Specific Attribute)をAuthenticatorへ返送。
6. Enforcement: 準拠なら本番VLAN、非準拠なら隔離VLAN(VLAN ID: 666など)へポートを動的割り当て。

—

3. 実践:ポスチャ情報の送信とAPIハンドリング

現場の運用で最も多いのが、「エージェントが収集したデータをどう検証するか」です。サーバーサイド(Python想定)で受け取る際の簡易的な実装イメージを見てみましょう。

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/api/v1/posture/check', methods=['POST'])
def check_posture():
    data = request.json
    # 評価項目:パッチレベルとAV稼働状況
    # 現場の運用ポリシーに基づき、厳格にチェックする
    patch_level = data.get('os_patch_level')
    av_status = data.get('av_active')
    signature_date = data.get('signature_age_days')

    if patch_level >= 20231001 and av_status == True and signature_date < 3:
        # 準拠:本番ネットワークへ誘導
        return jsonify({"status": "compliant", "vlan": 10}), 200
    else:
        # 非準拠:隔離ネットワークへ(ここで自動的にVLANタグを切り替える)
        return jsonify({"status": "non-compliant", "vlan": 666, "reason": "outdated_av"}), 200

if __name__ == '__main__':
    app.run(port=8080)

Tips: トラブルシューティングの勘所

もし隔離がうまくいかない場合、まず疑うべきは RADIUS のアトリビュートマッピングです。特に Tunnel-Private-Group-ID が正しくスイッチ側に伝わっているか、パケットキャプチャで Access-Accept パケットを解析してください。

—

4. 隔離の極意:VLAN隔離だけでは不十分

「VLANを分けたから安心」というのは少し甘い。隔離VLANに置かれた端末が、Active Directory等のDNSサーバーと通信できないと、パッチ適用すらできません。

隔離VLANのACL(アクセスコントロールリスト)設定例:

! 隔離VLAN用のACL定義(必要なサーバー以外は遮断)
ip access-list extended ISOLATION_POLICY
 permit udp any any eq 53          ! DNS許可(名前解決は必須)
 permit ip any host 10.0.50.10     ! WSUS/パッチ配布サーバーのみ許可
 deny ip any any                   ! 他の全セグメントへの通信を拒否

この「必要最低限の通信路」を確保することが、迅速な復旧(リカバリー)への鍵です。

—

5. 最後に:エンジニアとして守るべき矜持

NACの導入は、しばしば現場のユーザーから「ネットワークが重い」「繋がらない」と文句を言われます。しかし、それは「あなたの端末が危険だからです」と言い切る強さが、セキュリティエンジニアには必要です。

設定を自動化し、監視を徹底し、異常を検知したら問答無用で隔離する。このドライな仕組みこそが、結果として組織のデータとエンジニア自身の平穏を守ることになります。

次回の記事では、このポスチャ情報を活用した「動的な動的マイクロセグメンテーション」について、より実践的な設定を共有します。それでは、また現場でお会いしましょう。

コメント

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