次の方法で共有


DNS トラフィックをセキュリティで保護して表示する

この記事では、DNS セキュリティ ポリシー を使用して仮想ネットワークの DNS トラフィックを表示およびフィルター処理し、Azure DNS の脅威インテリジェンス フィードを使用して DNS トラフィックをセキュリティで保護する方法について説明します。

前提条件

セキュリティ ポリシーを作成する

Azure portal または PowerShell を使用してセキュリティ ポリシーを作成するには、次のいずれかの方法を選択します。

Azure portal を使用して DNS セキュリティ ポリシーを作成するには:

  1. Azure portal の [ホーム] ページで DNSセキュリティ ポリシーを検索して選択します。 また、Azure Marketplace から [DNS セキュリティ ポリシー] を選択することもできます。

  2. [+ 作成] を選択して新しいポリシーの作成を開始します。

  3. [基本] タブで、[サブスクリプション][リソース グループ] を選択するか、新しいリソース グループを作成します。

  4. [インスタンス名] の横に DNS セキュリティ ポリシーの名前を入力し、セキュリティ ポリシーを適用する [リージョン] を選択します。

    DNS セキュリティ ポリシーは、セキュリティ ポリシーと同じリージョン内の VNet にのみ適用できます。

    セキュリティ ポリシーの [基本] タブのスクリーンショット。

  5. [次へ: 仮想ネットワーク リンク] を選択し、次に [+ 追加] を選択します。

  6. セキュリティ ポリシーと同じリージョンの VNet が表示されます。 1 つ以上の利用可能な VNet を選び、[追加] を選びます。 既に別のセキュリティ ポリシーに関連付けられている VNet を選択することはできません。 次の例では、2 つの VNet がセキュリティ ポリシーに関連付けられており、選択可能な VNet は 2 つです。

    セキュリティ ポリシーの [仮想ネットワーク リンク] タブのスクリーンショット。

  7. 選択された VNet が表示されます。 必要に応じて、仮想ネットワーク リンクを作成する前に、リストから VNet を削除できます。

    仮想ネットワーク リンクのリストのスクリーンショット。

    仮想ネットワーク リンクは、選択されているかどうかにかかわらず、リストに表示されている全ての VNet に対して作成されます。 チェックボックスを使用して、リストから削除する VNet を選択します。

  8. [確認および作成] を選択し、次に [作成] を選択します。 [次へ: DNS トラフィック ルール] の選択はここではスキップしますが、今すぐトラフィック ルールを作成することもできます。 このガイドでは、トラフィック ルールと DNS ドメイン リストを作成し、後で DNS セキュリティ ポリシーに適用します。

ログ分析ワークスペースを作成する

既に使用する Log Analytics ワークスペースがある場合は、このセクションをスキップします。

Azure portal を使用して Log Analytics ワークスペースを作成するには:

  1. Azure portal の [ホーム] ページで、Log Analytics ワークスペースを検索して選択します。 Azure Marketplace から [Log Analytics ワークスペース] を選択することもできます。

  2. [+ 作成] を選択して新しいワークスペースの作成を開始します。

  3. [基本] タブで、[サブスクリプション][リソース グループ] を選択するか、新しいリソース グループを作成します。

  4. [名前] の横にワークスペースの名前を入力し、ワークスペースの [リージョン] を選択します。

    セキュリティ ポリシーの仮想ネットワーク リンクのリストのスクリーンショット。

  5. [確認および作成] を選択し、次に [作成] を選択します。

診断設定を構成する

Log Analytics ワークスペースができたので、このワークスペースを使用するようにセキュリティ ポリシーの診断設定を構成します。

診断設定を構成するには:

  1. 作成した DNS セキュリティ ポリシー (この例では myeast-secpol) を選択します。

  2. [監視][診断設定] を選択します。

  3. [診断設定の追加] を選択します。

  4. [診断設定の名前] の横に、ここで収集するログの名前を入力します。

  5. [ログ][メトリック] で "すべて" のログとメトリックを選択します。

  6. [診断の詳細][Log Analytics ワークスペースに送信する] を選択し、作成したサブスクリプションと ワークスペースを選択します。

  7. [保存] を選択します。 次の例を参照してください。

    セキュリティ ポリシーの診断設定のスクリーンショット。

DNS ドメイン リストを作成する

Azure portal を使って DNS ドメイン リストを作成するには:

  1. Azure portal の [ホーム] ページで DNS ドメイン リストを検索して選択します。

  2. [+ 作成] を選択して新しいドメイン リストの作成を開始します。

  3. [基本] タブで、[サブスクリプション][リソース グループ] を選択するか、新しいリソース グループを作成します。

  4. [ドメイン リスト名] の横にドメイン リスト名を入力し、リストの [リージョン] を選択します。

    セキュリティ ポリシーには、同じリージョン内のドメイン リストが必要です。

  5. [次へ: DNS ドメイン] を選択します。

  6. [DNS ドメイン] タブで、ドメイン名を 1 つずつ手動で入力するか、コンマ区切り値 (CSV) ファイルからインポートします。

    DNS ドメイン リストの作成のスクリーンショット。

  7. ドメイン名の入力が完了したら、[確認と作成] を選択し、[作成] を選択します。

