2017年9月11日月曜日

[BIND] DNSSECのKSKロールオーバーについて

概要

いよいよ2017年9月19日が迫ってきた。DNSのルートゾーンにおける鍵(KSK)の更新が行われることにより以下、2つの事象が発生する可能性があり、インターネットの利用に問題が発生するかもしれない。

前提条件

BIND 9.7以降

事象1

内容

ルートゾーンから転送される一部のDNS応答のサイズが一時的に大きくなる。 サイズの大きいDNS応答を受け取れない場合、DNSサービスを正常に提供できなくなり、インターネットの利用に問題が発生する。
KSKロールオーバーの更新作業中にDNS応答のサイズが増大するタイミングは以下の通り。これらのタイミングでは、パケットサイズがVPN等のネットワークで用いられるデフォルトMTU値(1280バイト)を超えるため、IPフラグメンテーションが発生しやすくなる。
日付 応答サイズ(単位:バイト)
2017/9/19 1414
2017/12/20 1414
2018/1/11 1424

対処

TCP53番ポート宛の通信がサーバ、ネットワーク経路上で許可されていることを確認する。(DNSSECの有無に関係無く)
通常、DNSとのやりとりはUDPで行われるが、DNS応答のサイズがしきい値を超える場合、TCPフォールバック機能により、TCPでやりとりが行われるため。   しきい値は、自サーバと問合せ先のサーバでEDSN0が有効な場合、自サーバのedns-udp-sizeか、問合せ先サーバのmax-udp-size、どちらか小さい値となる。なお、EDSN0が無効の場合は、512バイトがしきい値となる。
また、IPフラグメンテーションによる通信の失敗を防ぐため、しきい値は1216バイト(1280-64)に変更する。
options {
    edns-udp-size 1216;
    max-udp-size 1216;
}

#server IPアドレス {
#    edns yes;
#}
Note: 特に指定が無い場合のデフォルト値
edns yes;
edns-udp-size 4096;
max-udp-size 4096;

事象2

内容

古い鍵(KSK)ではDNS応答の正当性を検証できなくなるため、DNSサービスを正常に提供できなくなり、インターネットの利用に問題が発生する。

対処

DNSSECが有効かどうかを確認する。(BIND 9.5以降、デフォルトで有効) named.confでdnssec-enableとdnssec-validationが明示的に"no"に設定していなければ、デフォルトでDNSSECが有効になっている。 しかし、named.confの"trusted-keys"や"managed-keys"で公開鍵を設定していなければ、DNSSECが機能することはない。
DNSSECが機能する場合、トラストアンカーの自動更新"managed-keys"を設定する。
# cat /etc/named.conf | grep include
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
# cat /etc/named.root.key
managed-keys {
    # ROOT KEYS: See https://data.iana.org/root-anchors/root-anchors.xml
    # for current trust anchor information.
    #
    # This key (19036) is to be phased out starting in 2017. It will
    # remain in the root zone for some time after its successor key
    # has been added. It will remain this file until it is removed from
    # the root zone.
    . initial-key 257 3 8 "AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq QxA+Uk1ihz0=";

    # This key (20326) is to be published in the root zone in 2017.
    # Servers which were already using the old key should roll to the
    # new # one seamlessly.  Servers being set up for the first time
    # can use either of the keys in this file to verify the root keys
    # for the first time; thereafter the keys in the zone will be
    # trusted and maintained automatically.
    . initial-key 257 3 8 "AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3 +/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kv ArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF 0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+e oZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfd RUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwN R1AkUTV74bU=";
};
Tip: managed-keysに設定するKSK公開鍵の入手方法
# dig . dnskey | grep -w 257 > root-ksk.key
# cat root-ksk.key
.                       69819   IN      DNSKEY  257 3 8 AwEAAagAIKlVZrpC6Ia7gEzahOR+9W29euxhJhVVLOyQbSEW0O8gcCjF FVQUTf6v58fLjwBd0YI0EzrAcQqBGCzh/RStIoO8g0NfnfL2MTJRkxoX bfDaUeVPQuYEhg37NZWAJQ9VnMVDxP/VHL496M/QZxkjf5/Efucp2gaD X6RS6CXpoY68LsvPVjR0ZSwzz1apAzvN9dlzEheX7ICJBBtuA6G3LQpz W5hOA2hzCTMjJPJ8LbqF6dsV6DoBQzgul0sGIcGOYl7OyQdXfZ57relS Qageu+ipAdTTJ25AsRTAoub8ONGcLmqrAmRLKBP1dfwhYB4N7knNnulq QxA+Uk1ihz0=
.                       69819   IN      DNSKEY  257 3 8 AwEAAaz/tAm8yTn4Mfeh5eyI96WSVexTBAvkMgJzkKTOiW1vkIbzxeF3 +/4RgWOq7HrxRixHlFlExOLAJr5emLvN7SWXgnLh4+B5xQlNVz8Og8kv ArMtNROxVQuCaSnIDdD5LKyWbRd2n9WGe2R8PzgCmr3EgVLrjyBxWezF 0jLHwVN8efS3rCj/EWgvIWgb9tarpVUDK/b58Da+sqqls3eNbuv7pr+e oZG+SrDK6nWeL3c6H5Apxz7LjVc1uTIdsIXxuOLYA4/ilBmSVIzuDWfd RUfhHdY6+cn8HFRm+2hM8AnXGXws9555KrUB5qihylGa8subX2Nn6UwN R1AkUTV74bU=

参考

  • https://www.nic.ad.jp/ja/dns/ksk-rollover/

0 件のコメント:

コメントを投稿