キャッシュサーバとしているとき、DNSが情報を得るため目的サーバに問い合わせそのレスが戻る前に悪意のある情報を送り込む。
このときサーバは自分ものとわかるようにIDをつける(UDP通信なため)がこれが16bitしかないので、悪意のあるサイトからランダムに送りつけられると偶然一致し、間違ったデータをキャッシュされのっとられる。
しかしながら、あくまで確率を下げることしかできない。DNSの宿命?
キャッシュサーバは外部から利用させない
acl "localnet" { 192.168.0.0/16; 127.0.0.1; }; (略) view "local" { match-clients { "localnet"; }; recursion yes; <=再起的な問い合わせを許可 (略) view "world" { match-clients { any; }; recursion no; <=再起的な問い合わせを禁止
問い合わせ元ポートをランダムにする
bindをバージョンアップ
キャッシュサーバのチェックツール:自分が使用できるキャッシュサーバのポートがランダムかどうかは、porttest.dns-oarc.net の TXT レコードを検索すると結果をテキストで返してくれるようです。 26回中1回のときは同じポートでだめPOORを返し、26回中26ポートはランダムでGREATを返す 当然GREATがパッチ後
パッチ前
$ dig +short porttest.dns-oarc.net TXT @xxx.xxx.xxx.xxx porttest.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net. "xxx.xxx is GREAT: 26 queries in 6.5 seconds from 26 ports with std dev 15453" ^^^^^
パッチ後
$ dig +short porttest.dns-oarc.net TXT @yyy.yyy.yyy.yyy porttest.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net. "yyy.yyy.yyy.yyy is POOR: 26 queries in 6.5 seconds from 1 ports with std dev 0" ^^^^
https://www.dns-oarc.net/oarc/services/dnsentropy
http://www.janog.gr.jp/meeting/janog19/files/DNS_Minda.pdf
https://www.tokai-ic.or.jp/kaminsky.html
DDosをDNSを利用しておおなう。はじめに準備段階で任意の文字が利用できるTXTフィールドを持つ悪意DNSサーバサイトを用意し、踏み台となるDNSサーバからこの悪意DNSサーバにアクセスさせる。これはキャッシュサーバは外部から利用すればよい。その後悪意のあるデータがキャッシュされる。
次に、攻撃対象サーバのIPを偽装し、複数用意した踏み台サーバに悪意DNSサーバに再帰的な問合せをおこなわせると踏み台サーバから大量のパケットが流れ込む。
対策はDNS の再帰的な問合せを外部からさせない。
http://www.cyberpolice.go.jp/server/rd_env/pdf/20060711_DNS-DDoS.pdf