DNSSECとは?
DNSSEC(ドメインネームシステムセキュリティエクステンション)は、DNSレスポンスをレコードにデジタル署名を追加し、攻撃者がDNSデータを鍛造または操作することを防ぎ、DNSレスポンスを認証するDNSへの暗号化拡張のスイートです。DNSSECの仕組み
Chain of Trust:
Root Zone (.)
├── Signs: .com zone key
│ └── KSK (Key Signing Key)
│ └── ZSK (Zone Signing Key)
│
TLD Zone (.com)
├── Signs: example.com zone key
│ └── DS Record points to child KSK
│
Domain Zone (example.com)
├── Signs: All DNS records
│ └── RRSIG (Record Signature)
│ └── DNSKEY (Public keys)
│
Resolver validates entire chain from root
DNSSECレコードタイプ
| レコード | ミッション | コンテンツ |
|---|---|---|
| ログイン | サインイン | 各レコードセットの暗号署名 |
| DNSキー | パブリックキー | ゾーンの公開署名キー(KSKとZSK) |
| ツイート | 委任の署名者 | 親ゾーンのKSKのハッシュ |
| NSEC/NSEC3 | 認証拒否 | レコードが存在しない |
キータイプ
| キーキー | ミッション | 回転頻度 |
|---|---|---|
| KSK(キー署名キー) | DNSKEYレコードの署名 | 年間以上 |
| ZSK(Zone署名キー) | 他のレコードをすべて署名する | 月~四半期 |
DNSSEC検証プロセス
1. クライアントは、example.com AレコードのDNSリゾルバをクエリ
2. Resolver がレコード + RRSIG 署名を取得
3. RRSIGを検証するためにDNSKEYをレゾルバーフェッチ
4. ResolverはDNSKEYに対するDSレコードを検証
5. チェーンは根絶し、各レベルを検証します
6. すべての署名が有効な場合、応答は認証されます
DNSSECの脅威を防ぐ
| 攻撃 | コンテンツ | DNSSEC保護 |
|---|---|---|
| キャッシュ中毒 | キャッシュに誤ったレコードを注入する | 署名は改ざんを検出します |
| マン・イン・ザ・ミドル | 応答の傍受と変更 | 暗号化検証は失敗します |
| DNSスプーフィング | 偽IPアドレスを返す | 鍛造レコードは有効な署名を欠かせません |
実装検討
- 性能:署名による大応答(〜1000〜4000バイト対〜100バイト)
- キー管理: セキュアなキー生成、ストレージ、回転が必要
- Zoneの印: レコード変更時にゾーンを再署名する必要があります
- Resolver サポート: クライアントはDNSSEC対応のリゾルバーが必要です
ベストプラクティス
1. アルゴリズム13か14を使用して下さい: ECDSAはRSAより小さい署名を提供します
2. 自動主回転: 主要なライフサイクルのためのOpenDNSSECのようなツールを使用する
3. モニターの有効期限: RRSIGの署名は有効期間を持っています
4. 導入前のテスト: dnsviz.netのようなツールでゾーンを検証
5. 緊急事態のための計画: キーロールオーバー手順を文書化
DNSSECはDNSの完全性のための必須の保護を提供し、ユーザーが攻撃者制御サーバーではなく正当な目的地に到達することを確認します。