| Works
PowerDNSでDNSSEC対応
前回作成したPowerDNSをDNSSECに対応させるために設定変更する。
管理用に入れたPoweradminはまだDNSSEC関連の設定を操作できないようなので、操作はコマンドラインで行う。
設定のため、事前にテスト用のゾーンは作成しておく。
PowerDNSの設定ファイル"/etc/pdns/pdns.conf"にDNSSEC対応の設定を入れる。
(ここでは10行目の"gmysql-dnssec=yes"を追加)
setuid=pdns
setgid=pdns
local-address=127.0.0.1
recursor=8.8.8.8
launch=gmysql
gmysql-host=localhost
gmysql-user=powerdns
gmysql-password=password
gmysql-dbname=powerdns
gmysql-dnssec=yes
設定を変更したのでサービスを再起動
# systemctl restart pdns
PowerDNSの設定はこれだけ。
後は対象のゾーンに設定を入れていきます。
まずは今の状態で名前解決できることを"dig"で確認。
(テスト用のゾーンは"workslab.net")
# dig @127.0.0.1 workslab.net
~ 省略 ~
;; QUESTION SECTION:
;workslab.net. IN A
;; AUTHORITY SECTION:
workslab.net. 3600 IN SOA ns1.workslab.net. root.workslab.net. 2014111101 1800 900 604800 3600
~ 省略 ~
確認できたらゾーンを指定して"pdnssec"コマンドを実行。
# pdnssec secure-zone workslab.net
Securing zone with rsasha256 algorithm with default key size
Zone workslab.net secured
Adding NSEC ordering information
正常に実行できたら、"dig"コマンドに"+dnssec"オプションを付けて動作確認。
[root@pdns01 src]# dig +dnssec @127.0.0.1 www.workslab.net
~ 省略 ~
;; QUESTION SECTION:
;www.workslab.net. IN A
;; ANSWER SECTION:
www.workslab.net. 3600 IN RRSIG A 8 3 3600 20141127000000 20141106000000 9576 workslab.net. QYpPJk7KehC595mFd7FPg/qVqQjtUc5d1CHizTp/U0yszHl3oS4OdL37 9DZQ/pCsIhZAY6wBZQP0/EytV8PCUJKQhBAoJidIbFGy4y91b2WrbJnz 1hSyzMoZSiXDp0s51YF9xKHIeHQIg4/zRJayE72UkF7W+VpSjjqWzzQc ZD8=
www.workslab.net. 3600 IN A 192.168.40.10
~ 省略 ~
RRSIGレコードが返ってくれば成功。
続いて、鍵署名鍵KSKを取り出してテストしてみる。
# pdnssec export-zone-dnskey workslab.net 1 | grep DNSKEY > trusted.key
# dig +dnssec +sigchase +trusted-key=trusted.key @127.0.0.1 workslab.net
trusted.key:1: no TTL specified; zone rejected
No trusted keys present
何か怒られたので、エクスポートしたファイルを確認するとTTLが抜けてるみたい。
とりあえず、今回は手作業で"3600"を追記した。
workslab.net 3600 IN DNSKEY 257 3 8 AwEAAaGjrQ+KGONgU+ ... (省略)
もう一度"dig"でテスト。
# dig +dnssec +sigchase +trusted-key=trusted.key @127.0.0.1 workslab.net
~ 省略 ~
;; WE HAVE MATERIAL, WE NOW DO VALIDATION
;; VERIFYING NSEC RRset for workslab.net. with DNSKEY:9576: success
;; OK We found DNSKEY (or more) to validate the RRset
;; Ok, find a Trusted Key in the DNSKEY RRset: 33020
;; VERIFYING DNSKEY RRset for workslab.net. with DNSKEY:33020: success
;; Ok this DNSKEY is a Trusted Key, DNSSEC validation is ok: SUCCESS
"SUCCESS"が返ってきたので大丈夫と思われる。
上位ゾーンへ登録するDSは以下のように取得する
(行頭が"DS"のところ)
# pdnssec show-zone workslab.net
Zone is not presigned
Zone has NSEC semantics
keys:
ID = 1 (KSK), tag = 33020, algo = 8, bits = 2048 Active: 1 ( RSASHA256 )
KSK DNSKEY = workslab.net IN DNSKEY 257 3 8 AwEA ...(省略)
DS = workslab.net IN DS 33020 8 1 674d ...(省略)
DS = workslab.net IN DS 33020 8 2 f057 ...(省略)
DS = workslab.net IN DS 33020 8 4 a966 ...(省略)
ID = 2 (ZSK), tag = 9576, algo = 8, bits = 1024 Active: 1 ( RSASHA256 )
この後、レコードを修正した場合は以下のコマンドを実行するようにする。
# pdnssec check-zone workslab.net
# pdnssec rectify-zone workslab.net
DNSSECを無効にする場合は以下を実行。
# pdnssec disable-dnssec workslab.net
基本的なところとしてはこれくらいでしょうか。
DNSSECについてはあまり理解していないところがあるので、しっかり勉強していかないといけませんね。勉強していかないといけないことばかりです。