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に対して同一サブネットの海外サーバーから異様なアクセスがあった場合、不正アクセスの可能性あります。下記画像は、参考の為、画像編集した架空のものです。