ガイドNW

権威DNSとキャッシュDNSの分離設計およびDNSSECの実装

公開: 2026-10-06
権威DNSとキャッシュDNSの完全分離設計およびDNSSECを徹底解説。オープンリゾルバの危険性、カミンスキー攻撃とソースポートランダム化、EDNS0の罠、信頼の連鎖(DS/DNSKEY/RRSIG)、午後・科目B実戦演習を収録。

1. 概要と本質:なぜ権威とキャッシュの完全分離が必須なのか

DNS(Domain Name System)は、ドメイン名とIPアドレスを相互変換し、インターネットのあらゆるサービス(Web、メール、API)の入口を支える最重要インフラです。

初期のインターネットでは、1台のDNSサーバが「自社ドメインの情報を外部に教える機能」と「社内クライアントのために外部ドメインを検索する機能」を兼ね備えて運用されることが一般的でした。 しかし、この混在構成は現代のセキュリティにおいて極めて危険な脆弱性構成(アンチパターン)です。外部からの問合せを受け付けるサーバで再帰問合せを許可していると、「オープンリゾルバ」としてDNSアンプ(増幅)DDoS攻撃の踏み台に悪用されるほか、内部キャッシュが偽情報で上書きされる「DNSキャッシュポイズニング攻撃」の格好の標的となります。

ネットワークスペシャリスト(NW)午後・科目B試験では、「権威DNSサーバ(コンテンツDNS)」と「キャッシュDNSサーバ(フルサービスリゾルバ)」の役割と配置の厳密な分離、カミンスキー型キャッシュポイズニングの攻撃原理とソースポートランダム化、そして暗号技術によって名前解決の改ざんを完全に防ぐ「DNSSEC(DNS Security Extensions)」の信頼の連鎖(Chain of Trust)が反復して問われます。 本稿では、パケットヘッダのフラグ遷移からゾーン設計、障害切り分けまでを一気通貫で解説します。


2. 権威DNSとキャッシュDNSのアーキテクチャ分離

DNSの名前解決に関わるエンティティは、明確に役割が分かれています。

2.1 2つの問合せ形態とサーバの役割定義

比較項目

権威DNSサーバ(Authoritative DNS)

キャッシュDNSサーバ(Cache DNS / Resolver)

別名

コンテンツDNSサーバ、ゾーンサーバ

フルサービスリゾルバ、再帰問合せDNS

保持データ

自身が管理権限を持つゾーン情報のみ(ゾーンファイル)

外部から問い合わせて得た回答の一時キャッシュ

対応する問合せ

反復問合せ(Iterative Query) にのみ応答

クライアントからの 再帰問合せ(Recursive Query) に応答

再帰検索の実施

行わない(絶対無効化)

クライアントに代わってルートから順次反復問合せを実施

外部公開

全世界のインターネットへ公開(UDP/TCP 53開放)

社内LANや自組織クライアントからのみアクセス許可(外部遮断)

オープンリゾルバ化のリスク

再帰検索を有効にしていると踏み台化する

外部からアクセス可能になっていると踏み台化する


3. キャッシュポイズニング攻撃と多層防御技術

3.1 カミンスキー型キャッシュポイズニングの攻撃原理

従来のキャッシュポイズニングは、TTLが切れるのを待つ必要があり攻撃成功率が低いものでした。しかし2008年にDan Kaminsky氏が発表した手法は、「実在しないサブドメイン(例: `random123.example.jp`)」を大量にキャッシュDNSへ問い合わせることで、TTLに関係なく瞬時に攻撃を成立させます。

3.2 ソースポートランダム化(SPR)による防御

DNSのUDPヘッダにある トランザクションID(TXID)は 16ビット(65,536通り) しかありません。毎秒数千パケットを送り込める攻撃者にとって、65,536通りのブルートフォースは数秒で突破可能です。

  • 対策(ソースポートランダム化: Source Port Randomization):

- キャッシュDNSが上位権威DNSへ問合せパケットを送信する際、送信元ポート番号(UDP Source Port)を固定せず、エフェメラルポート範囲(約1024〜65535の約60,000通り)から毎回ランダムに選択する。 - 攻撃者は 「TXID(16bit:約6.5万通り) × 送信元ポート(16bit:約6万通り) ≒ 約40億通り(2322^{32})」 の組み合わせを同時に的中させなければならず、攻撃成功率は天文学的に低下する。


