DNS/毒盛/対策/肯定返答について、ここに記述してください。
結論:
Answer Sectionだけ受け取るのが安全である。
Authority Sectionを受け入れることもできる場合があるが、 条件が複雑で、判断を間違い易いので、やめた方がよい。
https://twitter.com/beyondDNS/status/715298593041551360?lang=ja
以下は検討の時に考えたことだ。-- ToshinoriMaeno 2016-04-04 13:46:14
1. 肯定返答が得られた場合
問い合わせたサーバの管理するゾーン内にqnameが属することが分かる。
- 系列ゾーンが同居していないのなら、簡単で、中間ノードに対してはdelegation返答が返らない。
Authority SectionにNSレコードが存在する場合はそのOwnerを見る。(黙って捨てるのでもよい)
Authority Sectionがなければ、問い合わせたサーバが管理するゾーンだと推定してよい。
- 親子ゾーン同居でも問題にならないことは次で分かる。
1.1. 系列ゾーンが同居している場合の考察が必要だ
親ゾーンのサーバが子ゾーンのサーバとして振る舞うことがある。
この構成の場合、子ゾーン内のレコードの問い合わせに親ゾーンサーバが返答をする。
- 子ゾーンへの委譲返答が返ることはないだろう。 このことから、委譲返答は毒だと判断してよいと考える。捨てても害はないと言い換えてもよい。
watchNS/gov.au gov.au のように au ccTLDと同居しているばあい、
- NS/SOAを問い合わせないかぎり、別ゾーンであることは定かではない。
- NSなどを問い合わせたのでないかぎり、(Authritiy Sectionの)NSは毒であると判定しても問題ないだろう。
-- ToshinoriMaeno 2016-04-03 04:45:33
親子ゾーン同居の場合、子ゾーンのNSは毒かどうかに関係なく、受け取らなくても問題ない。 (仮説の段階ですが) なぜなら、 zone cuts の有無はわからなくても、名前解決の障害にならない。
- 途中に発生した難しい問題は解決を試みるな、の原則
1.2. 中抜き三世代同居
直系の同居であるが、中間ノードが別ゾーン・別サーバになっているケースもありえる。
- この場合は中間ノードに対してはdelegationが返ってくるから、毒とは言えない。
問い合わせ名から区別できる可能性がある。
Authority SectionのNSのOwnerを見る。
2. まとめ
zone cutsが存在しないことが確実な否定返答はもちろんだが、 不明な肯定返答においてもdelegation返答が返ることがないことが明らかなケースがある。
delegation返答は毒を疑って捨てるのがよい。(queryをどう始末するかは課題)
細かくケース分けすることは手順を複雑にするのでやめる
- 否定返答ではzone cutsが存在しない範囲を確定できる。 肯定返答でも、問い合わせ名と問い合わせ先(zone)からdelegation返答が返らないことを判断できる場合がある。
- Authority SectionのNSのOwnerを見る。
ワイルドカードを使うようなドメインを毒盛から防御するかどうかは実装の手間の大きさで判断することになるだろう。
3. 検討のきっかけ
https://twitter.com/_so4/status/715233790168211457?lang=ja
ワイルドカードの時はAUTHORITYで返ってくるNSに着目すればいいと考えたのですが、 そのゾーンに子ゾーンがいた場合、 zone cutがないと決めつけるのは問題になるので非存在と決めつけることはできない。と考えました