== DNS/脆弱性入門 == <> DNSは基盤技術なんでしょうか。  いきなりなくなったら困ることは確かですが、ずっとこのまま使い続けるにはあまりに脆弱です。 DNSに深入りすることなく、脆弱性を理解できるように解説することを試みます。 (IPアドレスについての説明はしません。時間が足りない。) DNSキャッシュポイズニングすらまともに理解されていないと思うからです。 参考:[[DNS/1/DNSをあえてdisってみる|DNSをあえてdisってみる]]  http://www.slideshare.net/OrangeMorishita/20111029-part1dnsdis == DNSとはなにか == ドメイン名を分散管理するための仕組みです。(管理には成功していない) === ドメイン名 === 階層構造をもつ「ラベル」を'.'でつなげたもの。 分散管理といいながら、木構造をしていて、根に相当するところに権限が集中しているという矛盾があります。  ルートサーバ、ccTLD, gTLD, レジストリ(モデル) == 分散管理の仕組み == [[DNS/1/ゾーンサーバ]]と[[DNS/1/委譲|委譲]]  [[DNS/1/資源レコード/NS|NSレコード]]による委譲、[[DNS/用語/glue|glue]]というものが必要になった設計の欠陥 == 問い合わせの仕組み == [[DNS/1/リゾルバー|リゾルバー]]  ドメイン名空間での名前の委譲関係を追いかける仕事をする。    変化する構造を追いかけるのは難しい。(不一致が生じるのは避けられない)  負荷を小さくするために[[DNS/1/UDP]]を使うという設計が修復不可能な欠陥を負わせた。   [[DNS/毒盛|さまざまな毒盛手法]]が存在する。 [[DNS/毒盛/対策|対策]]も提案されているが、実装は十分とは言えない。 [[DNS/TCP]] に移れば、かなりの欠陥は消滅する。    キャッシュという仕組みが検索効率を改善するとともに構造を複雑に見せる結果を引き起こす。 当初は動作するかどうかも分からなかったから、安全性にまで配慮できなかったことも理解できる。  TXIDが16しかないことなど。(query source portが固定であったのは実装の不備である) その他、負荷を小さくするという目的で行われていることが脆弱性につながる。  Ancillary Data Attack == BINDという実装 == 脆弱性の歴史 == 運用 == 親子ゾーンの同居や、ドメイン名登録者を確認しない共用サーバ リゾルバー兼用サーバ、オープンリゾルバー == ? == DDoS 主な脆弱性 [[DNS/脆弱性]]   -- ToshinoriMaeno <>