DNSとセキュリティまとめ

Sep 23, 2025 6 min

1. DNSの基本概念

ゾーン (Zone)

  • 定義: ドメイン名空間を分割・委任する管理単位。
  • 内容: ゾーンファイルにA, MX, NSなどのリソースレコードを保持。
  • 管理責任: SOA (Start of Authority) レコードにより責任者、シリアル番号、更新間隔を規定。
  • 役割: 分散型であるDNSにおける「境界」を形成し、可用性と冗長性を担保。

権威 (Authoritative)

  • 定義: ゾーン情報のオリジナルを保持するサーバ。
  • 特徴:
    • 正式な回答(AAフラグ付き)を返却。
    • キャッシュリゾルバが返す非権威応答と区別される。
  • セキュリティ的意義: 権威サーバが侵害されると、当該ドメイン全体の正当性が根本から崩壊する。

2. 主なDNSレコードとセキュリティ上の効果・リスク

レコード用途セキュリティ上の効果・リスク
A / AAAAホスト名 → IPv4/IPv6キャッシュポイズニングの標的。改ざんされると利用者が攻撃者サイトへ誘導される。
NSゾーンの権威サーバ指定不正変更でドメイン全体が攻撃者管理下に置かれる。
SOAゾーン管理情報改ざんによりゾーン転送制御や更新管理が攪乱され、偽情報拡散や情報漏洩を招く。
MXメール配送先指定攻撃者が指定するとメール盗聴・改ざん・拒否が可能に。
CNAME別名定義廃止サービスに紐づくとサブドメインテイクオーバーを誘発。
PTRIP → ホスト名逆引き不一致時にスパムフィルタ誤検知リスク。信頼性評価に直結。
TXT (SPF)メール送信許可範囲MAIL FROM のなりすまし防止。ただし転送時に破綻しやすい。
TXT (DKIM)メール署名検証公開鍵で検証し改ざんを検知。
TXT (DMARC)SPF/DKIMポリシー統合From 表示アドレスのスプーフィング抑止。
CAA証明書発行許可CA指定誤発行・不正発行を抑制。PKI強化策。
DNSKEY / RRSIGDNSSEC鍵・署名応答改ざんを暗号的に検知。キャッシュポイズニング無効化。

3. 再帰問い合わせとキャッシュポイズニング

再帰問い合わせの流れ

  1. クライアントがリゾルバへ問い合わせ。
  2. リゾルバは root → TLD → 権威サーバ と段階的に追跡。
  3. 応答をキャッシュに保存しクライアントへ返却。
  4. TTL有効期限内はキャッシュから応答し、トラフィックを軽減。

キャッシュポイズニング

  • 手口: 権威サーバからの応答より先に、偽の応答をリゾルバに注入。
  • 標的: 主に A レコード(Web誘導)や NS レコード(ゾーン全体の乗っ取り)。
  • 結果: 利用者は正規サービスと思い込みつつ攻撃サイトへ誘導され、フィッシング・マルウェア拡散が成立。

4. カミンスキー攻撃と従来型キャッシュポイズニング

項目従来型カミンスキー攻撃
手法トランザクションID/ポート番号を推測ランダムサブドメインを大量生成し、競合確率を高める
成功率低い(偶然性に依存)高い(短時間で成功可能)
攻撃範囲単一問い合わせドメイン全体(ゾーンキャッシュ汚染)
被害影響局所的権威応答が不要化し、全ユーザが偽情報を参照
対策- トランザクションIDランダム化
- ソースポートランダム化
上記に加え DNSSEC導入、サブドメインクエリ制御

5. UDPとTCPの偽装容易性

項目UDPTCP
通信方式コネクションレスコネクション型 (3-way handshake)
検証要素16bitトランザクションID + 送信元IP/ポートシーケンス番号同期、コネクション確立必須
偽装難易度容易(IDとポート推測で成立)困難(シーケンス番号事前把握が必要)
主用途DNS, VoIP, ストリーミングWeb, Mail, ファイル転送

➡️ DNSがUDPを使う理由: 軽量かつ低遅延での解決を優先。しかしこれが偽装容易性の温床となる。


