DNSフィルタリングは、管理者のポリシーや脅威インテリジェンスに基づいて、リゾルバでのドメイン名クエリを許可、ブロック、またはリダイレクトするセキュリティ制御であり、禁止された接続が発生する前に阻止します。 ほぼすべてのネットワーク接続はDNSルックアップから始まるため、リゾルバーは、個々のエンドポイントにセキュリティエージェントをインストールすることなく、管理対象外デバイス、ゲストデバイス、IoT機器を含むすべてのデバイスに対して一元的にポリシーを適用するための理想的な適用ポイントとなります。 DNSフィルタリングは、攻撃チェーンの初期段階でフィッシングサイト、マルウェアホスト、コマンド&コントロールドメインを効果的にブロックし、不審な活動を特定するためのクエリログを提供しますが、その有効性は適切な管理にかかっています。 古くなったブロックリスト、過度に広範なカテゴリ、暗号化DNSのような監視されていないバイパス経路、および直接的なIP接続は、誤検知、可視性の欠如、および適用の一貫性の欠如を引き起こし、保護機能を損なう可能性があります。
DNSフィルタリングの仕組み
DNSフィルタリングでは、クライアントがリゾルバーにドメイン名をIPアドレスに変換するよう要求する時点で、ポリシーに基づく判断が行われます。リゾルバーは、応答する前にその名前を自身のルールと照合します。
- クライアントによるクエリの送信:ユーザーがWebページを開いたり、アプリケーションが起動したりした際など、デバイスが設定済みの再帰的リゾルバーに対してドメイン名のアドレスを問い合わせます。
- リゾルバーによるポリシーチェック:フィルタリング機能を備えたリゾルバーは、クエリされたホスト名を、許可リスト、ブロックリスト、カテゴリルール、および脅威インテリジェンスフィードと照合します。ポリシーは、ユーザー、デバイスグループ、またはネットワークセグメントごとに異なる場合があります。
- リゾルバーはアクションを適用します。名前が許可されている場合、リゾルバーは通常通り解決を行います。ブロックされている場合、リゾルバーはNXDOMAINなどのエラー、空の応答、またはブロックページやシンクホールのアドレスを返します。
- クライアントは結果を受け取ります。デバイスは実際の宛先に接続するか、あるいは接続が阻止されます。通常、リゾルバーは確認のためにクエリと実行されたアクションをログに記録します。
フィルタリングの対象となるのは、フィルタリング機能付きリゾルバを使用するトラフィックのみです。IPアドレスに直接接続するクライアントや、暗号化DNSを含め外部のリゾルバにクエリを送信するクライアントは、ネットワークがそれらの経路を制限していない限り、フィルタリングを迂回することができます。また、フィルタリングではページの内容ではなく、名前のみが判定の対象となります。
DNSフィルタリングにおける一般的な問題
ハードコードされたパブリックリゾルバーが設定されているデバイスや、DNS over HTTPS を使用するブラウザは、フィルタリングリゾルバーを完全にバイパスします。その結果、これらのクライアントではブロックされたサイトが通常通り読み込まれ、クエリログにも何も記録されません。
大まかなカテゴリルールや古いブロックリストにより、正当なサイト、コンテンツ配信ドメイン、またはソフトウェア更新用ホストがブロックされてしまうことがあります。ユーザーからは、アプリケーションが動作しない、あるいはページが部分的にしか読み込まれないといった報告が寄せられますが、その原因は、クエリログを検索してブロックされた名前を特定することで初めて判明します。
クエリが中間フォワーダーやNATデバイスを経由する場合、フィルタリングを行うリゾルバーにはそのデバイスのアドレスのみが表示されます。ユーザーやグループごとのポリシーを適用することはできず、ログから発信元のホストを特定することもできません。
クライアントおよび下流のリゾルバーは、レコードの有効期間(TTL)が切れるまで応答を保持します。新たに追加されたブロックは、すでにキャッシュされている名前に対しては適用が遅れることがあり、テスト中は適用に一貫性がないように見える場合があります。
ハードコードされたIPアドレスに接続するマルウェアは、決してルックアップを行わないため、DNSフィルタリングでは検出されません。リゾルバーのみに依存しているチームは、ファイアウォールやその他の制御手段でこのトラフィックをカバーしていない限り、このトラフィックを見逃してしまいます。