💨

DNS Security Policy を試してみた

2024/11/30に公開
1

Advent Calendar

こちらの記事は Azure PoC部 Advent Calendar 2024 の 1 日目の記事です!

TL;DR

  • DNS security policy を試してみ隊
  • 想定どおり動いており、168.63.129.16 以外に DNS クエリーを投げれば効かない
  • 168.63.129.16 への DNS クエリーログが取れるようになったのも便利なのでは

はじめに

Public Preview: DNS security policy というのが発表されたので試してみた、という blog です。
とりあえず試してみた範囲では普通に動いており、また Virtual network links という文言があるとおり、DNS サーバーが 168.63.129.16 に向いていないと効かないね、というのを確認しました。

リソースの作成

Docs は DNS セキュリティ ポリシー (プレビュー) にあります。
Azure portal のプレビュー対応リンク から飛ばないと今のところ使えないようです。

とりあえず以下のようなリソースを作り、試してみます。

  • Virtual network
    • "default" サブネットがあり、VM もここに作成
  • Network security group
    • "default" サブネットに関連付け
    • 雑に 3389/tcp を自分のネットワークからだけ許可
  • Virtual Machine
    • とりあえず Windows Server 2025 で作ってみる
    • Public IP つけて直ログインです

んで、今回の目的のリソースはこんな感じで 2 つあります。

  • DNS Security Policy
    • VNet に対して "Virtual network links" の設定がしてあります
    • DNS Domain List を関連付け、優先度 100、Traffic actions は "Block" にしてあります
  • DNS Domain List
    • なんとなく "iij.ad.jp" を追加してあります。

ということで、"iij.ad.jp" の名前解決はできず、他はできるだろう、という状況の想定です。

名前解決のテスト

まずは www.microsoft.com の名前解決を試してみます。
普通に結果が返ってきます、想定どおりです。

nslookup-www-microsoft-com
nslookup www.microsoft.com

次に、www.iij.ad.jp を試してみます。
こちらは名前解決ができず、こちらも想定どおりです。

nslookup-www-iij-ad-jp
nslookup www.iij.ad.jp

しれっと出ていますが、上記 2 つの結果は DNS サーバーとして 168.63.129.16 (Azure 既定の DNS サーバー) を利用しています。
ですが、nslookup は DNS サーバーを変えた問い合わせが可能なので、ここでは 8.8.8.8 (Google Public DNS) に対して www.iij.ad.jp の名前解決を試してみます。
とすると、なんと、名前解決ができてしまいます。

nslookup-www-iij-ad-jp-google-dns
nslookup www.iij.ad.jp to Google Public DNS

8.8.8.8 に名前解決の問い合わせをすることで www.iij.ad.jp の応答が返ってくることは意外に思われるかもしれませんが、他にも Virtual network links (仮想ネットワークリンク) という設定を持つリソースを思い出してみましょう。
Azure Private Endpoint とよく組み合わせて利用される Private DNS Zone も同じような動きをしています。
Azure Private Endpoint に対応する A レコードが追加された Private DNS Zone は、その VNet から 168.63.129.16 に問い合わせが投げられない限り、その A レコードを参照した回答は返ってきません。
これらの内容については、Microsoft Hiyama-san の Azure Private Endpoint のための DNS 構成パターン も見ていただくと理解が深まります。

DNS クエリーのログ

上記のようなフィルターの機能に加えて、診断設定から Log Analytics や Storage Account へのログが保存できるようになっています。
テスト実行時のログの一部ですが、意識していないところでいろいろ DNS クエリーが飛んでいる様子や www.iij.ad.jp に対して RESPONSE_FAILURE という結果が表示されています。

dns-query-logs

今まで 168.63.129.16 への名前解決のログはユーザー側の DNS サーバーなどで取得する必要がありましたが、プラットフォーム側でその機能が提供されるのは便利ですね。

まとめ

Public Preview となった DNS security policy をとりあえず簡単に試してみました。
「まぁ、そうだよな」という想定どおりの動作であることを確認できています。

また、Virtual network links という設定の名前から想像するとおり Private DNS Zone と同じく 168.63.129.16 に DNS 問い合わせを投げないと効果がないことも確認できました。
加えて、168.63.129.16 への DNS クエリーのログが一般的な診断設定で Log Analytics に出力できるためどのような問い合わせがされているかの集計・分析にも役立ちそうです。

参考

  • Public Preview: DNS security policy

https://azure.microsoft.com/updates/?id=468565

  • DNS セキュリティ ポリシー (プレビュー)

https://learn.microsoft.com/azure/dns/dns-security-policy?wt.mc_id=MVP_391314

  • Azure DNS セキュリティ ポリシー

https://qiita.com/Isato-Hiyama/items/7bb6483f29e981df9e23

  • Azure Private Endpoint のための DNS 構成パターン

https://qiita.com/Isato-Hiyama/items/6c61a65f12c9e7042bb2


Update log

  • Advent Calendar の URL を追加 - 2024/12/01
  • Microsoft Hiyama-san の神記事を追加 - 2024/12/02

Discussion

yamapanyamapan

(Google Public DNS) に対して www.iij.ad.jp の名前解決を試してみます。
とすると、なんと、名前解決ができてしまいます。

できちゃだめなのかと思いましたw