6. DNSSECによる改ざん防止

  • 署名付き応答: 各レコードセット(RRset)にRRSIGを付与。
  • 検証手順: 応答時にDNSKEYを参照し署名を検証。改ざん検出が可能。
  • 信頼の連鎖: Root → TLD → ドメイン へと鍵を委譲し、階層的に検証。
  • 効果:
    • 偽応答は署名不一致により破棄される。
    • キャッシュポイズニングやカミンスキー攻撃を本質的に防御。

7. メール関連セキュリティ(SPFを中心に)

SPFの仕組み

  • DNS TXTで 「このドメインから送信できるIP」 を宣言。
  • 受信MTAは送信元IPと照合し、不正送信を拒否または隔離。

SPFレコード例

example.com. IN TXT "v=spf1 ip4:203.0.113.0/24 include:_spf.service.net -all
  • v=spf1: SPFバージョン識別
  • ip4:203.0.113.0/24: 許可IP範囲
  • include:: 外部サービスを許可
  • -all: 上記以外は拒否

SPFの効果と限界

  • MAIL FROM のなりすまし防止
  • ヘッダFrom偽装は防げない → DMARCと併用必須
  • 転送メールでSPF失敗する問題 → SRSやDKIMで補完

8. 代表的対策まとめ

攻撃対策
キャッシュポイズニングソースポートランダム化・トランザクションIDランダム化・DNSSEC導入
カミンスキー攻撃同上 + サブドメイン応答の厳格化、DNSSEC
メールスプーフィングSPF, DKIM, DMARC の三点セット
証明書誤発行CAAレコードによる発行CA制限
サブドメインテイクオーバーCNAME利用監査、不要レコード削除、外部サービス管理徹底

9. 理解度チェック

短答式・10問

  1. ゾーンとは何を管理する単位であり、その管理責任はどのレコードで示されるか?
  2. 権威サーバとキャッシュサーバの回答の違いは何か?
  3. Aレコードの改ざんが引き起こす典型的な攻撃手法と影響を1文で述べよ。
  4. MXレコードが不正に変更されるとどのようなリスクが発生するか?
  5. キャッシュポイズニング攻撃では、攻撃者はどのタイミングで偽の応答を注入するか?
  6. カミンスキー攻撃は従来型のキャッシュポイズニングと比べて成功率が高い理由は何か?
  7. DNSがUDPを主に使用する理由と、それがセキュリティ上どのような弱点になるかを述べよ。
  8. DNSSECが提供する改ざん防止の仕組みと、攻撃者が偽応答を注入した場合の結果を簡潔に説明せよ。
  9. SPFレコードは何を宣言し、メール受信側はそれをどう利用するか?
  10. サブドメインテイクオーバーを防ぐためにDNS上で注意すべき管理ポイントを1文で述べよ。

模範解答例

  1. ドメイン名空間を分割・管理する単位であり、管理責任はSOAレコードで示される。
  2. 権威サーバは正式なゾーン情報を返すのに対し、キャッシュサーバは権威応答を一時保存して返す非権威応答を返す。
  3. 攻撃者がAレコードを書き換えると、利用者を偽サイトに誘導してフィッシングやマルウェア配布が可能になる。
  4. 攻撃者がメール配送先を操作すると、メール盗聴や改ざん、配信拒否が発生するリスクがある。
  5. 権威サーバからの正式な応答が届く前に、リゾルバに偽の応答を注入する。
  6. ランダムサブドメインを大量に生成して応答競合を増やすことで、高速かつ確実にキャッシュを汚染できるため。
  7. 軽量かつ低遅延で名前解決を行うためUDPを使用するが、コネクションレスのため偽装やキャッシュ汚染が容易になる。
  8. 各レコードに署名(RRSIG)を付与し公開鍵で検証することで改ざんを検知し、偽応答は署名不一致で無効化される。
  9. ドメインから送信可能なIP範囲を宣言し、受信側は送信元IPと照合して不正送信を拒否または隔離する。
  10. 廃止されたCNAMEや外部サービスに紐づくサブドメインを削除・監査し、不要レコードを残さないよう管理する。

~Yu Tokunaga