ネットワークセキュリティの現場で避けて通れないのが、メールのなりすまし対策とドメインの安全な運用です。送信ドメイン認証技術(SPF・DKIM・DMARC)とDNSセキュリティ(DNSキャッシュポイズニング・DNSSEC)は、インフラエンジニアやセキュリティ担当者が日常的に直面するテーマであり、情報処理技術者試験の午後問題でも毎年必出の最重要分野です。
英略語の丸暗記だけでは、複雑なネットワーク構成図を読み解く応用問題には太刀打ちできません。「誰が」「どのプロトコルで」「何を証明・保護しているのか」を通信フローの動作レベルまで落とし込んで理解することが、確実な得点源にするための最短ルートです。
本記事では、メール認証とDNSの仕組みを図解と設定例を交えて体系的に解説します。あわせて、実際の試験で出題された過去問のシナリオを引用し、解答を導くための思考プロセスも詳しく紹介します。
DNSの基本アーキテクチャとサイバー攻撃の脅威
DNS(Domain Name System)は、IPアドレスとドメイン名を結びつける分散型データベースシステムです。このシステムが攻撃されると、ユーザーがフィッシングサイトに誘導されたり、機密メールが攻撃者のサーバーへ転送されたりするなど、組織に致命的な被害をもたらします。
DNSの階層構造と名前解決のメカニズム
名前解決には、主に以下の3つのコンポーネントが関与します。
- スタブリゾルバ(Stub Resolver):クライアント端末上で動作し、DNSの問い合わせを開始する小さなプログラム。ユーザーの要求を受け取り、キャッシュDNSサーバーへ名前解決を依頼する
- キャッシュDNSサーバー(フルリゾルバ):企業内やISPに設置されるサーバー。クライアントから再帰問い合わせ(リカーシブクエリ)を受け取り、インターネット上の各サーバーへ反復問い合わせ(イテレーティブクエリ)を行ってIPアドレスを探す。取得した結果はTTL(Time To Live)で定めた時間だけキャッシュに保存し、次回以降の問い合わせへ高速に応答する
- 権威DNSサーバー(コンテンツサーバー):特定のドメイン(ゾーン)の公式情報を保持し、キャッシュDNSサーバーからの問い合わせに最終的な回答を提供するサーバー。自身が管理しないドメインについては回答しない
たとえばクライアントが「www.example.com」のIPアドレスを知りたい場合、キャッシュDNSサーバーはルートDNSサーバー→TLD(.com)DNSサーバー→example.comの権威DNSサーバーの順に反復問い合わせを行い、得られたIPアドレスをクライアントに返します。この通信フローと役割分担を正確に把握することが、DNSセキュリティ理解の絶対的な基礎となります。

