search
LoginSignup
8

posted at

updated at

Organization

AWS Route53 で DNSSEC を使う

こんにちは。re:Invent 2020 最終日の本日(JST基準)、Route53がDNSSECのサポートを始めるという発表がありました。AWSはDNSSECはやらない方針だという噂を聞いたことがあるので、アメリカで何か流れが変わってきたのかな?と推測しつつ、早速試してみました。Route53のDNSSEC設定方法と検証結果をみなさまと共有します。

目次

  • 前提
  • 設定
  • 検証
  • RRSIGについて解説
  • 参考資料

前提

  • ドメイン: uu1.jp (検証用に持っている本物のドメインです)
  • ドメインレジストラー: JPRS

設定

1. AWS Route53でDNSSEC署名の有効化

  1. Route53のホストゾーンをクリックすると「DNSSEC署名」という新しいタブメニューが出来ていました。それをクリックします。
    1.png

  2. 右上の「DNSSEC署名を有効化する」をクリックします。
    2.png

  3. キー署名キー(KSK)を作ります。まず名前を付けて、
    3.png

  4. AWS KMS(Key Management Service)のCMK(Custom Master Key)を作成し、有効化します。
    4.png

  5. キー署名キー(KSK)がアクティブになったことを確認します。数分かかります。
    5.png

  6. アクティブになったら「DSレコードを作成するための情報を表示」をクリックします。
    6.png

  7. 「信頼チェーンを確立情報 > 別のドメインレジストラ」でDSレコードを確認し、コピーしておきます。AWS側の作業はこれで終わりです。
    8.png

2. ドメインレジストラーでDSを登録

ドメインレジストラーのドメインのNameserver設定メニューに入り、上記でコピーしたDSレコードを追加します。
ここは、利用しているドメインレジストラー毎にメニューやUIで差があるので割愛します。

検証

1. digで引いてみる

# dig +dnssec uu1.jp soa

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-9.P2.el7 <<>> +dnssec uu1.jp soa
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13724
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;uu1.jp.                                IN      SOA

;; ANSWER SECTION:
uu1.jp.                 840     IN      SOA     ns-852.awsdns-42.net. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
uu1.jp.                 840     IN      RRSIG   SOA 13 2 900 20201221022147 20201221000647 4359 uu1.jp. koEqk+5b7nmjMyroGnVprJTYl9IVLfLyoYHowQzbDDjFC0rZkbfu2WpR Jl0scud4UMDKlcicj/jnCzBpJBMetw==

2. drillで引いてみる

# drill -r named.root -k root.key -S uu1.jp soa
;; Number of trusted keys: 1
;; Chasing: uu1.jp. SOA

DNSSEC Trust tree:
uu1.jp. (SOA)
|---uu1.jp. (DNSKEY keytag: 11110 alg: 13 flags: 256)
    |---uu1.jp. (DNSKEY keytag: 7052 alg: 13 flags: 257)
    |---uu1.jp. (DS keytag: 7052 digest type: 2)
        |---jp. (DNSKEY keytag: 18321 alg: 8 flags: 256)
            |---jp. (DNSKEY keytag: 46369 alg: 8 flags: 257)
            |---jp. (DS keytag: 46369 digest type: 2)
                |---. (DNSKEY keytag: 26116 alg: 8 flags: 256)
                    |---. (DNSKEY keytag: 20326 alg: 8 flags: 257)
;; Chase successful

3. dnsvizでAnalyzeしてみる

uu1.jp-2020-12-18-07_24_34-UTC.png

ちゃんとチェーンが出来ています。素晴らしい。

RRSIG署名について解説

有効期間

ふと、RRSIGの有効期間を見ると、かなり短いですね。一般的には1週間とか2週間で運用するのが多いのかと思っていましたが、2時間くらいになっています。

