YOKOHEI.COM

YOKOHEI.COM

›DNSSEC 概要と動作

DNSSEC 概要と動作

  • DNSSEC intro
  • AD, CD, DO bit
  • DNSSEC 検証

リソースレコード

  • DNSSEC RRs
  • NSEC and NSEC3

DNSSEC 検証

レジストラで有効化

お名前ドットコムのオプションで有効化してみる。
yokohei.xyz. に対して実施。

$ dig yokohei.xyz. +dnssec

; <<>> DiG 9.10.6 <<>> yokohei.xyz. +dnssec
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23351
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;yokohei.xyz.           IN  A

;; AUTHORITY SECTION:
yokohei.xyz.        600 IN  SOA 01.dnsv.jp. hostmaster.dnsv.jp. 1561490335 3600 900 604800 3600
hi3pnqj4bg5v2mro79cv426vhrt87dhe.yokohei.xyz. 3600 IN NSEC3 1 0 5 A371C058619BC8EE NLCBL0BF1C0NUMQFIJN9ISKUJ6KT72R9  NS SOA RRSIG DNSKEY NSEC3PARAM
yokohei.xyz.        3600    IN  RRSIG   SOA 8 2 3600 20190710014216 20190625181853 15819 yokohei.xyz. b6PUTCUs+wn9mspX3mo4TCafZbT1cInMAGj9k8io6MY4yoXg+5zeSD/M HCP4wXoXsjDdcZX/dqnZ23HjAUySPpp+h0hEIqVOiU/Lt5u74r+EY6xX KGtSYe37fENh1tzOA1RUJ1WenzOp0ONV891UWcFqgnbck+5a31LdI1Ve E/0=
hi3pnqj4bg5v2mro79cv426vhrt87dhe.yokohei.xyz. 3600 IN RRSIG NSEC3 8 3 3600 20190710031228 20190625181853 15819 yokohei.xyz. PcrYJqoFwASOXARJ8VmuHrw9q9gNzLFmjXSOQLCIgoEq6tCt+vRzWE3+ 2qEzxetmKo06IqQrjt+D3Muw7ZwU/yemO2f0cj/msIlDfKLIaPgxFqyT CAwgtIJSVHugCrDsWgNM5Wc9xNvarYKdXyf+uiRmYUeC9A9vTz9MztwZ ZNA=

;; Query time: 292 msec
;; SERVER: 2001:730:3ec2::11#53(2001:730:3ec2::11)
;; WHEN: Wed Jun 26 19:32:54 IST 2019
;; MSG SIZE  rcvd: 527

有効化されている。

DS の確認

xyz. ゾーンにある、 yokohei.xyz. の DS レコードを確認。

$ dig yokohei.xyz. ds +norec @x.nic.xyz.

; <<>> DiG 9.10.6 <<>> yokohei.xyz. ds +norec @x.nic.xyz.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23759
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;yokohei.xyz.           IN  DS

;; ANSWER SECTION:
yokohei.xyz.        3600    IN  DS  21734 8 2 7621D80F52C02C4F4ED6E652039F8826010B877699EDDA78DDBDC501 B3642037

;; Query time: 34 msec
;; SERVER: 2001:67c:13cc::1:42#53(2001:67c:13cc::1:42)
;; WHEN: Wed Jun 26 19:35:46 IST 2019
;; MSG SIZE  rcvd: 88

digest type が 2 なので、 sha256 が使われている。
これが、 yokohei.xyz. ゾーンの KSK の公開鍵のハッシュ値になる。

KSK 公開鍵

yokohei.xyz. ゾーンの KSK 公開鍵を取得する。

$ dig yokohei.xyz. dnskey +dnssec @01.dnsv.jp. 

; <<>> DiG 9.10.6 <<>> yokohei.xyz. dnskey +dnssec @01.dnsv.jp.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10021
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags: do; udp: 4096
;; QUESTION SECTION:
;yokohei.xyz.           IN  DNSKEY

