GPOでWindowsのNetBIOS・LLMNRプロトコルを無効化する方法を徹底解説
ブロードキャスト型プロトコルであるNetBIOS over TCP/IPとLLMNRは、現在の多くのネットワーク環境では、旧バージョンのWindowsとの互換性維持のためだけに残されています。しかし、この2つのプロトコルはどちらもなりすまし(spoofing)攻撃や中間者(MITM)攻撃に対して脆弱です。実際、Metasploitには、NetBIOSやLLMNRのブロードキャスト通信を悪用してLAN内のユーザー資格情報(NTLMv2ハッシュを含む)を簡単に横取りできるモジュールが用意されています。ネットワークのセキュリティを高めるためには、ドメインネットワーク上でこれらのプロトコルを無効化することが重要です。本記事では、Windows 10/Windows Server 2019環境において、LLMNRとNetBIOSを手動またはグループポリシー(GPO)経由で無効にする方法を詳しく解説します。
目次
- LLMNR(Link-Local Multicast Name Resolution)プロトコルとは
- NetBIOS over TCP/IPプロトコルとは
- GPOを使用したLLMNRの無効化
- Windows 10/Windows Server 2019でのNetBIOS over TCP/IP無効化
- グループポリシーでNetBIOS over TCP/IPを無効化する方法
LLMNR(Link-Local Multicast Name Resolution)プロトコルとは
LLMNR(UDP/5355、Link-Local Multicast Name Resolution)は、Vista以降のすべてのWindowsに搭載されている名前解決プロトコルです。IPv6およびIPv4クライアントが、DNSサーバーに依存せず、同じL2ネットワークセグメント内へのマルチキャスト要求によって隣接コンピューターの名前を解決できるようにします。DNSが利用できない場合に自動的に使用され(ワークグループ環境では「ネットワーク探索」にも利用されます)、ドメイン環境でDNSサーバーが運用されているのであれば、このプロトコルは基本的に不要です。
NetBIOS over TCP/IPプロトコルとは
NetBIOS over TCP/IP(NBT-NS、UDP/137・138、TCP/139)は、LLMNRの前身となるブロードキャスト型プロトコルで、ローカルネットワーク上でのリソースの公開・検索に使われてきました。すべてのWindowsバージョンで、すべてのネットワークインターフェースに対してデフォルトで有効になっています。
Windowsでは、nbtstatコマンドを使ってNetBIOSの統計情報やNBT経由のTCP/IP接続状況を確認できます。IPアドレスからコンピューター名を取得するには、次のように実行します。
nbtstat -A 192.168.131.190
実行すると、nbtstatがNetBIOSプロトコル経由でローカルネットワーク上のコンピューターを検出し、その名前を返します。
同じローカルネットワーク上の隣接コンピューターに関するすべてのエントリは、NetBIOSキャッシュから次のコマンドで表示できます。
nbtstat -c
NetBIOSとLLMNRは、DNSサーバーが利用できない場合にローカルネットワーク上のコンピューター同士が互いを発見するための仕組みです。ワークグループ環境では有用な場合もありますが、ドメインネットワークでは両方とも無効化して問題ありません。
ヒント: ドメイン全体へこれらのポリシーを展開する前に、NetBIOSとLLMNRを無効化した状態のコンピューターやサーバーで必ずテストを行ってください。LLMNRの無効化では通常問題が発生しませんが、NetBIOSを無効にするとレガシーデバイスの動作に支障が出る可能性があります。
GPOを使用したLLMNRの無効化
Windowsコンピューター上でLLMNRプロトコルを個別に無効化するには、PowerShellから次のコマンドでレジストリを変更します。
New-Item "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT" -Name DNSClient -Force
New-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient" -Name EnableMultiCast -Value 0 -PropertyType DWORD -Force
ドメイン環境では、グループポリシーを使ってコンピューターおよびサーバーのLLMNRブロードキャストを一括して無効化できます。手順は以下の通りです。
gpmc.mscを開き、新しいGPOを作成するか、すべてのワークステーションとサーバーに適用されている既存のGPOを編集します。- [コンピューターの構成] → [管理用テンプレート] → [ネットワーク] → [DNSクライアント]へ移動します。
- [マルチキャスト名前解決をオフにする(Turn off multicast name resolution)]ポリシーを[有効]に設定します。
- クライアント側でGPO設定が更新されるのを待つか、
gpupdate /forceコマンドで手動更新します。
また、GPP(グループポリシーの基本設定)を使って、ドメインコンピューターにレジストリ値EnableMulticast = 0(HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClientキー)を配布することも可能です。
Windows 10/Windows Server 2019でNetBIOS over TCP/IPを無効化する方法
注意: NetBIOSは旧バージョンのWindows(2000、XPなど)や一部の非Windowsデバイスで利用されている場合があるため、無効化の前に必ず各環境での動作確認を行ってください。
WindowsでNetBIOSを手動で無効化する手順は次の通りです。
- ネットワーク接続のプロパティを開きます。
- [TCP/IPv4]を選択し、プロパティを開きます。
- [詳細設定]をクリックし、[WINS]タブで[NetBIOS over TCP/IP を無効にする]を選択します。
- 変更を保存します。
コンピューターに複数のネットワークアダプター(またはVLAN)がある場合は、それぞれのプロパティでNetBIOSを無効化する必要があります。
ネットワークアダプターごとのNetBIOS over TCP/IPの状態は、Windowsのコマンドプロンプトから次のコマンドで確認できます。
ipconfig /all | find "NetBIOS"
NetBIOS over Tcpip . . . . . : Disabled
特定のネットワークアダプターに対してNetBIOSを無効化するには、レジストリを編集する方法もあります。各ネットワークアダプターには、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Interfaces配下にTCPIP_GUIDを持つ個別のレジストリキーが存在します。
対象アダプターのレジストリキーを開き、NetbiosOptionsの値を2に変更してください(デフォルトは0です)。
また、Windows DHCPサーバーからIPアドレスを受け取るドメインクライアントであれば、特別なDHCPオプションを使ってNetBIOSを無効化できます。
dhcpmgmt.mscコンソールを実行し、DHCPサーバーに接続してスコープオプション(またはサーバーオプション)を選択します。- [詳細設定]タブを開き、[ベンダークラス(Vendor class)]ドロップダウンから[Microsoft Windows 2000 Options]を選択します。
- [001 Microsoft Disable Netbios Option]を有効にし、値を0x2に設定します。
グループポリシーでNetBIOS over TCP/IPを無効化する方法
グループポリシー管理エディタや最新版の管理用テンプレート(Windows 10/Windows Server 2019対応)には、すべてのネットワークアダプターのNetBIOS over TCP/IPをまとめて無効化できる専用のGPO設定項目は用意されていません。そこで、次のPowerShellスタートアップスクリプトを使って、全ネットワークアダプターのNetBIOSを完全に無効化します。
$regkey = "HKLM:SYSTEM\CurrentControlSet\services\NetBT\Parameters\Interfaces"
Get-ChildItem $regkey |foreach { Set-ItemProperty -Path "$regkey\$(($_).pschildname)" -Name NetbiosOptions -Value 2 -Verbose}
このコードをdisableNetbios.ps1というファイル名で保存し、GPOディレクトリにコピーして、[コンピューターの構成] → [ポリシー] → [Windowsの設定] → [スクリプト] → [スタートアップ] → [PowerShellスクリプト]からクライアント上で実行するよう構成します。
現在のPowerShell実行ポリシーがスクリプトの実行をブロックしている場合は、PS1スクリプトに署名するか、Bypassモードで実行する必要があります。
注意: この変更を反映させるには、ネットワークアダプターの有効/無効を切り替えるか、コンピューターを再起動してください。
その後、コマンドプロンプトを開き、次のコマンドを実行して、ネットワークアダプター(トンネルインターフェースを除く)でNetBIOSが無効化されたことを確認します。
wmic nicconfig get caption,index,TcpipNetbiosOptions
-
Windows 10でテレメトリとデータ収集を無効にする5つの方法【プライバシー保護ガイド】
Windowsのテレメトリとは何でしょうか? プライバシーを守るために、Windows 10でテレメトリとデータ収集を無効にするにはどうすればよいのでしょうか。この記事では、その全プロセスをわかりやすく解説します。 Microsoftによると、次のように説明されています。 「Windowsテレメトリとは、Windowsデバイスに関する重要な技術データであり、デバイスやWindowsおよび関連ソフトウェアがどのように動作しているかを示すものです。これは以下の目的で使用されます。 Windowsを最新の状態に保つ。 Windowsを安全で信頼性が高く、高性能な状態に保つ。 Windowsの使用状
-
Windows 10のStartMenuExperienceHost.exeとは?正体とエラー対処・無効化の方法を徹底解説
「StartMenuExperienceHost.exe」は、Windowsオペレーティングシステムの中核を担うプログラムファイルの一つです。Windows 10のビルド1903で初めて導入され、その後リリースされたWindows 10バージョン2004にも引き継がれました。この実行ファイルは、タスクマネージャー上で常時稼働しているプロセスとして確認でき、スタートメニューを独立したプロセスとして安定して動作させる役割を果たしています。これにより、スタートメニューに関連するエラーやクラッシュの発生リスクが大幅に軽減されます。 ただし、まれにこのプロセスが応答しなくなるトラブルが発生することもあり