Windows Server 2016 DNSサーバーで特定のIPをブロックする方法

WindowsServer 2016 以降は、DNSサーバーに新機能が追加され、DNSポリシーが設定できるようになりました。このDNSポリシーの機能の1っにQueryResolutionPolicyというものがあります。このポリシーを設定すると、特定のIPに対してクエリーを無視するなどフィルタリングすることができます。設定方法は、下記になります。Firewall ファイアウォール

設定手順

※事前にDNSサーバーの設定は完了しており、サーバーが稼働している環境を想定しています。

①スタートメニューからWindows PowerShell を探し、64bit版のWindows PowerShellを管理者権限で起動します。(管理者権限が必須か分かりませんが、テストは、管理者権限で実施しました)

②下記コマンドを実行し、事前にIPアドレスの定義を登録します。

Add-DnsServerClientSubnet -Name "BlockSubnet01" -IPv4Subnet 172.0.33.0/24

③上記で登録したSubnet定義を参照し、クエリをIGNOREにするポリシーを追加します。定義を参照する場合、EQ, を先頭につけます。EQの後ろは「カンマ」がついています。

Add-DnsServerQueryResolutionPolicy -Name "BlockPolicy01" -Action IGNORE -ClientSubnet "EQ,BlockSubnet01"

④以上で、完了です。172.0.33.0 ~172.0.33.255 までのクエリをブロックします。うまく反映されない場合、DNSサーバーを再起動したら変わるかもしれません。

下記コマンドを入力すると、登録したポリシーを確認できます。

Get-DnsServerClientSubnet

Get-DnsServerQueryResolutionPolicy

削除する場合は、下記コマンドを入力します。

Remove-DnsServerQueryResolutionPolicy -Name "BlockPolicy01"

Remove-DnsServerClientSubnet -Name BlockSubnet01

下記のようにSetコマンドを使うと、登録済のsubnet定義に対して値の更新もできます

Set-DnsServerClientSubnet -Name "BlockSubnet01" -Action REPLACE -IPv4Subnet 172.0.34.0/24

 

参考:DNSポリシーでクエリフィルターを適用する(チュートリアル)

https://learn.microsoft.com/ja-jp/windows-server/networking/dns/deploy/apply-filters-on-dns-queries

参考:DNSポリシーのPowerShell cmdlet リファレンス

https://learn.microsoft.com/en-us/powershell/module/dnsserver/?view=windowsserver2022-ps

参考:DNSポリシーの概要

https://learn.microsoft.com/ja-jp/windows-server/networking/dns/deploy/dns-policies-overview

不正アクセスの確認手段について

リソースモニターを起動し、ネットワークタブを選択すると、ネットワークの通信状況を確認できます。ネットワーク活動の欄にdnsのプロセスであるdns.exeに対して同一サブネットの海外サーバーから異様なアクセスがあった場合、不正アクセスの可能性あります。下記画像は、参考の為、画像編集した架空のものです。