;; ANSWER SECTION:
yokohei.xyz.        3600    IN  DNSKEY  257 3 8 AwEAAcEK41yAftc5XnxG6+eQ+OrFyQAfPyoveIK6I4rXCKAIgkRpEO4A 7Mw3N0MTSSr6lXlCf/t3Tq2nsfZUOVKyKSRVwcbYM09JibT5ISKvvmc0 nubySxD5FMyQlHP1GFMXFo0IfidBvGilup41UBIYeYbFwOKZjudsI4Nj YnVGaClPimz8vU7EMcqnBH6+IQyaQ1Mw3u4aVpCqFWTRTi7vR+i7R9aM QZ63yok6n2kx5GmckFC/NhAXn7fQ0GYstFnNhxCssUp1NexN61J5WvVe T3swXB6u3WOtWqpoJjrHPHXNswcMaOQis/gP3Y1n5ppogaYgXykl7mBt tKSTjhFLsXc=
yokohei.xyz.        3600    IN  DNSKEY  256 3 8 AwEAAbHGol+OMFO/Ay3Ghy23XGC/QBcC8msEpryZiOd8MqGHe6bUQqEa r7e6ADBBKJai68efFNNzPJtXXFzjYSYlZXoJgNwvVt4LG8C+Nqq73MyM 1IsQ800l65eTlfPA4/XOyS+IM/MdILVE3qQmhpbQAG2h2kjtGkVjyZhd XBwTJgzd
yokohei.xyz.        3600    IN  RRSIG   DNSKEY 8 2 3600 20190709200853 20190625181853 21734 yokohei.xyz. N/f96oCXk52MZQxzmWlwxtLQtbJTAAwOwYc5b7F6Q57g4Ba5ByYLgbRX JyZbLyszxWv7Gtkp6RO/sLhvBLDOR3nTCtJpTSKQJjjuS/kXWmwcrfKz 35m1OagC7OGLgEzDbFpwJGbUW2xtGyt34/SvsRuqfFw7Au2h9qScLD3m xkAo+COfnJaPyx7lypalJ1p/OPWyMZlZJunbUoXByUpwm2qdv97RpIDv eulU2dJ4rgiNjSNjdlluMogNFanYi4o3Tp2DkseDDRA9xZlwNpo5ndto hykNS/mjclJWNZSWAwPapdu47gNynMQLvwXd3MYbPE0w8zJY0VlxOqb2 w3yxcw==

;; Query time: 326 msec
;; SERVER: 157.7.32.53#53(157.7.32.53)
;; WHEN: Wed Jun 26 19:37:07 IST 2019
;; MSG SIZE  rcvd: 763

flag 257 が KSK なので、以下のものが公開鍵。

AwEAAcEK41yAftc5XnxG6+eQ+OrFyQAfPyoveIK6I4rXCKAIgkRpEO4A 7Mw3N0MTSSr6lXlCf/t3Tq2nsfZUOVKyKSRVwcbYM09JibT5ISKvvmc0 nubySxD5FMyQlHP1GFMXFo0IfidBvGilup41UBIYeYbFwOKZjudsI4Nj YnVGaClPimz8vU7EMcqnBH6+IQyaQ1Mw3u4aVpCqFWTRTi7vR+i7R9aM QZ63yok6n2kx5GmckFC/NhAXn7fQ0GYstFnNhxCssUp1NexN61J5WvVe T3swXB6u3WOtWqpoJjrHPHXNswcMaOQis/gP3Y1n5ppogaYgXykl7mBt tKSTjhFLsXc=

アルゴリズムは 8 なので RSASHA256 が使われている。
スペースを除いたものが、実際の公開鍵。

KSK 公開鍵のハッシュ値の取得

手計算…と思ったら超便利なツールがあった。

openfactory-ch/dnssec-key2ds | github
https://github.com/openfactory-ch/dnssec-key2ds

php の内容

<?php

require('dnssec_key2ds.php');

$result = dnssec_key2ds(
    'yokohei.xyz.',
    257, 
    3, 
    8, 
    'AwEAAcEK41yAftc5XnxG6+eQ+OrFyQAfPyoveIK6I4rXCKAIgkRpEO4A7Mw3N0MTSSr6lXlCf/t3Tq2nsfZUOVKyKSRVwcbYM09JibT5ISKvvmc0nubySxD5FMyQlHP1GFMXFo0IfidBvGilup41UBIYeYbFwOKZjudsI4NjYnVGaClPimz8vU7EMcqnBH6+IQyaQ1Mw3u4aVpCqFWTRTi7vR+i7R9aMQZ63yok6n2kx5GmckFC/NhAXn7fQ0GYstFnNhxCssUp1NexN61J5WvVeT3swXB6u3WOtWqpoJjrHPHXNswcMaOQis/gP3Y1n5ppogaYgXykl7mBttKSTjhFLsXc='
);

print_r($result);

実行結果

$ php test.php 
Array
(
    [owner] => yokohei.xyz.
    [keytag] => 21734
    [algorithm] => 8
    [digest] => Array
        (
            [0] => Array
                (
                    [type] => 1
                    [hash] => 32F4CE1C251AA1F89D9C6361929342A159A933ED
                )

            [1] => Array
                (
                    [type] => 2
                    [hash] => 7621D80F52C02C4F4ED6E652039F8826010B877699EDDA78DDBDC501B3642037
                )

        )

)

sha256 ハッシュ値が正しく一致していることを確認。

← AD, CD, DO bitDNSSEC RRs →
▼ Codes ▼
LeetCodeGitHub
▼ Profile ▼
LinkedInFlickr
▼ Logo made with DesignEvo ▼
DesignEvo
Copyright © 2020 Kohei Yoshida