DNSの仕組みと名前解決セキュリティ|キャッシュポイズニング攻撃・カミンスキー攻撃・DNSSEC
人が読みやすいドメイン名(例: `example.com`)と、コンピュータが通信に使うIPアドレス(例: `192.0.2.1`)を相互変換(名前解決)するインターネットの根幹インフラが「DNS(Domain Name System)」です。
情報セキュリティマネジメント試験(SG)では、DNSの階層構造(ルートDNS、権威DNS、キャッシュDNS)、主要なDNSレコードの種類、そして偽のIPアドレスをキャッシュに注入する「DNSキャッシュポイズニング攻撃」と「DNSSECによる署名検証」が頻出テーマとなります。
1. DNSの基本構造と名前解決の流れ
DNSは世界中に分散配置されたサーバが木構造(ツリー構造)を形成し、階層的に委任(Delegation)を行うことで巨大な名前空間を管理しています。
DNSサーバの役割 | 正式名称 | 果たすべき機能と責任 | セキュリティ上の管理原則 |
|---|---|---|---|
DNSコンテンツサーバ(権威DNSサーバ) | Authoritative Name Server | 自組織が管理するドメイン(ゾーン)の正式なレコード情報を保持し、外部からの問合せに回答する。 | 外部からの再帰的問合せは「拒否(無効化)」し、自ドメインの情報のみ回答する。 |
DNSキャッシュサーバ(フルサービスリゾルバ) | Recursive Caching Resolver | 社内PCなどのクライアントの代わりにルートDNSから順に反復問合せを行い、結果を一定期間(TTL)キャッシュして高速応答する。 | 社内LANからのみ利用を許可し、インターネット側からの再帰問合せは「遮断(オープンリゾルバ防止)」する。 |
主要なDNSレコード一覧
Aレコード:IPv4アドレス(ホスト名 → 32bit IPv4アドレス)
AAAAレコード:IPv6アドレス(ホスト名 → 128bit IPv6アドレス)
MXレコード:メール配送先(宛先ドメイン宛てのメールを中継するメールサーバのホスト名と優先度)
CNAMEレコード:別名(カノニカルネーム。あるホスト名を別の正式なホスト名に紐付ける)
PTRレコード:逆引き(IPアドレス → ホスト名)
TXTレコード:テキスト情報(SPFレコードによる送信ドメイン認証やドメイン所有権の証明に使用)
2. DNSキャッシュポイズニングとカミンスキー攻撃
DNSキャッシュポイズニングとは、DNSキャッシュサーバに対して偽の名前解決応答を送り込み、キャッシュ内に偽のIPアドレスを記憶させる攻撃です。
攻撃者は、標的のDNSキャッシュサーバに対して「存在しないサブドメイン(例: `12345.example.com`)」の問合せを送信する。
キャッシュサーバは、正規の権威DNSサーバへ反復問合せ(UDP問合せ)を行う。
攻撃者は、正規の権威DNSサーバからの返答が届く前に、偽のIPアドレス(フィッシングサイトのIP等)を記載した「偽の応答パケット」を大量にキャッシュサーバへ送りつける。
偽パケットの「トランザクションID(16bit)」と「問合せポート番号(16bit)」が偶然一致した場合、キャッシュサーバは偽情報を本物と誤認してキャッシュに登録する。
以降、社内PCが `example.com` にアクセスすると、すべて攻撃者の偽サイトへ誘導されてしまう。
DNSキャッシュポイズニングへの対抗策
対策技術 | 仕組みと効果 |
|---|---|
送信元ポートのランダム化(ソースポートランダマイゼーション) | キャッシュサーバが問合せを出す際、ポート番号(約6万通り)をランダムに変更する。トランザクションID(約6万通り)と掛け合わせることで、推測難易度を約40億分の1に引き上げる。 |
DNSSEC(DNS Security Extensions) | 権威DNSサーバが公開鍵暗号による「ディジタル署名」をレコードに付与し、キャッシュサーバが署名を検証する。偽の応答パケットは正しい秘密鍵で署名されていないため、100%確実に破棄される。 |
3. オープンリゾルバの危険性とDNSアンプ攻撃
【オープンリゾルバとは】インターネット上の不特定多数からの再帰的問合せを受け付けるよう誤設定されたDNSキャッシュサーバ。
攻撃者は送信元IPアドレスを標的企業のサーバに偽装(IPスプーフィング)し、オープンリゾルバへ大きな応答を返す問合せ(ANY問合せ)を送信します。すると、何十倍にも増幅(アンプ)された応答パケットが標的企業へ一斉に集中し、回線をパンクさせる
「DNSアンプ攻撃(DNSリフレクション攻撃)」の踏み台に悪用されます。
4. 科目B形式実戦シナリオ演習
演習1:社内DNSキャッシュサーバのオープンリゾルバ設定不備の是正
〔背景〕部品商社C社では、自社の社内LAN向けにDNSキャッシュサーバを運用している。ある日、プロバイダ(ISP)から「貴社のIPアドレスから外部のサーバに対して大量のDNS応答パケットが送信されており、DDoS攻撃の踏み台として悪用されている疑いがある」との通告を受けた。
〔調査結果〕インフラ担当者がDNSサーバの設定を確認したところ、ファイアウォールでポート53(UDP/TCP)がインターネット全体から制限なく開放されており、DNSサーバソフトウェアが任意のIPアドレスからの再帰問合せを許可する設定(オープンリゾルバ状態)になっていた。
〔設問〕この問題に対する是正策として、最も適切な処置の組み合わせはどれか。
ア:ファイアウォールでポート53のアウトバウンド通信のみを遮断し、インバウンド通信は全開放を維持する。
イ:DNSサーバの設定を変更して社内LANセグメント(プライベートIPアドレス)からの問合せのみを受け付けるようアクセス制御を設定し、ファイアウォールで外部からのポート53宛てアクセスを遮断する。
ウ:DNSサーバのOSを再起動し、IPアドレスを動的DHCPに変更する。
エ:DNSレコードのTTL(Time to Live)を0秒に設定し、キャッシュの保持を完全に禁止する。
【解答と解説】
正解:イ
解説:DNSキャッシュサーバが外部からの再帰問合せに応答する状態(オープンリゾルバ)は、DNSアンプ攻撃の踏み台として悪用される極めて危険な構成です。社内向けのDNSキャッシュサーバは、社内LANのIPアドレス範囲からのみアクセスを許可し、インターネット側からの直接アクセスはファイアウォールで遮断するのが鉄則です。
演習2:DNSSECの導入による名前解決の信頼性保証
〔背景〕ネット銀行D社では、利用者がオンラインバンキングへアクセスする際に、DNSキャッシュポイズニングによって偽のフィッシングサイトへ誘導されるリスクを根本的に排除したいと考えている。
〔設問〕DNSSEC(DNS Security Extensions)を導入することで担保されるセキュリティ効果として、最も適切なものはどれか。
ア:DNSの通信経路がすべてAES-256によって暗号化され、通信内容の盗聴が完全に防止される。
イ:権威DNSサーバが公開鍵暗号によるディジタル署名をDNS応答に付与し、キャッシュDNSサーバがその署名を検証することで、応答データの非改ざん性(完全性)と送信元ドメインの正当性(真正性)が保証される。
ウ:DNSサーバへの過剰な問合せアクセスが自動的に分散され、DDoS攻撃を受けてもサーバが停止しなくなる。
エ:PCとDNSサーバ間の通信速度が従来の10倍に向上する。
【解答と解説】
正解:イ
解説:DNSSECは、DNS通信を暗号化する技術ではなく、公開鍵暗号による「ディジタル署名」をDNS応答レコードに付与する技術です。キャッシュサーバ側で親ゾーンから続く「信頼の連鎖(Trust Chain)」をたどって署名を検証することにより、途中で第三者が改ざんした偽のDNS応答(ポイズニングパケット)を確実に検知・破棄できます。
5. まとめと試験直前チェックリスト
権威DNS(コンテンツサーバ):自ドメインの情報を持ち外部に回答。再帰問合せは禁止
キャッシュDNS(リゾルバ):社内PCの代理で反復問合せ。社外へのオープンリゾルバ化を厳重禁止
DNSキャッシュポイズニング:偽の応答を割り込ませて偽サイトへ誘導する攻撃
ソースポートランダマイゼーション:問合せポートをランダム化して推測難易度を劇的に向上
DNSSEC:ディジタル署名によってDNS応答の「完全性(改ざん検知)」と「真正性」を保証
次におすすめの学習
編集・検証について
編集・検証:IT資格ラボ編集部
IPAが公開する試験要綱・シラバス・過去問題と、各技術の公式資料を優先して内容を確認しています。制度変更や誤りを確認した場合は、記事を見直して更新します。
編集方針・情報源・訂正方針を見る