DNSSECとは?DNSキャッシュポイズニングを防ぐ仕組みを理解する

DNSSEC

DNSSECとは?DNS応答の正当性を保証する仕組み

DNSはインターネットを支える重要な仕組みですが、設計当初はセキュリティをあまり考慮していませんでした。

そのため、攻撃者によって偽のDNS応答を送り込まれる危険性があります。

もしDNSの応答が改ざんされると、利用者は正規サイトではなく偽サイトへ誘導される可能性があります。

こうした問題を解決するために開発されたのがDNSSEC(DNS Security Extensions)です。

DNSSECはDNSの応答に電子署名を付与し、その情報が正しいことを検証できる仕組みです。

本記事ではDNSSECの仕組みや役割、運用時の注意点について解説します。

DNSSECとは

DNSSECは「DNS Security Extensions」の略です。

DNSに電子署名の仕組みを追加し、応答内容が改ざんされていないことを確認できるようにします。

DNSSECの目的は次の2つです。

  • DNS応答の真正性を保証する
  • DNS応答の改ざんを検知する

DNSSECは通信内容を暗号化する仕組みではありません。

応答内容の正当性を確認するための仕組みです。

DNSSECが必要になった背景

従来のDNSでは、応答内容が本当に正しいかを確認する仕組みがありませんでした。

そのため攻撃者が偽のDNS応答を送り込むことで、利用者を偽サイトへ誘導できる可能性がありました。

代表的な攻撃がDNSキャッシュポイズニングです。

DNSキャッシュポイズニングとは

DNSキャッシュポイズニングとは、キャッシュDNSサーバへ偽のDNS情報を登録させる攻撃です。

例えば本来の応答が次のような場合です。

www.example.com
↓
192.0.2.10

攻撃者が偽の応答を送り込みます。

www.example.com
↓
203.0.113.100

利用者は気付かないまま偽サイトへ接続してしまいます。

DNSSECの考え方

DNSSECでは、DNSレコードへ電子署名を付与します。

問い合わせを行った側は、その署名を検証します。

これによりDNS応答が本物かどうかを判断できます。


DNSレコード
↓
電子署名付与
↓
利用者が検証
↓
正当性確認

公開鍵暗号方式を利用する

DNSSECでは公開鍵暗号方式を利用します。

権威DNSサーバは次の鍵を持ちます。

  • 秘密鍵
  • 公開鍵

秘密鍵でDNS情報へ署名し、公開鍵で検証します。

これにより改ざんを検出できます。

DNSSECで追加されるレコード

DNSSECでは通常のDNSレコードに加えて、いくつかの専用レコードが追加されます。

  • DNSKEY
  • RRSIG
  • DS
  • NSEC
  • NSEC3

DNSKEYレコード

DNSKEYレコードは公開鍵を保持します。

example.com. IN DNSKEY ...

検証を行うために利用されます。

RRSIGレコード

RRSIGは電子署名そのものです。

example.com. IN RRSIG ...

DNS応答に付与されます。

利用者はDNSKEYを使って検証します。

DSレコード

DSレコードは親ゾーンと子ゾーンを結び付けます。

例えば次のような関係です。

.com
↓
example.com

親ゾーン側が子ゾーンの公開鍵情報を保持します。

これによって信頼の連鎖が成立します。

信頼の連鎖とは

DNSSECではチェーンオブトラスト(Chain of Trust)という考え方を利用します。

ルートゾーン
↓
.jp
↓
example.jp
↓
www.example.jp

上位ゾーンが下位ゾーンを保証する形で連鎖します。

最終的にルートDNSが信頼の起点となります。

DNSSECの名前解決

DNSSEC利用時の名前解決です。


PC
↓
キャッシュDNS
↓
権威DNS
↓
DNSレコード取得
↓
電子署名取得
↓
公開鍵取得
↓
検証
↓
応答

署名検証に失敗した場合は応答が拒否されます。

DNSSECのメリット

  • DNS応答改ざん防止
  • キャッシュポイズニング対策
  • 正規サイトへの接続保証
  • ドメイン乗っ取り対策強化

金融機関や官公庁などでも導入が進んでいます。

DNSSECのデメリット

DNSSECには運用上の課題もあります。

  • 設定が複雑
  • レコード数が増加する
  • 応答サイズが大きくなる
  • 鍵管理が必要

DNSSEC設定ミスによって名前解決不能になるケースもあります。

DNSSECと暗号化の違い

DNSSECは通信を暗号化しません。

よく混同される技術として次のものがあります。

  • DNSSEC
  • DoT(DNS over TLS)
  • DoH(DNS over HTTPS)
技術目的
DNSSEC応答の正当性保証
DoT通信暗号化
DoH通信暗号化

それぞれ目的が異なります。

digコマンドで確認する

DNSSEC情報を確認するには次のように実行します。

dig +dnssec example.com

RRSIGレコードなどが表示されます。

DNSSECが有効かどうかを確認できます。

DNSSEC障害の例

DNSSECでは鍵更新ミスが代表的な障害です。

  • DSレコード未更新
  • DNSKEY不一致
  • 署名期限切れ
  • ゾーン署名失敗

設定ミスによりドメイン全体が名前解決できなくなる場合があります。

クラウドDNSとDNSSEC

現在は多くのクラウドDNSサービスがDNSSECに対応しています。

  • Amazon Route53
  • Cloudflare DNS
  • Google Cloud DNS
  • Azure DNS

以前と比べて導入しやすくなっています。

実務で覚えておきたいポイント

  • DNSSECは改ざん検知技術
  • 通信暗号化ではない
  • 公開鍵暗号方式を利用する
  • 信頼の連鎖が重要
  • DSレコードが親子ゾーンを結ぶ
  • 設定ミスは大規模障害につながる

まとめ

DNSSECはDNS応答へ電子署名を付与し、その正当性を検証する仕組みです。

従来のDNSが抱えていたキャッシュポイズニングやDNS応答改ざんの問題を解決するために開発されました。

DNSKEY、RRSIG、DSレコードなどを利用し、ルートゾーンからの信頼の連鎖によって安全性を確保しています。

DNSSECは通信暗号化ではなく応答の正当性保証を目的とする技術です。

現代のDNSセキュリティを理解するうえで欠かせない重要な仕組みと言えるでしょう。