DNS Security Policy を試してみた
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
次に、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 to Google Public DNS
Virtual network links
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 という結果が表示されています。
今まで 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
- DNS セキュリティ ポリシー (プレビュー)
- Azure DNS セキュリティ ポリシー
- Azure Private Endpoint のための DNS 構成パターン
Update log
- Advent Calendar の URL を追加 - 2024/12/01
- Microsoft Hiyama-san の神記事を追加 - 2024/12/02
Discussion
できちゃだめなのかと思いましたw