1. DNS/毒盛/キャッシュ上書き/glue変更

DNS/毒盛/キャッシュ毒盛/攻撃/glueの耐性

おそらくは2008年のKaminsky/民田の指摘あたりからだろうと思うが、 BINDはNSの指す名前のAレコードを変更するだけでは毒盛できなくなっていた。 (これはRFC2128の記述とは異なる) glueを優先しているということです。

DNS/毒盛/AncillaryDataAttacks

NSの変更は受け入れるにも関わらず、Aレコードだけの変更は認めないのである。

今日改めて、named 9.12.3 で確認した。-- ToshinoriMaeno 2018-12-27 23:45:36

1.1. 確認手順

brau.jp ゾーンの NSの指すAレコードを変更してみる。

1.1.1. 登録を確認

#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

1.1.2. 本来の設定

#
.brau.jp::a:3600
+a.ns.brau.jp:14.192.44.29:3600
-a.ns.brau.jp:14.192.44.5:3600

1.1.3. 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

1.1.4. 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が返ってくることを確認しておく。

1.1.5. 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

1.1.6. ゾーンサーバー側の設定変更

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 を設定してある。(ワイルドカード設定)

1.1.7. 毒が入るか

毒返答を返す。

$ 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

1.1.8. 毒が入ったかの確認

入っていない。

$ 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

1.1.9. 念の為

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