ローカルリゾルバーとしてpfSense(Unbound)を使用しています。歴史的に私はルート再帰解決でそれを指摘しました、なぜなら私は私の脅威をデータの信頼性と最新性(毒された/無効なDNS)とローカルISP DNS追跡として認識したからです。 (そうかどうかはわかりませんが、海外のルートDNSサーバーは個人的に接続されていない可能性があり、生成するクエリにはあまり興味がないと感じました。)主に関連性のあるIPv4を使用しています。
DNS追跡にすべての注意が払われて、いくつかの懸念と認識が生じました。
だから私の現在のリスクモデルはおそらくこのようなものです-
私はこれを解決するために仕事を入れてうれしいです、そして私がしていることを改善できると確信しています。ただし、DNSは根本的に安全ではないため、回避策が必要になります。
DNSの現状と匿名化テクノロジの現状を踏まえると、DNSクエリの脅威を軽減するための最善の方法は何ですか?
つまり、QNAME最小化( RFC 7816 )を使用してDNSSEC対応のリゾルバーをコンピューターにインストールするか、DNS over TLS( RFC 7858 )あなたが信頼/制御するリモートサーバーに向けて。
以前のセットアップはさまざまなケースに対応しており、いくつかの方法で組み合わせることができるので、今より詳細に。
最初のDNSSECは、どこでも適用できるように自分の側で使用できるものではなく、プライバシーを保護するものでもありません。 DNSSECが有効になっている(署名がある)ゾーンの場合、リゾルバーがそれらを検証すると、信頼性(偽のデータを取得できなかった)と整合性(変更またはダウングレードできなかった)が保証されます。これは便利でいくつかの問題を解決しますが:
したがって、その場合は、ISPまたはネットワーク上の誰もがトラフィックを盗聴しないように信頼する必要があります。誰でもあなたのDNSメッセージを監視し、DNSSECが有効になっていないメッセージを変更することができます。
もう1つのオプションは、この新しいプロトコルを使用するリモートDNSサーバーにTLSで接続することです。これには2つの利点があります。
もちろん、貧しい人の代替策は、UDPとTCPの両方を処理する必要があるため、IPSECまたはSSHトンネルを実行してほぼ同じ利点を得ることですが、複雑さはありません。またはSOCKSプロキシ。しかし、DNS over TLSは現在標準になっているため(少なくともRFC)、代わりにこの方法を採用する方が理にかなっている可能性があります。
私はあなたがこのリモートDNSサーバーを信頼/制御する必要があると言ったのは、明らかにすべてのDNSトラフィックを見るからです。したがって、信頼できるかどうかを定義するかどうかは、あなた次第です。パブリックオープンDNSプロバイダーの中には、最近CloudTLSのようにTLS over DNSを提供するものもあります:CloudFlare: https://developers.cloudflare.com/1.1.1.1/dns-over-tls/ しかしあなたはここで他の多くのものを見つけることができます: https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Test+Servers
完全に制御できないようなネームサーバーを使用する必要がある場合は、複数のものを使用し、それらの間でクエリを分散させて、1つではDNS全体を再構築できないように設定するようにアドバイスする人もいます。セッション。これは、ネームサーバーのリストがデフォルトで動作する標準的な方法ではないため、配置するのが少し複雑です。
補足として、HTTPSを介したDNSの標準は現在準備中であり、「すぐに」届くはずです。多くのプロバイダーがこのサービスを提供することになると思いますので、VPNプロバイダーの現在と同じジレマ(信頼する人など)になるでしょう。
また、「各DNSサーバーはドメインの1つのコンポーネントしか認識せず、ターゲット全体を認識することはできません。」今日は実際には間違っています。プロトコルはそれを可能にしますが、再帰ネームサーバーが名前全体(各ラベル)を各ステップで各権威ネームサーバーに送信していた時期を誰も覚えていないため、さまざまな理由によります。 QNAME最小化標準(RFC 7816)を使用して初めて、リゾルバーは毎回1つのラベルのみを送信してトラバーサルを実行できます。一部のネームサーバーはそれに対応していないため、これには問題がないわけではありません(したがって、一部の再帰型サーバーはフォールバック戦略を実装しています:最初にQNAMEの最小化を試み、失敗した場合は以前のようにフルネームで再度開始してください)