グローバルクエリ禁止リストとは
Windows Server 2008 以降の DNSサーバーでは、特定のホスト名の DNS クエリをブロックすることにより、ネットワークへの攻撃を防止する機能をサポートしており、この制御に使用されるのが「グローバルクエリ禁止リスト」です。
DNSサーバーの動的更新機能を利用して、特定の通信制御で使用する重要なホスト名に不正な IP アドレスを指定したレコードを登録することで、その名前を乗っ取り、ネットワークトラフィックを悪意のサーバーに誘導するといった攻撃手法があります。特に、このような攻撃の対象にされるホスト名として、WPAD と ISATAP があります。そのため既定で、DNS サーバーは、WPAD と ISATAP というホスト名の名前解決クエリには応答しない制御になっています。
構成によって、これらのホスト名の名前解決が必要な場合には、DNS サーバー上のグローバルクエリ禁止リストから、これらの名前を削除する必要があります。リストから名前を削除することで、DNS サーバーが、WPAD および ISATAP というホスト名の名前解決クエリを受け付けるようになります。
グローバルクエリ禁止リストから削除するには、dnscmd.exe コマンド または Windows PowerShell コマンドレットを実行します。
グローバルクエリ禁止リストの既定のホスト名
既定で名前解決がブロックされるホスト名は、下記のような通信で使用される。
WPAD・・・Webプロキシ自動発見(Web Proxy Auto-Discovery)を実装する際に使用されるホスト名。Webプロキシ自動発見は、Webブラウザのプロキシ設定を自動的に行うための仕組みの一つ。
ISATAP・・・ISATAP(Intra-Site Automatic Tunnel Addressing Protocol) での通信の際、ISATAPルーターに使用されるホスト名。ISATAPは、IPv4 のみのネットワーク環境において、IPv6 接続を可能にするための自動トンネリング技術の一つ。
グローバルクエリ禁止リストの表示
コマンド
dnscmd <サーバー名> /info /globalqueryblocklist
PowerShell
Get-DnsServerGlobalQueryBlockList
グローバルクエリ禁止リストの更新
コマンド
dnscmd サーバー名 /config /globalqueryblocklist ホスト名 ホスト名
PowerShell
Set-DnsServerGlobalQueryBlockList ホスト名,ホスト名
※ホスト名で指定した名前はリストへの追加ではなく上書き。追加にしたい場合はリストの既存の名前も再度指定する。つまり、wpad、isatapの他に、nlsも追加したい場合は
コマンド
dnscmd /config /globalqueryblocklist wpad isatap nls
PowerShell
Set-DnsServerGlobalQueryBlockList wpad,isatap,nls
と指定する。nls のみを指定した場合は、wpad と isatap はリストから削除され、nls だけが登録される。
グローバル クエリ禁止リストが有効になっているどうかの表示
コマンド
dnscmd サーバー名 /info /enableglobalqueryblocklist
PowerShell
Get-DnsServerGlobalQueryBlockList
グローバル クエリ禁止リストの有効化/無効化
コマンド
dnscmd サーバー名 /config /enableglobalqueryblocklist パラメーター
PowerShell
Set-DnsServerGlobalQueryBlockList -Enable パラメーター
<パラメーター>
有効:1(DNSサーバーサービスは、禁止リスト内の名前に対するクエリを無視する)
無効:0(DNSサーバーサービスは、禁止リスト内の名前に対するクエリを無視しない)
レジストリ
HKLM\SYSTEM\CCS\Service\DNS\Parametersキー
以上のように構成可能です。