DNSSEC (Domain Name System Security Extensions) は、ドメイン ネーム システム (DNS) の応答を検証可能にすることで、DNS プロトコルのセキュリティを向上させるための一連の拡張機能です。 DNSSEC は、発信元の認証、データ整合性、不在認証の機能を提供します。 DNSSEC を使用すると、DNS プロトコルが特定の種類の攻撃 (特に DNS スプーフィング攻撃) を受ける可能性が大幅に減少します。
DNSSEC の動作のしくみ
DNS ゾーンは、DNSSEC をサポートする権限のある DNS サーバーで使用する場合、ゾーン署名と呼ばれるプロセスを使用して DNSSEC で保護できます。 DNSSEC を使用してゾーンに署名すると、DNS クエリと応答の基本的なメカニズムを変更することなく、ゾーンに検証のサポートが追加されます。
DNS 応答の検証は、DNS 応答に含まれるデジタル署名を使用して行われます。 これらのデジタル署名は、ゾーン署名中に生成され、ゾーンに追加される DNSSEC 関連のリソース レコードに含まれています。
コア DNSSEC 拡張機能は、次の RFC (Request for Comments) で規定されています。
- RFC 4033: "DNS セキュリティの概要と要件"
- RFC 4034: "DNS セキュリティ拡張機能のリソース レコード"
- RFC 4035: "DNS セキュリティ拡張機能のプロトコルの変更"
次の図は、ゾーン署名の前後に contoso.com ゾーンの DNS リソース レコードの例を示しています。
これらの各リソース レコードの詳細については、「DNSSEC リソース レコード」を参照してください。
DNSSEC リソース レコード
次の表は、DNSSEC で使用されるリソース レコードの種類を示します。
| リソース レコードの種類 | Description |
|---|---|
| リソース レコードの署名 (RRSIG) | DNSSEC を使用して生成された署名は、RRSIG レコードに格納されます。 各 RRSIG レコードは、デジタル署名の対象となるゾーン内の別のレコードと照合されます。 リゾルバーが 1 つの名前に対してクエリを実行すると、応答では 1 つ以上の RRSIG レコードが返されます。 |
| Next Secure (NSEC) | NSEC レコードを使用すると、DNS 名が存在しないことを証明できます。 NSEC レコードは、DNS クライアントを騙して DNS 名が存在しないと認識させることを目的としたスプーフィング攻撃を防止します。 |
| Next Secure 3 (NSEC3) | NSEC3 は、 ゾーンの歩行を防止する NSEC に代わる代替手段です。 ゾーン ウォークは、ゾーン内のすべての名前を取得するために NSEC クエリを繰り返すプロセスです。 Windows Server 2012 以降のオペレーティング システムを実行している DNS サーバーは、NSEC と NSEC3 の両方をサポートしています。 ゾーンへの署名には、NSEC または NSEC3 を使用できますが、両方を使用することはできません。 |
| Next Secure 3 パラメーター (NSEC3PARAM) | NSEC3PARAM レコードを使用すると、存在しない DNS 名の応答に含める NSEC3 を決定します。 |
| DNS キー (DNSKEY) | DNSKEY リソース レコードに格納されている公開暗号化キーは、署名の検証に使用されます。 DNSKEY レコードは、検証プロセス中に DNS サーバーによって使用されます。 DNSKEY レコードには、ゾーンに署名するキー (ZSK) またはキーに署名するキー (KSK) の公開キーを格納できます。 |
| 委任署名者 (DS) | DS レコードは、委任の保護に使用する DNSSEC レコードの種類です。 DS レコードを使用すると、子ゾーンへの認証チェーンを構築できます。 |
DS レコードを除き、これらのレコードはすべて、ゾーンが DNSSEC で署名されたときに自動的にゾーンに追加されます。 DS レコードは特殊なレコードであり、親ゾーンに手動で追加して、子ゾーンに対するセキュリティで保護された委任を作成できます。 たとえば、contoso.com ゾーンには、secure.contoso.com の DS レコードを含めることができます。 ただし、このレコードは親ゾーンに作成するか、子ゾーンに作成してから親ゾーンに反映する必要があります。 ゾーンに署名するとき、DS レコードは自動では作成されません。
NSEC レコードまたは NSEC3 レコードは、ゾーンの署名中に、自動的にゾーンに追加されます。 ただし、署名済みゾーンには、NSEC レコードと NSEC3 レコードを両方とも含めることはできません。 ゾーンに追加するレコードの種類 (NSEC または NSEC3) は、ゾーンの署名を構成する方法によって異なります。 前の例では、NSEC3 を使用してゾーンが署名されています。
トラスト アンカー
DNSKEY および DS リソース レコードは、 トラスト アンカー または トラスト ポイントとも呼ばれます。 トラスト アンカーは、署名済みゾーンの DNS 応答の DNSSEC 検証を実行するすべての非権威 DNS サーバーに配信する必要があります。 DNS サーバーがドメイン コントローラー上で実行されている場合、トラスト アンカーは Active Directory Domain Services (AD DS) のフォレスト ディレクトリ パーティションに格納され、フォレスト内のすべてのドメイン コントローラーにレプリケートできます。 スタンドアロン DNS サーバーでは、トラスト アンカーが TrustAnchors.dns というファイルに保存されます。
Windows PowerShell を使用して、 Get-DnsServerTrustAnchor コマンドを使用してゾーンのトラスト アンカーを表示します。 サーバー上のすべての現在の信頼ポイントを表示するには、 Get-DnsServerTrustPoint PowerShell コマンドを使用します。 Windows Server 2012 以降のオペレーティング システムを実行している DNS サーバーでは、構成済みのトラスト アンカーも、 トラスト ポイント コンテナーの DNS マネージャー コンソール ツリーに表示されます。
次のステップ
DNSSEC がリソース レコードを使用して DNS 応答を検証およびセキュリティで保護する方法の詳細については、「DNS 応答の検証」を参照してください。