Azure DNS セキュリティ ポリシーがパブリックプレビューとなっています。この機能を利用することで Azure provided DNS の名前解決のログを取得したり、名前解決要求を拒否したりすることができます。
実際に動作を確認した内容をまとめておりますのでご利用の際はご一読いただけたら幸いです。
利用シナリオ
- Azure provided DNS (168.63.129.16) の名前解決のログを取得したい
- Azure Private DNS zones の名前解決のログを取得したい
- DNS Private Resolver の名前解決のログを取得したい
- 特定の FQDN のみ許可したい
- 悪意のある名前解決を拒否、またはアラートを上げたい
制限事項
- DNS セキュリティポリシーと VNet は 1:N の関係。1 つの VNet には 1 つのポリシーだけしかリンクできない。
- DNS セキュリティポリシーと VNet は同じリージョン内でのみ利用可能
設定・動作確認
詳細はこちらを参照
ログの有効化
ログを取得したい仮想ネットワークを Virtual Network Links から追加します。
関連付けた仮想ネットワーク上の VM にて名前解決をするとログが出るようになります。
名前解決の拒否
Domain List を作成し、BLOB ストレージの FQDN を入れておきます。
Traffic rule を作成する際に、上記の Domain List を選択して、Action を Block にしておきます。
実際に名前解決をするとSERVFAIL で拒否されるようになりました。
$ nslookup bloghiyadnstest01.blob.core.windows.net
;; Got SERVFAIL reply from 127.0.0.53
Server:127.0.0.53
Address:127.0.0.53#53
** server can't find bloghiyadnstest01.blob.core.windows.net: SERVFAIL
hiyama@vm-lin-dnstest01:~$
様々なパターンでの動作検証
以下の 4 パターンにてそれぞれログが記録されるかを検証してみます。
結果としては以下となりました。
4 番でログが記録されたのが少し意外でしたが内部的には受信エンドポイントと同じような経路になっているのかなと妄想しました。
番号 | パターン | 結果 |
---|---|---|
1 | Azure Provided DNS を利用 | 〇 |
2 | Azure Private DNS zones を利用 | 〇 |
3 | Private Resolver 受信エンドポイントを利用 | 〇 |
4 | Private Resolver 送信エンドポイント&転送ルール&外部向けのフォワーダー | 〇 |
5 | カスタム DNS と外部 DNS へのフォワーダー | × |
また、ログの出力がほぼ一緒で、どの経路を通っているかの判別が難しかったのですが、4 のパターンだけは ResolutionPath が PrivateResolverResolution となることを確認できました。
検証して気づいたこと
特にアプリも起動させていない Azuzre VM (ubuntu) 1 台の 1 時間のログの量は約 430 レコードとなっていました。大規模環境ではアプリや台数によってさらに倍増するためログが肥大化する可能性があります。また、不測の事態でログおよび課金が増大する可能性もありますので、通常の Usage をふまえたうえで Log Analytics に日次上限を設定しておくとよいかもしれません。