主要DNSレコード(A・MX・TXT・NS・SOA)の役割
DNSが保持する情報は「リソースレコード」と呼ばれ、用途ごとに種類が異なります。セキュリティとメール認証を理解するために押さえておくべき主要レコードは以下のとおりです。
- Aレコード:ドメイン名に対するIPv4アドレスを定義する
- AAAAレコード:ドメイン名に対するIPv6アドレスを定義する
- MXレコード:そのドメイン宛てのメールを処理するメールサーバーのホスト名を定義する。プリファレンス値(優先度)が小さいほど優先して配送される
- TXTレコード:ドメインに任意の文字列を関連付ける。現在ではSPF・DKIM・DMARCのポリシーや公開鍵の格納先として極めて重要な役割を担っている
- NSレコード:そのドメイン(ゾーン)を管理する権威DNSサーバーのホスト名を示す。サブドメインの管理を別サーバーに委任(デリゲーション)する際にも使用する
- SOAレコード:ゾーンの管理責任者メールアドレスや、ゾーンデータの更新間隔、セカンダリサーバーへの転送間隔などの基本設定を定義する
DNS通信におけるUDPとTCPの使い分け
DNS通信ではUDPとTCPのどちらも使用しますが、用途によって厳密に使い分けられます。ポート番号はいずれも53番です。
一般的な名前解決(Aレコードの検索など)には、オーバーヘッドが小さく高速なUDP 53番を使用します。ただしUDPはステートレスで送信元IPアドレスの偽装が容易であるため、後述するキャッシュポイズニング攻撃の標的になりやすい弱点があります。
一方、TCP 53番は以下のケースで使用します。
- 応答データが512バイト(EDNS0非対応の場合)を超える大きな応答を受信する場合
- プライマリDNSサーバーからセカンダリDNSサーバーへゾーン情報全体を同期する「ゾーン転送(AXFR/IXFR)」を行う場合
TCPはスリーウェイハンドシェイクによるコネクション確立が必要なため、送信元IPアドレスの偽装が極めて困難です。
DNSキャッシュポイズニングとカミンスキー攻撃の脅威
DNSの構造的な弱点(UDPによる送信元偽装の容易さ)を突く代表的なサイバー攻撃が「DNSキャッシュポイズニング」です。キャッシュDNSサーバーに偽の応答パケットを送り込み、不正なIPアドレス情報をキャッシュに記憶(汚染)させる攻撃手法です。
キャッシュDNSサーバーが偽の応答を「正規の応答」として受け入れるためには、以下の4つの条件が一致する必要があります。
- 問い合わせたドメイン名
- 問い合わせたクエリタイプ(Aレコードなど)
- 送信元ポート番号
- トランザクションID(問い合わせごとに付与される16ビットの識別子)
攻撃者は、キャッシュDNSサーバーが権威サーバーへ問い合わせを行った直後の隙を狙い、送信元IPアドレスを権威サーバーに偽装して上記条件を推測した偽の応答を大量送信します。
この攻撃を劇的に成功しやすくしたのが「カミンスキー攻撃(Kaminsky Attack)」です。攻撃者は存在しないランダムなサブドメイン(例:12345.example.com)への問い合わせを大量に発生させ、キャッシュDNSサーバーが常にキャッシュミスを起こしている状態を意図的に作り出します。その隙にトランザクションIDを総当たりで推測した偽の応答を送り込み、「example.com全体の管理委任(NSレコードの書き換え)」という追加情報を含ませます。一度でもヒットすれば、ドメイン全体のキャッシュが汚染されます。
過去問での出題例(平成30年度 春期 午後Ⅰ 問2 改題)
キャッシュDNSサーバーへの問い合わせトランザクションIDの推測を困難にするための対策手法を答えよ。
解答例:送信元UDPポート番号をランダムに変更する「ソースポートランダマイゼーション」を適用する。
ソースポートランダマイゼーションは攻撃成功の確率を下げる遅延策に過ぎず、根本的な解決策としては後述するDNSSECの導入が求められます。
DNSを守る技術:DNSSECと運用上の対策
DNSキャッシュポイズニングへの対抗には、プロトコルレベルの暗号的な防御とサーバー運用面での適切なアクセス制御の両輪が必要です。
DNSSECのデジタル署名と信頼の連鎖(Chain of Trust)
DNSキャッシュポイズニングへの根本的な対策技術が「DNSSEC(DNS Security Extensions)」です。DNSの応答データに公開鍵暗号方式の「デジタル署名」を付与することで、応答が正当な権威DNSサーバーから送られたもの(送信元認証)であること、かつ改ざんされていないこと(完全性)を暗号学的に保証します。
DNSSECの仕組みは以下のプロセスで構成されます。
- ZSK(Zone Signing Key)による署名:権威DNSサーバーの管理者がゾーン署名鍵(ZSK)の秘密鍵・公開鍵ペアを生成し、ゾーン内の各レコード集合(RRset)に秘密鍵でデジタル署名を計算して「RRSIGレコード」として保存する
- DNSKEY公開鍵の公開:検証に使うZSKの公開鍵を「DNSKEYレコード」としてDNS上に公開し、キャッシュサーバーが署名を検証できるようにする
- KSK(Key Signing Key)による信頼の連鎖:ZSKの公開鍵(DNSKEY)自体が改ざんされていないことを証明するため、より強力な鍵署名鍵(KSK)でDNSKEYに署名する。さらにKSKの公開鍵のハッシュ値を「DSレコード(Delegation Signer)」として上位ドメイン(親ゾーン)に登録し、最上位のルートDNSサーバーまで遡れる「信頼の連鎖(Chain of Trust)」を形成する
キャッシュDNSサーバーは応答受信時にRRSIGとDNSKEYを用いて署名を検証し、すべて検証できた場合のみクライアントへ結果を返します。デジタル署名のない偽の応答は破棄されるため、キャッシュの汚染を根本から防ぎます。
過去問での出題例(令和元年度 秋期 午後Ⅰ 問2 改題)
DNSSECが提供するセキュリティ機能を2つ挙げよ。
解答例:①応答データの送信元が正当な権威DNSサーバーであること(送信元認証)。②応答データが経路途中で改ざんされていないこと(完全性の保証)。

