## page was renamed from DNS/毒盛/NXDOMAIN返答活用 ## page was renamed from DNS/毒盛/NXDOMAIN返答対策 <> = DNS/毒盛/対策/NXDOMAIN返答活用 = <> [[../CNAME毒対策]] == NS毒対策 == NXDomain返答にあるSOAレコードを使うことで、不在が演繹できるzone cutsがある。  ただし、直系ゾーンの同居がある場合にはSOAレコードから得られる情報では十分ではない。 不在が分かったノードに対するNSレコード(Authority Section)は毒である。 Mueller/Kaminsky流攻撃に現れると推定できるもの。 === zone cuts 不在の情報 === qname minimisation を実装しているKnot resolverはzone cutsの存在を記録している。  また、[[DNS/返答/NXDOMAIN]]を返されたときには、[[DNS/1/ネガティブキャッシング]] される。 だが、後者ではzone cutsが存在しないノードの情報は利用していない。  これを利用しようというアイデアである。-- ToshinoriMaeno <> {{{ SOAレコードのownerは問い合わせに対するもっと近いゾーンを示すことになっているので、  問い合わせ名までのノードにzone cuts が存在しないことが分かる。  このことを使えば、排除することができる委譲返答を増やせる。 }}} (直系)系列ゾーンの同居が問題とならない根拠でもある。[[/frでの演習]] [[/auでの演習]] 同居でなければ、delegation返答が返る場面だから。(それを狙った攻撃に対抗するために) {{{ SOAのownerドメインに対してのNSがキャッシュにないときは問い合わせてキャッシュしておくべきだ。 }}}   [[/auでの演習]]を参照 こういうdraftも出ていた。(DNSSECは使わないので、読んでいない) https://datatracker.ietf.org/doc/draft-fujiwara-dnsop-nsec-aggressiveuse/?include_text=1 This draft proposes the aggressive use of a NSEC/NSEC3 resource record, which is able to express non-existence of a range of names authoritatively. Negative cachingの現状 https://indico.dns-oarc.net/event/21/contribution/4/material/slides/0.p === NSレコードをもたないノード === co.jpなどを狙う委譲毒への対策としては、  name minimisationに現れるはずのco.jp NS問い合せの結果(NODATA)をキャッシュしておく。   もし、co.jp NS delegation を受け取ったら、ネガティブキャッシングの情報と付き合わせて捨てる。 最悪でも安全な方法で問い合せしなおす。(TCPを使うのがよい) co.jpはzone cut (jp)の直下のラベルなので、すでにNS問い合わせが行われているはずで、  NSを持たないノードであることはキャッシュにあるはずだ。(SOAでも分かる)   あるいはjpの直下であるから、NS問い合わせ以外でdelegationが返ることはないはずである。 これにより、委譲毒は防げそうだ。 -- ToshinoriMaeno <> dnscache であれば、servers directoryにサーバのIPアドレスを指定するという方法もある。  JPサーバのIPアドレスはあまり変化しないので、これでも対抗できるだろう。 -- ToshinoriMaeno <> == ゾーンが存在しないという情報 == SOAレコードのownerからは「問い合わせた名前を管理しているゾーン」が分かる。  つまり、それより下位のゾーンは存在しない、ということである。-- ToshinoriMaeno <> [[/ゾーン不在情報]] == ゾーンが存在するという情報 == SOA ownerから分かるゾーンのNSがキャッシュにない場合には毒盛されるおそれがあるので、(系列同居)  あらかじめNSレコードを問い合わせておくのが安全である。(親ゾーンに問い合わせ、さらに権威ゾーンにも問い合わせる) == SOA毒対策 == NXDOMAIN返答中のSOAレコード(ラベル)にも毒が盛られているかもしれないので、  どう検査をすべきか、検討するつもりだ。 問い合わせたサーバが管理しているゾーンのサブドメインが返ってきたときに受け入れるかどうか。 -- ToshinoriMaeno <> == 直系ゾーン同居 == ゾーン同居の場合、SOAで返るのは問い合わせにもっとも近い世代のゾーンである。  そのゾーンより下位にはゾーンがないことが分かるが、  そのゾーンを含む上位ゾーンに対するdelegation毒盛攻撃は成立する。 これではゾーン不在情報を利用することで簡単になったとは言えないのではないか。 == 単純なやり方 == 二つの原則 1. delegation返答をもらったら、nonceつきでNSを問い合わせなおす。  これでdelegation毒は排除できる。 2. answer sectionありの返答ではanswer sectionだけ受け取り、他は捨てる。 これでNS毒は実用上十分に排除できる。 -- ToshinoriMaeno <>