4. EDNS0とUDPフラグメンテーションの落とし穴

RFC 1035で策定された本来のDNS over UDPのパケットサイズ上限は 512バイト です。 しかし、後述するDNSSECの暗号署名や鍵情報、IPv6のAAAAレコードを格納すると、512バイトを容易に超過します。

4.1 EDNS0(Extension Mechanisms for DNS: RFC 6891)

DNSメッセージ内に 「OPT疑似リソースレコード(OPT RR)」 を追加することで、クライアントおよびサーバが対応可能なUDPパケットサイズ(例: 4,096バイトや1,232バイト)を通知し、512バイトを超えるUDP通信を可能にする規格です。

[!CAUTION] 試験頻出の落とし穴:UDPフラグメンテーションとファイアウォールによるドロップ - 問題: EDNS0で大きなパケット(例: 2,000バイト)をUDPで送信すると、IP層でフラグメンテーション(パケット分割)が発生する。 - 障害事象: 2番目以降のIPフラグメントパケットにはUDPヘッダ(ポート番号)が存在しないため、ステートフルファイアウォールやセキュリティアプライアンスが攻撃パケットと見なして破棄(ドロップ)してしまう。 - 結果: キャッシュDNSは上位DNSからの応答を永久に受信できず、タイムアウトして名前解決に失敗する。 - 現代の設計推奨: EDNS0バッファサイズをイーサネットMTU(1,500バイト)からIP・UDPヘッダ等を引いた 1,232バイト 以下に設定し、超過時は安全に TCPフォールバック(TCフラグ=1) させる。


5. DNSSECの信頼の連鎖(Chain of Trust)

ソースポートランダム化でも、経路上に割り込める攻撃者(中間者攻撃: MitM)による応答改ざんは防げません。 「応答データが改ざんされていないこと(完全性)」および「本当にそのゾーンの正当な権威DNSから送られたこと(真正性)」を公開鍵暗号の電子署名で証明するのが DNSSEC です。

5.1 DNSSECの主要レコード種別

レコード

名称

役割

DNSKEY

DNS Public Key

ゾーンの公開鍵(KSKまたはZSK)を保持するレコード。

RRSIG

Resource Record Signature

AレコードやMXレコードなどのRRsetに対して、秘密鍵で生成された電子署名。有効期限(Inception / Expiration)を持つ。

DS

Delegation Signer

親ゾーンに登録されるレコード。子ゾーンのKSKのハッシュ値を保持し、親から子への信頼を繋ぐ。

NSEC / NSEC3

Next Secure

指定したドメイン名が存在しないこと(否定応答: NXDOMAIN)を暗号的に証明するレコード。NSEC3はゾーン内部の全レコードを一覧取得される「ゾーンウォーキング(Zone Walking)」を防ぐためハッシュ化されている。

5.2 KSKとZSKの2階層構造の理由

なぜ鍵を2種類(KSKとZSK)に分けるのか?

  • ZSK(Zone Signing Key): 日常的にゾーン内のレコード(Aレコード等)に署名する鍵。頻繁に更新(ロールオーバー)したい。

  • KSK(Key Signing Key): ZSK自身(DNSKEYレコード)に署名するための親鍵。

  • 理由: ZSKを更新するたびに親レジストリ(JPRSやレジストラ)に申請してDSレコードを書き換えてもらうのは運用負荷が極めて高いため、親ゾーンにはKSKのハッシュ(DSレコード)のみを登録し、子ゾーン内だけで日常的なZSKのロールオーバーを完結させる。


6. 午後・科目B形式 実戦演習

【問題シナリオ】

インターネット通販を運営するD社は、社内ネットワークのセキュリティ監査を実施した。 D社の公開Webサイト用ドメイン shop-d.co.jp を管理する権威DNSサーバ(DNS-Auth)と、社内LANのPC端末(約500台)が利用するキャッシュDNSサーバ(DNS-Cache)の運用状態を調査したところ、以下の構成となっていた。

【監査での指摘事項】:

  1. 統合DNSサーバは1台の物理サーバで構築されており、BINDの設定ファイルで recursion yes;(再帰問合せ有効)のまま、インターネット側からのUDP 53番ポート宛て通信をすべて許可していた。

  2. 統合DNSサーバはDNSSECを未導入であり、OSのパケットフィルタによりUDP送信元ポートが53番固定で上位DNSへ反復問合せを行っていた。


