DNS: 短いTTLのリスク

12月 14, 2006 Security
(Last Updated On: 2014年12月5日)

TTLが短いとDNSキャッシュサーバがドメイン権限を持ったDNSサーバにクエリに行く機会が増える(当たり前ですがDNSキャッシュサーバはTTLで指定された時間だけレコード情報をキャッシュしてドメイン権限を持つDNSサーバにクエリしない)ので危険と言う話。1秒に一回キャッシュを更新するほうが1時間に一回キャッシュを更新するよりDNSキャッシュ汚染が行いやすくなる、という当たり前の事です。DNSキャッシュが汚染可能である事、その汚染の仕組みを知らない方には思いがけないリスク増加かもしれません。

7ページ目に記載されている数式だけではどれが何だか分かりませんが、Nはポート数を表しているはずです。ポートが固定されていると16^2の組み合わせしかない、と言う話は良く知られていると思います。DNSを管理している人なら誰でも知っていると思いますが

にも記載されている通りBINDはポートが固定されていたのでdnscache(djbdnsのDNSキャッシュサーバ専用のプログラム)に比べてかなり脆弱だったのは有名な話です。
# 最近はBINDを使ってないので今のBIND9の実装がどうなっている
# か知りません。

気にした事が無かったですがTTLを短くした場合、ネームサーバを増やすのは良い考えですね。DNSはラウンドロビンでIPアドレスを返すのでネームサーバが増えた分だけ細工したパケットでDNSキャッシュ汚染できる確立を低下できます。そのうちネームサーバが100個登録されているドメインとか出てくる(?)かも知れません。そうなるとBINDのNOTIFY/AXFERではちょっと困りますね。djbdnsのrsync方式の方が信頼性が高い&直ぐに同期できるのでBINDではちょっとやりづらいと思います。

ここで余談を一つ。djbdnsには昔から面白い機能があります。データセンターの変更などでWebサーバ等のIPアドレスが変更される場合があります。移行前にTTLを短くしておくなどの対処を行いますが、djbdnsには「指定した時間になったらIPアドレスを変更する」機能があります。この機能はtinydns(djbdnsのDNSサーバ)は指定されたtai64n形式の時間(qmail等でも利用されている厳密に時間表記が行える表記形式)に合わせてリクエストがくる度に自動的TTLを変更することによって実現されています。データセンターの変更だけでなくWebサーバのメンテナンスにも便利です。

参考:

更に余談をもう一つ。少なくとも先月はYahoo! BB、DoCoMoのMTAはネームサーバが停止しているとメールが送れない場合があったようです。ネームサーバは1台でも稼動していれば名前解決ができるのですが、Yahoo! BB、DoCoMoのMTAは稼動していないネームサーバのIPアドレスを引いてしまうと名前の解決に失敗した旨のエラーでメール送信に失敗していたようです。単なる想像ですがDomain Keyと関連があると思っています。
# ネームサーバを増やすと思わぬリスクを増やすかも
# と言う話でした。

投稿者: yohgaki