こんにちは!インフラやセキュリティの世界へようこそ。
新人のIT担当者や、これからセキュリティの勉強を始める開発者の皆さん、日々の業務お疲れ様です!
サーバーの構築や管理をしていると、「セキュリティを強化しましょう」と言われることが多いですよね。でも、「ファイアウォールを入れたし、パスワードも複雑にしたし、これで大丈夫なはず……」と思っていませんか?
実は、どれだけ表面上の鍵を頑丈にしても、「家の中の古い合鍵の仕組み」がそのままになっていると、簡単に泥棒に入られてしまうことがあるんです。
今回は、Windowsサーバーの心臓部である「認証プロトコル(身分証の確認システム)」のお話です。古い仕組みである LM/NTLM を捨てて、現代の強固な Kerberos(ケルベロス) に一本化する方法について、身近な例えを交えながら一歩ずつ優しく学んでいきましょう!
—
1. 家の鍵で例える「認証プロトコル」の仕組み
まずは、パソコンの世界で行われている「認証(あなたが本当に本人かを確認する作業)」を、私たちの身近な「家への出入り」に例えて考えてみましょう。
昔ながらの「合鍵(LM/NTLM)」の危険性
想像してみてください。あなたが古いアパートメンツに住んでいて、合い鍵を友人に渡すとします。
この古いアパートの鍵(LM/NTLM認証)は、構造がちょっと単純です。鍵を玄関の鍵穴に差し込んで回すと、鍵の形(パスワードのハッシュ値)がそのままドアの向こうの管理システムに伝わる仕組みになっていました。
もし、悪意を持った泥棒がドアの隙間に盗聴器を仕掛けていたらどうなるでしょう?
泥棒は、あなたが送った「鍵の形(パスワードのハッシュ)」をそっくりそのまま盗み見ることができます。そして、泥棒はその偽物の鍵を作って、あなたのフリをして堂々と部屋に入ってきてしまうのです。これが、セキュリティの世界で言う「中間者攻撃(MitM)」や「パス・ザ・ハッシュ攻撃」と呼ばれるものです。
最新の「使い捨て電子カードキー(Kerberos)」の安心感
これに対して、現代のマンションなどで使われている電子カードキー(Kerberos認証)は非常に安全です。
このシステムでは、あなたのパスワードそのものは絶対に外に飛び出しません。その代わりに、信頼できる「管理人さん(KDC)」から、「今から3分間だけ有効な使い捨ての通行手形(チケット)」をもらって、それをサーバーに見せます。
たとえ泥棒がその「使い捨ての通行手形」を盗み見ても、3分後にはもう使えなくなっていますし、あなたのパスワードそのものは絶対に知られない仕組みになっています。安全ですよね!
—
2. なぜ今でも古い「LM/NTLM」が残っているの?
「そんなに危ないなら、古い鍵(LM/NTLM)なんて最初から捨てればいいのに!」と思いますよね。その通りです。
しかし、Windowsの歴史は長く、昔の古いプリンターや、10年前から動き続けている社内システムなども社内で使われているため、マイクロソフト社は「古い機械でも動かせるように」と、親切心(?)で古い鍵の仕組みもデフォルトで残してくれているのです。
これがセキュリティの盲点です。攻撃者は、この「古い互換性」を狙ってきます。最新の強固なWindowsサーバーを立てたとしても、中にこの古い鍵穴が残っていると、そこをピッキングされてネットワーク全体を乗っ取られてしまうのです。
だからこそ、私たちインフラエンジニアが手動で「古い鍵穴を塞ぎ、新しい電子カードキー(Kerberos)だけを使うように設定(ハーデニング)」する必要があるのです。
—
3. レジストリを使って古い認証を無効化しよう!
それでは、実際にWindowsのレジストリ(設定の頭脳のような場所)をいじって、古い LM/NTLM を無効化し、Kerberos を強制する手順を見ていきましょう。
> 注意: レジストリの変更はサーバーの動作に影響を与えます。必ず本番環境に適用する前に、テスト環境で動作確認を行ってくださいね!
レジストリ設定のポイント
Windowsでは、認証の厳しさを LmCompatibilityLevel(LAN マージャー互換性レベル)という設定値でコントロールしています。
この数値を一番厳しい「レベル5」に引き上げることで、古い LM や NTLM を完全にブロックし、より安全なNのために道を開きます。
設定手順
1. キーボードの Windowsキー + R を押して、「ファイル名を指定して実行」を開きます。
2. regedit と入力してEnterキーを押し、「レジストリエディター」を起動します。
3. 次の場所に移動します。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
4. 画面の右側にある LmCompatibilityLevel という項目を探します(なければ新規作成します)。
5. 値を 5 に変更します。
設定値の意味(チートシート)
| 設定値 | 意味・挙動 | セキュリティレベル |
| :— | :— | :— |
| 0 | 古いLMとNTLMをそのまま使う(昔の互換性重視) | ❌ 最低(危険) |
| 3 | NTLMv2のみを使用する(LMは使わない) | ⚠️ 中程度 |
| 5 | NTLMを完全に拒否し、Kerberos認証を強制する | ⭕ 最高(今回目指すゴール!) |
—
4. グループポリシー(GPO)で組織全体に適用する
サーバーが1台だけならレジストリの直接変更でも良いですが、会社全体の何十台、何百台ものPCやサーバーを一括で守るためには、「グループポリシー(GPO)」を使うのがプロのやり方です。
ドメインコントローラーやローカルグループポリシーエディターから、次のパスを設定します。
コンピューターの構成
┗ 仮想ポリシー (または Windowsの設定)
┗ セキュリティの設定
┗ ローカル ポリシー
┗ セキュリティ オプション
┗ 「ネットワーク セキュリティ: LAN マージャー認証レベル」
このポリシーを開き、「NTLMv2 応答のみを送信する / NTLM および LM を拒否する」(または環境に合わせてさらに厳格な設定)を選択します。
設定を反映させるために、コマンドプロンプトを管理者権限で開き、以下のコマンドを実行してポリシーを強制適用しましょう。
# 変更したポリシーを即座にOSに反映させるコマンド
gpupdate /force
このコマンドを実行すれば、サーバーは古い危険な合鍵の受け付けをピタリと止め、安全な扉へと生まれ変わります。
—
5. 導入時の落とし穴とトラブルシューティング
「さあ、レベル5にして最高のセキュリティだ!」と意気込んだものの、設定した瞬間に社内の一部システムが動かなくなることがあります。これが現場の泥臭いところです。
よくある原因は、「古いファイルサーバーや、古い勤怠管理システムが、まだ古いNTLM認証にしか対応していなかった」というケースです。
現場で役立つ調査のコツ
いきなり全社一括でレベル5にするのではなく、以下のステップで進めるのが安全なアプローチです。
1. 監査ログを見る
Windowsの「イベントビューアー」を開き、Security(セキュリティ) ログを確認します。
イベントID 4624 や 4625 などのログから、どの端末が古い NTLM プロトコルを使ってアクセスしてきているかを特定します。
2. 該当システムのベンダーに確認・アップデート
古くてNTLMしか使えないアプリを見つけたら、バージョンアップを促すか、どうしても無理な場合は一時的に例外ルールを検討します(ただし、基本はシステム側の改修がマストです)。
—
まとめ
今回は、Windowsの認証プロトコルである LM/NTLM を無効化し、安全な Kerberos 認証を強制するハーデニング手法について解説しました。
- 古い家(LM/NTLM)の合鍵の仕組みは、盗聴されるリスクがある。
- 使い捨ての電子キー(Kerberos)に切り替えることで、中間者攻撃を防げる。
- レジストリやグループポリシーの
LmCompatibilityLevelを5に設定して古い認証を断ち切る。 - 導入時は既存のレガシーシステムが壊れないか、事前にログで調査・テストを行う。
セキュリティの基本は、「便利だけど危ない古い仕組み」を勇気を持って切り捨てることにあります。最初は難しく感じるかもしれませんが、一つひとつ意味を理解して設定していけば、あなたの守るシステムは確実に鉄壁に近づいていきます。
一歩ずつ、確実にセキュアなインフラを作っていきましょう!それではまた次回の記事でお会いしましょう。
コメント