*DNSのセキュリティ [#c6ccd490] RIGHT:更新日&lastmod(); **DNS 実装にキャッシュポイズニング攻撃 [#g0f3592e] キャッシュサーバとしているとき、DNSが情報を得るため目的サーバに問い合わせそのレスが戻る前に悪意のある情報を送り込む。~ このときサーバは自分ものとわかるようにIDをつける(UDP通信なため)がこれが16bitしかないので、悪意のあるサイトからランダムに送りつけられると偶然一致し、間違ったデータをキャッシュされのっとられる。 -対策はキャッシュサーバは外部から利用させないにする。 これにより大量のリクエストを外部から受けなくてすむ。すると問い合わせる情報量が減る -問い合わせ元ポートをランダムにする。 問い合わせ元ポートが変わると悪意のあるサイトからの送りつけにポートまで一致させる必要があるので、確率が下がる しかしながら、あくまで確率を下げることしかできない。DNSの宿命? ***対策 [#a0fdcd26] ''キャッシュサーバは外部から利用させない'' 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をバージョンアップ **検査 [#c8a2a6fc] ***ポートがランダムか? [#e52b0062] キャッシュサーバのチェックツール:自分が使用できるキャッシュサーバのポートがランダムかどうかは、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" ^^^^ ***テストサイト(ランダムポート否かチェック) [#m98baf5e] https://www.dns-oarc.net/oarc/services/dnsentropy **参考サイト [#q00ddbba] http://www.janog.gr.jp/meeting/janog19/files/DNS_Minda.pdf https://www.tokai-ic.or.jp/kaminsky.html **DNS の再帰的な問合せを使った DDoS 攻撃について [#k9a5335f] DDosをDNSを利用しておおなう。はじめに準備段階で任意の文字が利用できるTXTフィールドを持つ悪意DNSサーバサイトを用意し、踏み台となるDNSサーバからこの悪意DNSサーバにアクセスさせる。これはキャッシュサーバは外部から利用すればよい。その後悪意のあるデータがキャッシュされる。~ 次に、攻撃対象サーバのIPを偽装し、複数用意した踏み台サーバに悪意DNSサーバに再帰的な問合せをおこなわせると踏み台サーバから大量のパケットが流れ込む。 対策はDNS の再帰的な問合せを外部からさせない。 ***参考 [#w2e83ab5] http://www.cyberpolice.go.jp/server/rd_env/pdf/20060711_DNS-DDoS.pdf