まだNTLMv1を使っていませんか?Active Directoryのセキュリティ強化・第一歩
この記事の内容
- NTLMv1は暗号強度が低く、中間者攻撃やリプレイ攻撃に脆弱な古い認証プロトコルである
- Active Directoryは登場から25年以上経つ今も攻撃者の主要ターゲットであり、放置は非常に危険
- LM互換性レベル(LM Compatibility Level)の設定でNTLMv1の使用を制御できる
- 無効化前にイベントID 4624を使った監査でNTLMv1の利用状況を把握することが重要
- 段階的に対策を進めることで、アカウントロックアウトなどのトラブルを防げる
なぜ今さらActive Directoryのセキュリティ強化なのか
クラウドサービスが主流になった現在でも、Active Directory(AD)のセキュリティ強化は非常に重要なテーマです。その理由は明確で、攻撃者は今もActive Directoryを狙って管理者アカウントの奪取を試みています。クラウド側よりも、長年アップデートされてこなかったオンプレミスのADの方が脆弱なケースが多いためです。
Active Directoryは登場から25年以上が経過しており、現在も多くの企業で稼働し続けています。しかし、構築当時の担当者がすでに組織を離れていたり、誰が管理しているのかも曖昧になっていたりと、「動いているから放置」という環境が少なくありません。
ADが一度侵害されると被害の全容把握は極めて困難になります。どこまでやられたのか、どのバックアップデータまでなら安全なのかが判断できなくなり、最悪の場合は全システムの再構築という事態にもなりかねません。やられる前に対策を講じることが、何よりも重要です。
NTLMv1とは何か
NTLMv1(NT LAN Manager version 1)は、Windowsが使用する認証プロトコルの一つです。ユーザーがファイルサーバーにアクセスするときなど、「あなたは誰ですか」を確認するために裏側で使われる仕組みです。
現在、Active Directory環境で使われる主な認証プロトコルには以下のものがあります。
| プロトコル | 概要 |
|---|---|
| NTLMv1 | 最も古く、暗号強度が低い。使用禁止推奨 |
| NTLMv2 | NTLMv1より改善されているが、将来的に廃止予定 |
| Kerberos | 最新かつ推奨される認証プロトコル |
クライアントとサーバーが通信を行う際、双方が対応しているプロトコルの中から最も新しいものが自動的に選択されます。そのため、NTLMv1をサポートするリストから削除してしまっても、NTLMv2やKerberosで代替されるため通常は問題ありません。
なお、ここでいう「クライアント」「サーバー」はOSの種類ではなく、通信を開始する側・ホストする側という役割を指しています。
NTLMv1の何が危険なのか
NTLMv1が危険とされる主な理由は以下の2点です。
中間者攻撃(Man-in-the-Middle Attack)への脆弱性 通信の間に第三者が介入し、やり取りを中継することで認証を突破できてしまいます。モダンな認証プロトコルはこの攻撃への対策が施されていますが、NTLMv1には対策がありません。
リプレイ攻撃(Replay Attack)への脆弱性 一度キャプチャした認証通信を再送信することで、正規ユーザーになりすませてしまいます。
これらは古典的な攻撃手法ですが、対策が施されていないNTLMv1に対しては今も有効です。
なぜ最新OSでもNTLMv1が使われてしまうのか
「Windows 10や11しかないのだからNTLMv1は使っていないはず」と思われる方もいるかもしれません。しかし、過去の管理者が何らかの理由(古いOSとの互換性確保など)でNTLMv1を強制使用するよう設定したレジストリ値が、そのまま残ってしまっているケースがあります。
OSのデフォルト値の変遷は以下のとおりです。
| OSバージョン | LM互換性レベルのデフォルト値 |
|---|---|
| Windows 2000 / XP | 1(NTLMv1を使用) |
| Windows Server 2003 | 2 |
| Windows Vista / Server 2008以降 | 3(NTLMv2を使用) |
Vista以降のOSのみの環境であれば、何もしていなければ基本的にNTLMv2以上が使われます。ただし、古い設定が意図せず残っていたり、NASなどのサードパーティ機器がNTLMv1しか対応していなかったりするケースには注意が必要です。
LM互換性レベルの設定について
NTLMv1の使用を制御する設定が「LM互換性レベル(LM Compatibility Level)」です。
レジストリのパス:
グループポリシーの場所:
設定値の意味:
| 値 | 動作 |
|---|---|
| 3 | クライアントはNTLMv2のみ使用する。NTLMv1は使わないが、受け入れはする |
| 5 | ドメインコントローラーがNTLMv1を完全に拒否する |
具体的な対策手順
Step 1:監査設定を有効にする
まず、組織内でNTLMv1がどこで使われているかを把握します。監査を有効にすると、イベントID 4624のログに認証に使用されたプロトコルのバージョンが記録されます。
ログの確認ポイントは「パッケージ名(NTLM Only)」フィールドです。ここに「NTLM V1」と記録されていれば、NTLMv1での認証が行われています。
注意: イベントID 4624はドメインコントローラーではなく、認証先のサーバー側(ファイルサーバーなど)のイベントログに記録されます。そのため、組織内の全端末のイベントログを収集する必要があります。SIEMやWindows Event Forwardingの活用が効果的です。
また、匿名ログイン(Anonymous Logon)の際にNTLMv1と記録されることがありますが、これは実際にはNTLMv1を使用していないため、無視して構いません。
Step 2:NTLMv1を使用している機器・アプリを特定する
監査ログからNTLMv1の利用箇所を特定します。現代においてNTLMv1を使用している場合は、以下のいずれかに該当する可能性が高いです。
- レジストリに明示的にNTLMv1を強制する設定が残っている
- NTLMv1しか対応していない古いNASやサードパーティ機器がある
- NTLMv1しか対応していない古いアプリケーションがある
特定できたものは個別に対応します。NASであれば設定画面でNTLMv2への変更を試みてください。対応が不可能な機器・アプリケーションであれば、使用を停止することを検討します。
Step 3:LM互換性レベルを3に設定する
NTLMv1の利用箇所が解消できたら、グループポリシーを使って組織全体のLM互換性レベルを3以上に設定します。
レベル3は「クライアントはNTLMv2を使用するが、NTLMv1を受け入れることは拒否しない」モードです。段階的なアプローチとして、まずこのレベルから始めることを推奨します。
中央管理の重要性: 個々の端末に手動でレジストリを設定するのは管理が破綻します。必ずグループポリシーで一元管理してください。
この設定後、問題が発生しないことを確認します。
Step 4:LM互換性レベルを5に引き上げる
問題がないことが確認できたら、ドメインコントローラーのLM互換性レベルを5に設定します。これによりNTLMv1での認証要求がドメインコントローラーレベルで完全に拒否されます。
注意点:タトゥー設定に気をつける
グループポリシーで一度設定した値を「未定義」に戻しても、クライアント側のレジストリに値が残り続ける現象があります。これは「タトゥー設定」と呼ばれます。
LM互換性レベルはこのタトゥー設定の対象となる場合があります。グループポリシーでは設定していないにもかかわらず、古いクライアントにだけ低い値が残っているというケースが発生し得るため、注意が必要です。
やってはいけないこと
いきなりドメインコントローラーをレベル5に設定しない
いきなりレベル5に設定すると、NTLMv1でしか通信できないクライアントや機器が認証に失敗します。その際に認証の再試行が多数発生し、アカウントロックアウトが続出するという事態になる可能性があります。必ず監査から始め、段階的に進めてください。
先送りにしない
NTLMv1が使われている状態は、侵害のリスクが常に存在する状態です。事故が起きてからの対応は、事前対策の何倍もコストがかかります。少なくともレベル3への設定まではできるだけ早く実施することを強くお勧めします。
まとめ
Active Directory環境におけるNTLMv1の廃止は、今すぐ取り組むべきセキュリティ対策の一つです。対策の流れをまとめると以下のとおりです。
- 監査設定を有効化し、イベントID 4624でNTLMv1の利用状況を把握する
- NTLMv1を使用している機器・アプリを個別に対応(設定変更または使用停止)する
- グループポリシーでLM互換性レベルを3以上に設定する
- 問題がなければLM互換性レベルを5に引き上げ、ドメインコントローラーレベルでNTLMv1を拒否する
「古いOSはないから大丈夫」と思っていても、過去の設定が残っているケースがあります。また、NASなどサードパーティ機器の見落としにも注意が必要です。Active Directoryは一度侵害されると取り返しがつかない被害につながります。ぜひこの機会に自組織の設定を確認してみてください。