NSEC/NSEC3レコードによる「不在証明」の仕組み
DNSSECでは「そのドメインやレコードが存在しないこと」も安全に証明しなければなりません。署名のないNXDOMAIN応答を悪用されると、攻撃者が偽のNXDOMAIN応答を送りつけ、正規サイトへのアクセスを妨害できてしまうからです。
これを防ぐのが「NSECレコード(Next Secure Record)」です。ゾーン内に存在するドメイン名を辞書順に並べ、「ドメインAの次はドメインCである(間のドメインBは存在しない)」という情報にデジタル署名を付与します。
ただしNSECには、レコードを連続収集されることでゾーン内の全ドメイン名を列挙されてしまう「ゾーンウォーキング(Zone Walking)」という脆弱性がありました。これを解決するために開発されたのが「NSEC3レコード」です。ドメイン名そのものではなく、ドメイン名のハッシュ値を辞書順に並べて不在証明を行うため、ゾーン内のドメイン名を秘匿しつつ安全に「レコードが存在しないこと」を証明できます。
オープンリゾルバ対策とゾーン転送(AXFR/IXFR)の制限
暗号化技術だけでなく、DNSサーバーの運用設定も極めて重要です。
オープンリゾルバの排除
キャッシュDNSサーバーが組織内部だけでなく、インターネット上の誰からの再帰問い合わせにも応答してしまう状態を「オープンリゾルバ」と呼びます。オープンリゾルバは、送信元IPアドレスを偽装した攻撃者の踏み台として悪用され、「DNSリフレクション攻撃(DNSアンプ攻撃)」を引き起こします。攻撃者は被害者のIPアドレスに偽装して大量の問い合わせを送り、巨大な応答パケットを被害者へ集中させてネットワーク帯域を枯渇させます(DDoS攻撃)。対策として、ファイアウォールやDNSサーバーのACL(Access Control List)設定で、再帰問い合わせを許可するネットワークを自組織内部に厳格に制限する必要があります。
過去問での出題例(令和3年度 春期 午後Ⅰ 問2 改題)
ファイアウォールの設定不備によりインターネット上の任意の端末からのアクセスを許可しているキャッシュDNSサーバーについて、この状態の名称と、放置した場合に第三者から悪用されて引き起こされるネットワーク上の脅威を40字以内で答えよ。
解答例:名称:オープンリゾルバ。脅威:送信元IPを偽装した問合せによるDDoS攻撃(DNSアンプ攻撃)の踏み台にされる。
ゾーン転送の制限
プライマリDNSサーバーからセカンダリDNSサーバーへデータを同期する「ゾーン転送(TCP 53番)」も、要求元の制限が不可欠です。
過去問での出題例(平成30年度 秋期 午後Ⅰ 問1 改題)
DMZ上に配置された外部公開用DNSサーバーのnamed.confにて、ゾーン転送の設定が
allow-transfer { any; };となっていた。この設定が引き起こすセキュリティ上の脅威を具体的に答えよ。
解答例:攻撃者がAXFRコマンドを実行するだけでゾーン情報を取得でき、内部ネットワークのサーバー構成とIPアドレス一覧が漏洩する脅威。
ゾーン転送を許可するIPアドレスは、正規のセカンダリDNSサーバーのみに限定することが必須です。
送信ドメイン認証(SPF/DKIM/DMARC)の仕組みと過去問対策
電子メールの基盤プロトコルSMTPは、送信元のメールアドレス(Fromアドレス)を容易に偽装できるという致命的な弱点を持ちます。この仕組みを悪用したなりすましメールや標的型攻撃メールを防ぐために、送信元ドメインの正当性を検証する「送信ドメイン認証技術」が開発されました。現在はSPF・DKIM・DMARCの3技術を組み合わせて運用することが実質的な世界標準です。
IPアドレスで送信元を証明する「SPF」の動作と限界
SPF(Sender Policy Framework)は、メールを送信してきたサーバーの「IPアドレス」を基になりすましを検知する仕組みです。
SPFの動作メカニズム
- 送信側の準備(DNSへのSPFレコード登録):自ドメインのメールを送信する正当なメールサーバーのIPアドレス群を、権威DNSサーバーにTXTレコード(SPFレコード)として事前に公開する
- レコードの例:
v=spf1 ip4:192.0.2.1 include:spf.service.com ~all - 意味:SPFバージョン1を使用し、192.0.2.1およびspf.service.comで定義されたリストからの送信を許可する。それ以外はSoftFailとする
- レコードの例:
- 受信側の検証:受信メールサーバーはSMTP通信のMAIL FROMコマンド(エンベロープFrom)に記載されたドメインを抽出する。エンベロープFromとは実際の配送処理に使われる送信元情報で、「封筒の裏の差出人」に相当する
- DNS照合と判定:抽出したドメインのSPFレコードをDNSから取得し、接続してきた送信元IPアドレスがリスト内にあるか確認する。一致すれば「Pass」、一致しなければ「Fail」や「SoftFail」として処理する
SPFの2つの限界
- 10回ルックアップ制限:SPFの仕様ではSPFレコード評価時のDNSルックアップ回数が最大10回に制限されている。
include:を多用すると連鎖的にルックアップが発生し、制限超過で認証エラー(PermError)となるトラブルが多発する - 転送時のSPFブレイク:メーリングリストなどの転送サービスを経由すると送信元IPが転送サーバーのものに書き換わるため、正規のメールでも認証失敗が発生する(SPFのブレイク現象)
過去問での出題例(令和2年度 秋期 午後Ⅰ 問2 改題)
SPFレコード末尾の
~allが意味する処理内容について、受信側での扱いを考慮して40字以内で答えよ。
解答例:条件に一致しない送信元からのメールは認証失敗として扱うが、受信自体は許可する(SoftFail)。
-all(ハイフン)は「Fail(明確な拒否)」、~all(チルダ)は「SoftFail(迷惑メール扱いは許容するが受信自体は拒否しない)」を意味します。移行期間中は正規メールの誤破棄リスクを回避するため~allを採用するケースが多く見られます。
電子署名で改ざんを検知する「DKIM」とカノニカライズ
DKIM(DomainKeys Identified Mail)は、メールデータ自体に「電子署名」を付与することで、送信元ドメインの正当性とメール本文・ヘッダが改ざんされていないことを暗号学的に証明する技術です。
DKIMの動作メカニズム
- 鍵ペアの生成と公開鍵のDNS登録:送信側組織が秘密鍵・公開鍵のペアを作成し、公開鍵を「セレクタ」という識別子を使ってDNSのTXTレコードとして公開する(例:
selector1._domainkey.example.com) - 電子署名の付与:メール送信時、送信側のメールリレーサーバーがメール本文(Body)と主要ヘッダ(From・Subjectなど)からハッシュ値を計算し、秘密鍵で暗号化して「DKIM-Signatureヘッダ」としてメールヘッダ部に付加する
- 受信側の署名検証:受信側メールサーバーはDKIM-Signatureヘッダから署名ドメイン(d=タグ)とセレクタ(s=タグ)を読み取り、DNSから公開鍵を取得して電子署名を復号する。受信メールから自らハッシュ値を計算して一致すれば「Pass」と判定する
カノニカライズ(正規化)の重要性
メールが配送経路のサーバーを通る際、末尾の空白削除や改行コード変換といった微小な変化が生じることがあります。ハッシュ値は1文字でも変わると全く異なる値になるため、これだけでDKIM認証が失敗します。これを防ぐのが「カノニカライズ(正規化)」です。
- Simpleモード:厳密な一致を求める
- Relaxedモード:空白の圧縮や大文字小文字の変換を許容する寛容な設定
過去問での出題例(令和2年度 秋期 午後Ⅰ 問2 改題)
社内の各PCからインターネット宛てに送信されるメールに対してDKIMの電子署名を付与する、最も適切なサーバーを答えよ。またその理由を簡潔に述べよ。
解答例:外部向けメールリレーサーバー。理由:外部へ送信される全メールを中継するため、秘密鍵を一元的に管理して署名を付与できるから。
各PCで個別に署名を行うと鍵管理が煩雑になり、漏洩リスクが高まります。ネットワーク境界のリレーサーバーで一括処理するのがセキュリティ設計の最適解です。
DMARCによるアライメント評価とポリシー(pタグ)の段階的導入
SPFとDKIMには共通の課題がありました。「認証失敗時の処置が受信側に委ねられている」「ユーザーの目に触れるヘッダFromのなりすましをSPFだけでは防げない」という点です。これを一挙に解決するフレームワークが「DMARC(Domain-based Message Authentication, Reporting, and Conformance)」です。
DMARCの3つの主要機能
- アライメント(一致性)の厳格な確認:ユーザーの目に触れる「ヘッダFrom」のドメインと、SPFが検証した「エンベロープFrom」のドメイン、またはDKIMが署名した「d=タグ」のドメインが一致(アライメント)しているか確認する。SPFかDKIMのいずれかのアライメントがPassであれば、DMARCとしてもPassになる。これにより、エンベロープFromだけを正規ドメインにしてヘッダFromを偽装する高度なフィッシングメールを検出できる
- ポリシー宣言(pタグ)による制御:送信側はDNSのTXTレコード(
_dmarc.example.com)にDMARCレコードを登録し、認証失敗時のポリシーを受信側に宣言するp=none:何もしない(監視モード)p=quarantine:隔離する(迷惑メールフォルダへ移動)p=reject:拒否する(受信自体を拒否)
- レポート機能による可視化:
rua=タグでメールアドレスを指定すると、受信側から自ドメインを名乗るメールの認証結果を集計したXMLレポートが送信される。自社ドメインの不正利用状況を世界規模で監視・可視化できる
DMARCポリシーの段階的導入が必須な理由
過去問での出題例(令和4年度 春期 午後Ⅰ 問2 改題)
DMARCレコード登録時に最初から
p=rejectとせず、まずp=noneで運用を開始する目的を、業務影響とDMARCの機能の観点から50字以内で答えよ。
解答例:正規メールが誤検知で破棄されるのを防ぎつつ、レポート機能で送信元の実態と認証状況を可視化するため。
最初からp=quarantineやp=rejectに設定すると、メーリングリストを経由した正規のビジネスメールや、シャドーITとして使われているクラウドサービスからのメールがすべてなりすましと誤検知され、深刻な業務障害を引き起こします。必ずp=noneから始め、ruaタグのレポートを分析して正規メールの送信元を特定し、SPF/DKIMの設定修正を経てから段階的にポリシーを厳格化するのが実務のセオリーです。

