AD DSにおいて、名前解決やフォレストのツリー構造を決定する「ドメインネームシステム(DNS)」サービスにも、セキュリティ強化の波が訪れた。従来のDNSには、ゾーンやレコード情報の信憑性を検査する仕組みがなかったため、意図的に偽レコード情報を流して、本物とは異なるWebサイトなどに誘導する攻撃手法が編み出された。これに対抗するために、Windows Server 2012のDNSサーバーには「DNSSEC(DNS Security Extensions)」が搭載された。

 Windows Server 2012におけるDNSサーバーの新機能と強化点は表4のとおり。

表4●DNSサーバーの新機能と強化点
表4●DNSサーバーの新機能と強化点

DNSSEC 対応

画面7●公開鍵暗号方式とデジタル署名を利用してレコードの正当性を検証できる「DNSSEC」に対応した
画面7●公開鍵暗号方式とデジタル署名を利用してレコードの正当性を検証できる「DNSSEC」に対応した
[画像のクリックで拡大表示]
画面8●DNSSECに対応したリソースレコードの種類
画面8●DNSSECに対応したリソースレコードの種類
[画像のクリックで拡大表示]

 Windows Server 2012のDNSサーバーは、公開鍵暗号方式とデジタル署名を利用してレコードの正当性を検証可能にした「DNSSEC」に対応している(画面7)。DNSSECでは、次の4種類のリソースレコードを追加で使用する(画面8表5)。

 DNSSECに対応したDNSサーバー間では、次の手順で応答の信憑性とデータの完全性を検証する。

1.DNS1では、ゾーン1に対して秘密鍵を使って暗号化を行い、DNSKEYレコードで対応する公開鍵を提供している。また、リソースレコードについてもハッシュ値を秘密鍵で暗号化して、RRSIGレコードでデジタル署名として公開している。
2.DNS2からDNS1に問い合わせを行い、ゾーンの公開鍵、リソースレコードのデータ、レコードに対応するデジタル署名を得る。
3.ゾーンの公開鍵でデジタル署名を復号化してハッシュ値1を得る。また、リソースレコードのデータを同じ計算式を通してハッシュ値2を得て、ハッシュ値1と比較する。
4.ハッシュ値1とハッシュ値2が等しければ、ゾーンやレコード情報は間違いなくDNS1から得られたもので、改ざんが行われていないことが証明できる。

表5●DNSSECで使用するリソースレコード
表5●DNSSECで使用するリソースレコード

 しかし、NSECレコードを使うと次々と実在するゾーン名を取り出す「ゾーン列挙(Zone enumeration)」が可能になり、新たな攻撃の足がかりに利用されてしまうことが判明した。そこで、ゾーン名の代わりにゾーンのハッシュ値を返すことで、ドメイン名が流出しないように改良を加えたのが「NSEC3」レコードになる。Windows Server 2012のDNSサーバーは、このNSEC3に対応している。

 なお、DNSSECで使用する秘密鍵と公開鍵の生成、保管、期限切れ、交換については、AD DSと「自動ロールオーバー」機能によって簡略化されている。