= DNS/毒盛/キャッシュ上書き/glue変更 = <> [[DNS/毒盛/キャッシュ毒盛/攻撃/glueの耐性]] おそらくは2008年のKaminsky/民田の指摘あたりからだろうと思うが、 BINDはNSの指す名前のAレコードを変更するだけでは毒盛できなくなっていた。 (これはRFC2128の記述とは異なる) glueを優先しているということです。 [[DNS/毒盛/AncillaryDataAttacks]] NSの変更は受け入れるにも関わらず、Aレコードだけの変更は認めないのである。 今日改めて、named 9.12.3 で確認した。-- ToshinoriMaeno <> namedは @127.0.0.1 をlisten している。 == 確認手順 == brau.jp ゾーンの NSの指すAレコードを変更してみる。<> === 登録を確認 === #dig +norec -t ns brau.jp @a.dns.jp などで {{{ brau.jp. 86400 IN NS a.ns.brau.jp. a.ns.brau.jp. 86400 IN A 14.192.44.29 }}} === 本来の設定 === {{{ # .brau.jp::a:3600 +a.ns.brau.jp:14.192.44.29:3600 -a.ns.brau.jp:14.192.44.5:3600 }}}   === brau.jp NS === {{{ $ dnsq ns brau.jp 14.192.44.29 2 brau.jp: 44 bytes, 1+1+0+0 records, response, authoritative, noerror query: 2 brau.jp answer: brau.jp 3600 NS a.ns.brau.jp }}} === a.brau.jp 確認 === {{{ $ dnsq a a.brau.jp 14.192.44.29 1 a.brau.jp: 78 bytes, 1+1+1+1 records, response, authoritative, noerror query: 1 a.brau.jp answer: a.brau.jp 300 A 127.0.0.1 authority: brau.jp 3600 NS a.ns.brau.jp additional: a.ns.brau.jp 3600 A 14.192.44.29 }}} Auth/Addが返ってくることを確認しておく。 === x.brau.jp query === キャッシュに問い合わせる。 {{{ $ dig +nocookie x.brau.jp @127.0.0.1 ; <<>> DiG 9.12.3 <<>> +nocookie x.brau.jp @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14219 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1220 ;; QUESTION SECTION: ;x.brau.jp. IN A ;; ANSWER SECTION: x.brau.jp. 300 IN A 127.0.0.3 ;; Query time: 10 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: 金 12月 28 08:36:09 JST 2018 ;; MSG SIZE rcvd: 54 }}}   これは正しい返答だ。 === ゾーンサーバー側の設定変更 === a.ns.brau.jpのAを変更する。 {{{ # .brau.jp::a:3600 -a.ns.brau.jp:14.192.44.29:3600 +a.ns.brau.jp:14.192.44.5:3600 +x.brau.jp:127.0.0.3:300 +*.brau.jp:127.0.0.1:300 テストの都合で *.brau.jp A を設定してある。(ワイルドカード設定) }}} === 毒が入るか === 毒返答を返す。 {{{ $ dig +nocookie y.brau.jp @127.0.0.1 ; <<>> DiG 9.12.3 <<>> +nocookie y.brau.jp @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17904 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1220 ;; QUESTION SECTION: ;y.brau.jp. IN A ;; ANSWER SECTION: y.brau.jp. 300 IN A 127.0.0.1 ;; Query time: 11 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: 金 12月 28 08:40:54 JST 2018 ;; MSG SIZE rcvd: 54 }}} === 毒が入ったかの確認 === 入っていない。 {{{ $ dig +nocookie z.brau.jp @127.0.0.1 ; <<>> DiG 9.12.3 <<>> +nocookie z.brau.jp @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2083 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1220 ;; QUESTION SECTION: ;z.brau.jp. IN A ;; ANSWER SECTION: z.brau.jp. 300 IN A 127.0.0.1 ;; Query time: 12 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: 金 12月 28 08:42:25 JST 2018 ;; MSG SIZE rcvd: 54 }}} === 念の為 === named のキャッシュを確かめてみる。 a.ns.brau.jpは書き換わっていない。 {{{ $ dig +norec a.ns.brau.jp @127.0.0.1 ; <<>> DiG 9.12.3 <<>> +norec a.ns.brau.jp @127.0.0.1 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59468 ;; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1220 ; COOKIE: 2c50db137934d99e395473195c2563be0941087bfbbf7d7b (good) ;; QUESTION SECTION: ;a.ns.brau.jp. IN A ;; AUTHORITY SECTION: brau.jp. 1743 IN NS a.ns.brau.jp. ;; ADDITIONAL SECTION: a.ns.brau.jp. 84543 IN A 14.192.44.29 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: 金 12月 28 08:43:58 JST 2018 ;; MSG SIZE rcvd: 106 }}}