試験で問われるDNSとメール認証の設定読解スキル
試験の午後問題(記述式)では、エンタープライズネットワークの構成図や、DNSゾーンファイルの設定内容を読み解きながら、脆弱性の指摘や是正に必要な設定変更を記述させる形式が多く出題されます。ここでは読解力と記述力を鍛えるための重要な着眼点を整理します。
問題文から「どの認証技術が何を守っているか」を即座に特定する
試験では複数の認証技術が同時に登場するため、「それぞれが何を守っているか」をすぐに識別できることが重要です。
- SPF:メールを送信してきたサーバーのIPアドレスが正規かどうかを検証する。検証対象は「エンベロープFrom」
- DKIM:メールの本文とヘッダの改ざんがないかを電子署名で検証する。「ヘッダFrom」に紐づいた秘密鍵で署名する
- DMARC:ヘッダFromと、SPF・DKIMが検証したドメインのアライメント(一致)を確認し、ポリシーを適用する
SPFはIPアドレスの偽装を検知しますが、ヘッダFromの偽装は防げません。DKIMは改ざんを検知しますが、転送時には署名が壊れることがあります。DMARCがこれら双方の弱点を補完するという「3位一体」の構造を押さえておくことが、複合的な問題を解くカギになります。
DNSゾーンファイルの設定ミスを見抜く着眼点
設定ファイルの読解問題では、以下の典型的な設定ミスが頻出テーマになります。
- SPFレコードの末尾が
+allになっている:すべての送信元を許可(Pass)してしまうため、SPFが全く機能しない - DMARCレコードが
p=noneのまま長期間放置されている:監視モードなのでなりすましメールへの制御が効いていない - ゾーン転送が
allow-transfer { any; };になっている:前述のとおり、ゾーン情報の全漏洩リスクがある - キャッシュDNSサーバーがオープンリゾルバ状態になっている:DDoS攻撃の踏み台になるリスクがある
過去問での出題例(令和3年度 秋期 午後Ⅱ 問1 改題)
メールヘッダを確認したところ、ヘッダFromはexample.co.jpであったが、SPF認証はPassとなっていた。それにもかかわらず、なりすましメールと判定すべき根拠を説明せよ。
解答例:SPFはエンベロープFromのドメインを検証するものであり、ユーザーが目にするヘッダFromのドメインが一致しているかはSPFでは検証できない。DMARCのアライメント評価でヘッダFromとエンベロープFromのドメインの一致を確認する必要がある。
この問題は、SPFの検証対象がエンベロープFromである点と、DMARCのアライメント評価の意義を正確に理解しているかを問うものです。SPFがPassでもヘッダFromが偽装されている可能性を見落とさないことが重要です。
DNSSECの導入効果と限界を正確に記述する
DNSSECに関する記述問題では、「何に対して有効で、何に対しては無効か」を明確に述べることが求められます。
- 有効な対策:キャッシュポイズニング(偽の応答の注入)に対して有効。デジタル署名の検証により、偽の応答を受け入れないことが保証される
- 無効・範囲外の脅威:権威DNSサーバー自体が侵害された場合(正規の鍵で偽レコードに署名されてしまうため)、DoS攻撃によるDNSサーバーの停止には対応できない
過去問での出題例(令和2年度 春期 午後Ⅰ 問2 改題)
DNSSECを導入してもキャッシュポイズニングを完全に防げないケースを1つ挙げ、その理由を説明せよ。
解答例:権威DNSサーバー自体が攻撃者に乗っ取られた場合。正規の秘密鍵が攻撃者に使用され、偽のDNSレコードに対して正規の署名が付与されてしまうため、受信側は偽レコードを正規のものと判断してしまう。
過去問ベースで実力試し!DNS&送信ドメイン認証 練習問題
ネットワークセキュリティ分野における最重要テーマ、「DNSの仕組み」と「メールのなりすまし対策」。記事を読んでインプットした知識を、アウトプットして確実な得点源に変えていきましょう!
ここでは、情報処理安全確保支援士の午後問題で実際に問われた過去問のエッセンスを抽出し、選択式の練習問題(全10問)を作成しました。
複合的なプロトコルの動作や設定の意図を正確に読み解けるか、ぜひチャレンジしてみてください。間違えた問題はすべての解説を読み込むことで、応用力が身につきます。
まとめ:DNSとメール認証の知識体系を整理する
本記事では、ネットワークセキュリティの要である「DNS」と「メール認証技術」について、実際の試験で出題された過去問を交えて徹底解説しました。
DNSセキュリティの要点
DNSの名前解決の階層構造と各レコードの意味を理解した上で、UDPの特性を突いたキャッシュポイズニングの仕組みと、その根本的解決策であるDNSSEC(ZSK/KSKによるデジタル署名と信頼の連鎖)の暗号アーキテクチャを正確に把握することが重要です。また、オープンリゾルバの排除やゾーン転送の制限など、サーバー運用上のアクセス制御も必須の知識です。カミンスキー攻撃やDNSリフレクション攻撃の仕組みは、過去問で繰り返し問われるテーマであるため、攻撃の手順と影響を自分の言葉で説明できるレベルまで落とし込んでおきましょう。
送信ドメイン認証の要点
IPアドレスを検証するSPF(10回ルックアップ制限と転送時のブレイク現象に注意)、電子署名で完全性を担保するDKIM(カノニカライズによる正規化の重要性)、そしてヘッダFromとのアライメント評価とポリシー制御を統合するDMARCの3位一体の仕組みを整理しておくことが核心です。特にDMARCのp=noneから始まるレポート分析と段階的な導入プロセスは、現場のエンジニアとして必須のノウハウであり、試験でも頻出テーマです。
これらの技術は、それぞれの弱点を互いに補完し合うように精巧に設計されています。「このプロトコルは通信のどの部分を、どのパラメータで検証しているのか」「なぜその代替手段では不十分なのか」という本質的な問いを常に意識しながら学習を進めることが、難解なネットワーク構成図や長文シナリオを読み解き、的確な記述解答を導き出すための最大の武器になります。