Help us understand the problem. What is going on with this article?

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==


```console
# 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==

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

参考資料

qualitia_cdev
QUALITIA CO., LTD. サービス企画部(aka 技術の無駄遣い部)が運営しているTechBlogです。常に新しい思考、新しい技術を追求し続けています。
https://www.qualitia.co.jp
qualitia
コミュニケーションの効率化とセキュリティの強化を支援するさまざまなメッセージング関連ソリューションを クラウド型サービス・ソフトウェアで提供しています。常に「クオリティの追求」への挑戦にこだわり、その企業活動とテクノロジーで社会に貢献することを目標としています。 
https://www.qualitia.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away