必要に応じて、詳細なドメイン リストを作成するためにこのセクションを繰り返します。 各ドメイン リストは、次の 3 つのアクションのいずれかを持つトラフィック ルールに関連付けることができます。

  • 許可: DNS クエリを許可し、ログに記録します。
  • ブロック: DNS クエリをブロックし、ブロック アクションをログに記録します。
  • アラート: DNS クエリを許可し、アラートをログに記録します。

1 つの DNS トラフィック ルールから複数のドメイン リストを動的に追加または削除できます。

DNS トラフィック ルールを構成する

DNS ドメイン リストができたので、このワークスペースを使用するようにセキュリティ ポリシーの診断設定を構成します。

CNAME チェーンが調べられ ("追跡され")、ドメインに関連付けられているトラフィック ルールを適用する必要があるかどうかを判断します。 たとえば、malicious.contoso.com に適用されるルールは、adatum.commalicious.contoso.com にマップされる場合、または malicious.contoso.comadatum.com の CNAME チェーンのどこかに表示される場合は、adatum.com にも適用されます。

診断設定を構成するには:

  1. 作成した DNS セキュリティ ポリシー (この例では myeast-secpol) を選択します。

  2. [設定] で、[DNS トラフィック ルール] を選択します。

  3. [+ 追加]を選択します。 [DNS トラフィック ルールの追加] ペインが開きます。

  4. [優先度] の横に、100 - 65000 の範囲の値を入力します。 ルールの数値が小さいほど優先度が高くなります。

  5. [ルール名] の横にルールの名前を入力します。

  6. [DNS ドメイン リスト] の横で、このルールで使用するドメイン リストを選択します。

  7. [トラフィック アクション] の次に、選択したドメインに適用するアクションの種類に基づいて、[許可][ブロック]、または [アラート] を選択します。 この例では [許可] が選択されています。

  8. 既定の [ルールの状態][有効] のままにして、[保存] を選択します。

    DNS トラフィック ルールの作成のスクリーンショット。

  9. ビューを更新して、ルールが正常に追加されたことを確認します。 トラフィック アクション、DNS ドメイン リスト、ルールの優先度、ルールの状態を編集できます。

    DNS トラフィック ルールのスクリーンショット。

脅威インテリジェンス フィードを使用して DNS トラフィックをセキュリティで保護する

脅威インテリジェンス フィードは、バックグラウンドで継続的に更新されるフル マネージド ドメインリストです。 DNS セキュリティ ポリシー内では、他の標準ドメイン リストと同様に扱われます。優先順位と選択したアクション (許可、ブロック、またはアラート) に対して同じ構成モデルを使用します。

新しい DNS トラフィック ルールを追加して選択し、適用するアクションとそれぞれの優先度で構成します。

Azure DNS 脅威 intel を選択して、脅威インテリジェンス フィードを DNS トラフィック ルールに関連付けます。

脅威インテリジェンス フィードの有効化のスクリーンショット。

アクションと優先度を構成します。

脅威インテリジェンス ルールのスクリーンショット。

DNS ログを表示してテストする

  1. DNS セキュリティ ポリシーに移動し、[監視][診断設定] を選択します。
  2. 以前にセキュリティ ポリシーに関連付けた Log Analytics ワークスペース (この例では secpol-loganalytics) を選択します。
  3. 左側の [ログ] を選びます。
  4. 同じリージョン内の IP アドレス 10.40.40.4 の仮想マシンからの DNS クエリを表示するには、次のようにクエリを実行します。
DNSQueryLogs
| where SourceIpAddress contains "10.40.40.4"
| limit 1000

次の例を参照してください。

Log Analytics クエリの例のスクリーンショット。

contoso.com を含むトラフィック ルールが [許可] クエリに設定されていたことを思い出してください。 仮想マシンからのクエリは正常に応答します。

C:\>dig db.sec.contoso.com +short
10.0.1.2

ログ分析でクエリの詳細を展開すると、次のようなデータが表示されます。

  • 操作名: 応答_成功
  • リージョン: eastus
  • QueryName: db.sec.contoso.com
  • クエリタイプ: A
  • 送信元IPアドレス: 10.40.40.4
  • 解決方法: PrivateDnsResolution
  • リゾルバポリシールールアクション: 許可

トラフィック ルールを編集して [ブロック] の contoso.com クエリに設定すると、仮想マシンからのクエリの王乙が失敗します。 ルールのコンポーネントを変更する場合は、必ず [保存] を選択してください。

編集とトラフィック ルールのスクリーンショット。

この変更により、次のようにクエリが失敗します。


C:\>dig @168.63.129.16 db.sec.contoso.com 
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> db.sec.contoso.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26872
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
 
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1224
; COOKIE: 336258f5985121ba (echoed)
;; QUESTION SECTION:
; db.sec.contoso.com. IN  A
 
;; ANSWER SECTION:
db.sec.contoso.com. 1006632960 IN CNAME blockpolicy.azuredns.invalid.
 
;; AUTHORITY SECTION:
blockpolicy.azuredns.invalid. 60 IN     SOA     ns1.azure-dns.com. support.azure.com. 1000 3600 600 1800 60
 
;; Query time: 0 msec
;; SERVER: 168.63.129.16#53(168.63.129.16) (UDP)
;; WHEN: Mon Sep 08 11:06:59 UTC 2025
;; MSG SIZE  rcvd: 183

失敗したクエリは次のログ分析に記録されます。

失敗したクエリのスクリーンショット。

クエリの結果がログ分析に表示されるまで、数分かかる場合があります。