【設問1】

指摘事項1の構成において、外部の悪意ある第三者がこの統合DNSサーバを踏み台として利用し、第三者のターゲットサーバに対して大規模なDDoS攻撃(DNSアンプ攻撃)を実行するメカニズムについて、攻撃者が送信するパケットの送信元IPアドレス、およびDNS応答パケットの特徴に着目し、35字以内で述べよ。

解答への思考プロセス

  • 攻撃メカニズムの整理:

- DNSアンプ攻撃(DNS Amplification Attack)は、UDPの「送信元IPアドレス偽装(IPスプーフィング)」が容易である性質を悪用する。 - 攻撃者は、送信元IPアドレスを「攻撃対象(被害者)のIPアドレス」に偽装する。 - DNSサーバに対して、応答サイズが極めて大きくなるクエリ(例: ANY . や EDNS0を用いた大容量署名レコード)を送信する。 - オープンリゾルバとなっているDNSサーバは、偽装された送信元(被害者)に向けて、送信要求の何十倍〜何百倍もの巨大な応答パケットを集中砲火する。

  • 設問要求の確認:

- 「送信元IPアドレス」=標的サーバのIPアドレスに偽装 - 「DNS応答パケットの特徴」=要求より増幅された大容量パケット - 35字以内でまとめる。

  • 文章作成:

- 送信元を標的に偽装し、増幅した大容量応答パケットを送りつける。(31字)

模範解答

送信元を標的に偽装し、増幅した大容量応答パケットを送りつける。(31字)

減点・失点分析

  • ×「再帰問合せ機能を使って内部情報を盗み出す。」(アンプ攻撃の内容になっていない。0点)

  • △「大量のDNSクエリを送信してサーバを落とす。」(DNSサーバ自体を落とすDoS攻撃と混同しており、アンプ攻撃の「標的へ向けて増幅パケットを跳ね返す」という本質が抜けている)


【設問2】

D社がセキュリティを抜本的に改善するため、サーバを「公開権威DNS」と「社内キャッシュDNS」に物理的に2台分離することにした。 このうち、新設する「社内キャッシュDNSサーバ」のセキュリティ設定およびネットワークアクセス制御として講じるべき対策を、アクセス元IPアドレスの制限に着目して35字以内で述べよ。

解答への思考プロセス

  • 要件と改善策:

- キャッシュDNSサーバが外部から利用可能になっている状態(オープンリゾルバ)を完全に解消する。 - キャッシュDNSへの再帰問合せ要求(UDP/TCP 53)は、「社内LAN(自社クライアント端末のIPアドレス空間)」からのみ許可し、インターネット(外部ネットワーク)からのアクセスはファイアウォールで全て破棄(遮断)する。

  • 字数制限への圧縮:

- 「再帰問合せの受付を社内LANのIPアドレス範囲からのみに限定する。」(34字)

模範解答

再帰問合せの受付を社内LANのIPアドレス範囲からのみに制限する。(34字)

減点・失点分析

  • ×「ルートDNSへのアクセスを禁止する。」(外部の名前解決ができなくなるため完全に誤り)

  • △「ファイアウォールでポート53を閉じる。」(社内からの通信まで閉じてしまうと社内PCが名前解決できなくなるため不正確)


7. まとめと次ステップ

DNSインフラの堅牢化は、現代のネットワーク設計において避けて通れない必須項目です。

  • 権威DNSは外部公開し、自ゾーン情報のみを回答(再帰問合せは厳禁)。

  • キャッシュDNSは社内LANに閉じ、外部からのアクセスを完全遮断。

  • ソースポートランダム化とDNSSEC(DS→DNSKEY→RRSIG連鎖)で偽装・汚染を完全排除する。

次稿 NWP-07(ロードバランサ(L4/L7)による負荷分散とSSLオフロード設計) では、Webシステムのスケーラビリティと可用性を支えるロードバランサの分散アルゴリズム、SSLオフロード、Cookieセッションパーシステンスの実務設計を深掘りします。

次におすすめの学習

この記事を共有する

編集・検証について

編集・検証:IT資格ラボ編集部

IPAが公開する試験要綱・シラバス・過去問題と、各技術の公式資料を優先して内容を確認しています。制度変更や誤りを確認した場合は、記事を見直して更新します。

編集方針・情報源・訂正方針を見る