JAPAN REGISTRY SERVICES DNSSECの 拡 張 と BIND 9.7の 新 機 能 小 規 模 なDNSSEC 遊 びその 後 藤 原 和 典 <fujiwara@jprs.co.jp> <fujiwara@wide.ad.jp> 2009/11/24 dnsops.jp BoF Copyright 2009 株 式 会 社 日 本 レジストリサービス 1
DNSSECを 拡 張 するRFC RFC 5011: トラストアンカーの 自 動 更 新 RFC 5155: NSEC3 ( 略 ) RFC 5625: DNS Proxy Implementation Guideline RFC 5702: RSASHA256, RSASHA512の 追 加 2
RFC 5011 DNSKEYのFlagにRevoke bitを 追 加 Bit 8... MSBから0 開 始 で 数 えるので128 従 来 は 256(ZSK), 257(KSK) RevokeされたKSKだと 385 となる Revoke bitが1のdnskey( 自 己 署 名 あり)は 永 久 的 に 無 効 として 扱 うこと (MUST) トラストアンカーのリストからは 永 久 的 に 消 すこと 通 常 のDSを 使 うDelegationでの 鍵 更 新 では 不 要 DNSKEYがキャッシュされていれば 緊 急 でRevokeしても 対 応 できない DNSKEYがキャッシュされていなければ 緊 急 にDNSKEYをい れかえるだけで 古 い 鍵 はされない 3
RFC 5011 (2) トラストアンカーを 初 期 設 定 しておく 現 在 有 効 なトラストアンカーで 署 名 されている 新 しいトラストアンカーを 信 用 有 効 なトラストアンカーとして 追 加 信 用 する 条 件 : Add Hold-Down 時 間 (30 日 ) 連 続 して 有 効 にゾーンに 存 在 すること RevokeやRoll over 手 順 も 規 定 4
RFC 5625 DNS Proxy Implementation Guidelines DNS Proxyを 実 装 するガイドでBest Current Practiceなので 実 装 しなければならないもの EDNS0 対 応 TCP 対 応 DO bit, AD bit, CD bitを 通 過 させること Proxyが 知 らないRRなどを 通 過 させること DNSレスポンスサイズの 要 件 など 5
RFC 5702 Use of SHA-2 algorithms with RSA in DNSKEY and RRSIG Resource Records for DNSSEC 従 来 は RRSIGの 作 成 にはSHA1の 結 果 を 暗 号 化 していた SHA1のかわりにSHA256, SHA512を 使 う 暗 号 自 体 はRSAで 同 じ BINDでは9.7に 実 装 された RootのDNSSEC 対 応 ではRSASHA256を 使 用 する こととなっている 6
BIND 9.7での 変 更 点 DNSSEC for Humans RSASHA256, RSASHA512 対 応 9.6 系 に 入 るかは 不 明 DNAME DNAMEが 生 成 するCNAMEのTTLが0から DNAME TTLに 変 更 キャッシュ 可 能 7
DNSSEC for Humans Smart Signing 鍵 ファイルに 日 付 情 報 を 追 加 dnssec-signzoneコマンドが 署 名 時 に 自 動 的 に DNSKEYをゾーンにマージ dnssec-signzoneコマンドが 署 名 時 に 鍵 の 日 付 情 報 と 属 性 を 見 て 鍵 を 選 定 namedによる 自 動 署 名 も 拡 張 RFC 5011 対 応 8
鍵 ファイルの 拡 張 Version 1.2から1.3へ 日 付 情 報 が 追 加 -P:Publication date ゾーンに 出 す 時 刻 -A:Activation date 署 名 鍵 として 使 用 開 始 する 時 刻 -R:Revocation date 破 棄 時 刻 -I:Inactivation date 署 名 鍵 としての 使 用 をやめる 時 刻 -D:Deletion date ゾーンから 消 す 時 刻 dnssec-keygen, dnssec-settimeにて 指 定 可 能 dnssec-signzone, namedが 鍵 の 時 刻 情 報 を 参 照 9
Smart Signingの 例 (1) % cat > tld ゾーンファイル tld. 3600 IN SOA a.tld. postmaster.tld. 1 3600 300 86400 600 tld. 3600 IN NS ns.tld. ns.tld. 3600 IN A 192.168.0.1 % dnssec-keygen -q -f ksk tld KSK 生 成 Ktld.+005+20353 % dnssec-keygen -q -I +604800 -D +1209600 tld 今 すぐ 有 効 になり 一 週 間 後 (7*86400)に 署 名 に 使 用 しなくなり 二 週 間 後 (14*86400)にゾーンから 消 えるtldのZSK 生 成 Ktld.+005+22332 % dnssec-keygen -q -A +604800 -I +1209600 -D +181440 tld 一 週 間 後 (7*86400)に 有 効 になり 二 週 間 後 (14*86400)に 署 名 に 使 用 しなくなり 三 週 間 後 (21*86400)にゾーンから 消 えるtldのZSK 生 成 Ktld.+005+22512 10
Smart Signingの 例 (2) % dnssec-signzone S tld Fetching KSK 20353/RSASHA1 from key repository Fetching ZSK 22332/RSASHA1 from key repository Fetching ZSK 22512/RSASHA1 from key repository Verifying the zone using the following algorithms: RSASHA1. Zone signing complete: Algorithm: RSASHA1: KSKs: 1 active, 0 stand-by, 0 revoked ZSKs: 1 active, 1 stand-by, 0 revoked tld.signed 現 在 有 効 なKSKは1つ 現 在 有 効 なZSKは1つ ゾーンには 来 週 から 署 名 に 使 用 されるZSKをstand-byで1つ 一 週 間 後 にdnssec-signzone S tldすると stand-byキーで 署 名 するはず 11
Dynamic Update + DNSSEC Dynamic UpdateによるDNSSEC 署 名 の 強 化 9.6では#ifdefで 抑 制 されていた 機 能 のサポート NSECゾーンからNSEC3ゾーンへの 変 更 NSEC3PARAMの 変 更 未 署 名 ゾーンにDNSKEY RRを 追 加 することでnamedに よる 署 名 開 始 署 名 済 ゾーンからDNSKEY RRを 削 除 することで DNSSEC 対 応 をOFFに ゾーンにauto-dnssecオプションの 追 加 KEYの 自 動 生 成 更 新 などの 制 御 rndcsign 12
RFC 5011 トラストアンカー 自 動 更 新 named.confに 以 下 を 記 述 managed-keys { domain initial-key Flag Protocol Algorithm public-keydata ; }; Trusted-keysと 似 た 記 述 (initial-keyが 追 加 ) 更 新 された 鍵 情 報 は managed-keys.bindというゾーンに 保 存 される (どこに 保 存 されるのか?) ルートやTLDがRFC 5011に 対 応 すれば 使 える dlv.isc.orgのトラストアンカーはすでに 対 応 済? dns-lookaside auto; 13
BIND 9.7.0の 新 コマンド dnssec-revoke [options] keyfile 鍵 を 書 き 換 えてrevoke bitを1にする dnssec-settime [options] keyfile 鍵 の 時 刻 情 報 を 変 更 する dnssec-keyfromlabel -l label [options] name Pkcs11ハードウェア(HSM)からDNSKEYを 取 り 出 す dnssec-dsfromkey (9.6から) DNSKEYからDSを 作 成 する 14
BIND 9.7の 新 コマンド (2) arpaname IPアドレス IPアドレスから 逆 引 きドメイン 名 生 成 genrandom generate a file containing random data journalprint ファイル 名 journalファイルを 見 やすく 表 示 nsec3hash salt hash iteration domain nsec3のドメイン 名 生 成 15
9.7.0 betaで 直 面 した 問 題 Ixfr-from-differencesがNSEC3 ownernameに 対 し て 最 小 の 差 分 を 出 さない レポート 後 対 応 済 み 9.6~9.7.0b2: 差 分 生 成 時 にすべてのNSEC3 ownernameのrrの 削 除 追 加 という 差 分 を 生 成 dnssec-signzoneでsmart Signを 使 用 せず 署 名 鍵 を 明 に 指 定 しても 指 定 しない 鍵 も 含 めて 署 名 に 使 用 する 使 用 しない 鍵 はdnssec-signzoneから 見 えないところに 置 かないといけない dnssec.shのアップデートへ 9.7.0alphaからbetaになったところで 変 わった おそらく バグ 16
DNSSEC 遊 びその 後 現 在 の 家 の 設 定 家 ではすべてのアクセスをDLV named 9.7 alpha beta NAT 箱 はぼろくてFragment 通 しません ほとんどのDNSSEC queryはtcpで 結 果 特 に 困 ることなし 遅 いときもあるけど ブラウザの 最 初 のアクセスが 遅 いのは 許 容 範 囲 そのあとはキャッシュされる sshdの 逆 引 きはとめてあるのでremote login 時 は 問 題 なし ssh loginは 一 度 つないだらつなぎっぱなしなので 問 題 なし dnssec.sh 複 数 個 所 メインテナンスするのをやめるために 機 能 追 加 17
dnssec.sh http://member.wide.ad.jp/~fujiwara/dnssec/dnssec.sh 1. CentOSでも 動 くように 修 正 ( 以 前 はFreeBSDでのみ 確 認 ) 2. BIND 9.7.0beta に 対 応 (9.7.0のバグっぽい 挙 動 に 対 応 ) BIND 9.6, 9.7の 双 方 で 動 くが 9.7のdnssec-keygenで 生 成 した 新 し いフォーマットの 鍵 は9.6では 使 用 できないことに 注 意 3. ZSK Rolloverに 対 応 4. KSKのDS 表 示 機 能 追 加 dnssec.sh status zone(s) 5. dnssec.shと 同 一 ディレクトリのdnssec.confを 読 むように 改 良 dnssec.sh 自 体 の 変 更 をする 必 要 は 減 った 同 じdnssec.shを 自 宅 と 会 社 の 両 方 で 使 用 9 月 のバージョンからは 鍵 を 置 くディレクトリを 変 更 したので 互 換 性 ありません 18