1. DNS/毒盛/対策/SOA/キャッシュ
NXDomainあるいはNoData返答を前提にしている。
- Authority SectionにSOAレコードがひとつある。
2. SOAから分かること
ownerは問い合わせた名前qname(ドメイン名)にたいするqtypeレコードが 存在しないことを保証するzoneの根元のノード名である。
(例) a.b.c.d.jp を JP NSに問い合わせて、NXDomain返答が返り、
- JP SOA ... というレコードがあったとする。
これにより、d.jp というゾーンはjp下には存在しないことが分かる。
- 同様にa.b.c.d.jp, b.c.d.jp, c.d.jp も存在しない。
- なぜなら、d.jpがゾーンでなくて、c.d.jpがゾーンであれば、
- NXDOMAIN返答ではなく、c.d.jpへの委譲返答が返るはずだから。
- なぜなら、d.jpがゾーンでなくて、c.d.jpがゾーンであれば、
-- ToshinoriMaeno 2016-05-06 07:44:06
3. SOA レコードを毒見に利用する
SOAレコードをキャッシュするときに、否定返答を返した問い合わせ名も一緒に 保存しておく。
委譲返答が得られた場合には、その返答を返したzone cutのSOAレコードを調べる。
- SOAがなければ、毒ではないとする。(問い合わせ直すのがよい)
- SOAを返したときのquery name と委譲返答を返しているquery nameを比較する。
NXDOMAIN SOAのqname : nonexist.co.jp referral返答のqname : jprs.co.jp
- この場合は毒ではないと判定する。
NXDOMAIN SOAのqname : nonexist.co.jp referral返答のqname : co.jp
- この場合は毒である。
-- ToshinoriMaeno 2016-05-06 07:44:06
4. キャッシュ容量
Kaminsky流攻撃を考慮すると、問い合わせ名をそのまま残した形で保存するのでは、 キャッシュ容量を簡単に越えてしまいそうだ。圧縮のための工夫が必要だ。
- qname minimisationと組み合わせるといいか。label数次第か。
-- ToshinoriMaeno 2016-05-06 22:52:29
毒盛被害の大きさを考えるとownerの直下のサブドメインのゾーン不在を記録するだけでも いいかもしれない。とすると、qname minimisation型で十分か。w
- ゾーン不在が記録されているドメイン名に対するdelegation毒を排除する機能は追加する。
なんだか、PSLに似てきていないか。 https://publicsuffix.org/list/