DNS Security Extensions(DNSSEC)をRoute 53の4つのパブリックホストゾーンに実装し、 キャッシュポイズニング・DNSスプーフィングを防ぐ方法を、図解とたとえ話で徹底解説します。
DNSは人間が読めるドメイン名をIPアドレスに変換する仕組みです。この仕組みに脆弱性があると、攻撃者に悪用されます。
DNSSECは「上位が下位を保証する」連鎖構造で成立します。ちょうどパスポートが国家によって保証されるように。
DNSSECは役割の異なる2つの鍵を使い分けます。上位の鍵(KSK)が下位の鍵(ZSK)を保証する二重構造です。
ZSK(ゾーン署名鍵)に署名するための上位の鍵。AWS KMSに保存され、より強固なセキュリティが適用されます。ローテーションは手動で実施。
実際のDNSレコード(A/MX/CNAME等)に署名する鍵。Route 53が自動的に管理・ローテーションするため、お客様の作業は不要。
KMS・Route 53・CloudWatchの3層で構成されるDNSSEC実装の全体像です。
KMSキー作成からCloudWatchアラート設定まで、実際のCLIコマンドで解説します。
us-east-1必須。Route 53 DNSSECはus-east-1のKMSキーのみ対応。他リージョンでは動作しません。
4ホストゾーンそれぞれにKSKを作成し、DNSSECを有効化します。
親ゾーン(レジストラ)にDSレコードを登録して信頼チェーンを確立します。手動作業が必要。
KSK有効期限切れを事前検知するアラームを設定します。
KSKは自動ローテーションされません。手順を誤るとDNS解決が停止する重大障害を招きます。
新しいKMSキーを使って新KSKを作成。まだACTIVEにしない。
新KSKのDSレコードを取得し、レジストラの管理画面で登録します。TTL分の伝播を待つ(通常24〜48時間)。
⏳ TTL伝播待ち必須新DSが伝播したことを確認してから旧DSを削除します。
⚠️ 新DS確認後のみ実施旧KSKのステータスをINACTIVEに変更します。
不要になった旧KSKとKMSキーを削除します。完了。
✅ ローテーション完了重大度に応じた3段階のアラートで、KSK期限切れによる障害を事前に防ぎます。
KSKが期限切れ、またはDNSSEC署名が無効な状態。DNS解決が停止する直前。即時対応が必要。
KSKの有効期限が近づいている。まだ余裕があるため、計画的にローテーションを実施できる段階。
DNSSEC設定変更のCloudTrailログ。コンプライアンス・監査目的で記録。障害時のトレーサビリティに使用。
KMSキーからRRSIGレコードまで、全コンポーネントの役割・管理主体・自動化状況を一覧で確認できます。
| コンポーネント | 役割 | 管理主体 | ローテーション | 注意点 |
|---|---|---|---|---|
| 🗝️ KMS非対称キー | KSKの暗号化基盤。実際の電子署名演算を実行する。 | お客様(IAM制御) | ⚠️ 手動 | us-east-1 必須 |
| 🔐 KSK | ZSKへの署名。DNSKEY RRsetを保護する上位の鍵。 | お客様 × Route 53 | ⚠️ 手動 | 期限切れ = DNS障害 |
| 🔑 ZSK | Aレコード・MXレコード等への実際の署名(RRSIG生成)。 | Route 53が完全管理 | ✅ 自動 | 作業不要 |
| 📋 DNSKEY | KSK・ZSKの公開鍵を公開するレコード。 | Route 53が自動生成 | KSK/ZSKに連動 | 自動管理 |
| 🔗 DS レコード | 親ゾーン(レジストラ)に登録。信頼チェーンの起点。 | お客様(レジストラ側) | ⚠️ 手動登録 | KSKローテーション時に更新必須 |
| ✍️ RRSIG | 各DNSレコードに付与されるデジタル署名レコード。 | Route 53が自動生成 | ✅ 自動 | 透過的に処理 |
| 🚫 NSEC/NSEC3 | 「このレコードは存在しない」ことを証明する否定応答レコード。 | Route 53が自動管理 | ✅ 自動 | ゾーン列挙リスクに注意 |
DNSSECはキャッシュポイズニングとDNSスプーフィングをデジタル署名で防ぐ。Route 53ではZSK自動ローテーションとKMS統合KSKで管理負荷を最小化できる。
KMSキーはus-east-1に作成。DSレコードのレジストラ登録は必ず手動で実施。KSKローテーション時は新DSの伝播確認後に旧DSを削除すること。
CloudWatchの「DNSSECKeySigningKeysNeedingAction」メトリクスで期限切れを検知。90日前・30日前・7日前のアラートを設定し、障害を事前防止する。
Created by SSuzuki1063
AWS SAP Learning Resources