# dig @ns-48.awsdns-06.com. +dnssec uu1.jp soa
...
;; ANSWER SECTION:
uu1.jp.                 900     IN      SOA     ns-852.awsdns-42.net. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 864
uu1.jp.                 900     IN      RRSIG   SOA 13 2 900 20201218062631 20201218041131 11110 uu1.jp. Qzkzm...(略)

有効期間が2020年12月18日 04:11:31 ~ 2020年12月18日 06:26:31 です。期間が2時間15分です。
TTLが15分と短いのでいいですが、長いとどうなるのでしょうか。1日にしてやってみましょう。

# dig @ns-48.awsdns-06.com. +dnssec ttl-86400.uu1.jp a
...
;; ANSWER SECTION:
ttl-86400.uu1.jp.       86400   IN      A       1.1.1.1
ttl-86400.uu1.jp.       86400   IN      RRSIG   A 13 3 86400 20201219061446 20201218041446 11110 uu1.jp. B9RoA...(略)

2020年12月18日 04:14:46 ~ 2020年12月19日 06:14:46 になりました。期間が1日と2時間になりました。
なるほど。TTL + 2時間 がRRSIGの有効期間ということのようです。

署名タイミング

署名の有効期間開始日時もちょっと気になります。現在時刻になっているような気がします。
試してみましょう。

# dig @ns-48.awsdns-06.com. +norec +dnssec uu1.jp soa
...
;; ANSWER SECTION:
uu1.jp.                 900     IN      SOA     ns-852.awsdns-42.net. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
uu1.jp.                 900     IN      RRSIG   SOA 13 2 900 20201218063622 20201218042122 11110 uu1.jp. +3v2yqQSUmPANtvqEmLma5dtrauehT2zEP+5nR5H5Z2P0YUf5jodAE+I PSt8RRTN96BqE4gyxwPrJEAh0EAq8Q==

2秒後

# dig @ns-48.awsdns-06.com. +norec +dnssec uu1.jp soa
...
;; ANSWER SECTION:
uu1.jp.                 900     IN      SOA     ns-852.awsdns-42.net. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
uu1.jp.                 900     IN      RRSIG   SOA 13 2 900 20201218063624 20201218042124 11110 uu1.jp. YH5Q+JGAK9KkXiQCt1Wio7AlvSPG2iKu9Yx5jB3sJtd3Qq4CSj25O+34 obVpzeuSaACuckcyDOWLntaln8iywA==

やはり、現在時刻ですね。
あらかじめ署名したZoneを用意するのではなく、Queryが来るたびに署名しているようです。
たくさんあるDNSサーバーにZSKのPrivate Keyを使えるようにするのが大変そうですが、さすがAWSですね。

DNSKEYの署名

レコードセットの中でも、DNSKEYだけは、ZSKではなくKSKで署名されます。
こちらはどうでしょうか。

# dig @ns-48.awsdns-06.com. +norec +dnssec uu1.jp dnskey
...
;; ANSWER SECTION:
uu1.jp.                 3600    IN      DNSKEY  256 3 13 4rIKNvbTPUfKYk1nJEQvtChbIheFCjpukQlt35iKoKwMag32hEhc124h h6qxQRbrXG7JC4HE0AJyo8+m5SIAYA==
uu1.jp.                 3600    IN      DNSKEY  257 3 13 /FcqSpmG5z0DXzFOBnm5vGGweJUZ1BewWNZ7zLf5amARaEU1HTcKjGLT n6hmBND92WkjI4tkfSkFeRcVJuB4BQ==
uu1.jp.                 3600    IN      RRSIG   DNSKEY 13 2 3600 20201218090000 20201217230000 7052 uu1.jp. bUofVksYDT3Z5/H5OwS3vP7bb8X3KFq3vgEq5C/GwS8zlIVeGOvBDiy4 te+Ah1x2j3FbJ15M/kM3Zc5SN0gneA==

こちらは毎回署名するわけではなさそうですね。

参考資料

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
8