Apacheでログにホスト名を残したい場合があります。そのための設定が次のものです。
HostnameLookups On
これはデフォルトではOffになっているようですが、これ有効にして、逆引きをする設定になっていることがあるようです。忙しいサーバではOffにしてパフォーマンスを上げるチューニングが良く紹介される設定ですが、ガラガラなサーバなら問題がなさそうにもみえます。しかし、この設定だと逆引きした結果のみをそのままログに記録してしまうようです。
ふつう逆引きの結果が記録されることに問題はありませんが、逆引きと正引きが必ずしも一致しているとは限らない点がセキュリティー的なリスクになる恐れがあります。仮に悪いヤツが逆引き権限の委譲を受けている場合、好きな値に設定できてしまうからです。
ためしに次のような設定にしてみました。(ふだんはnakahara.michitomo.jp ←→ 206.225.17.15が設定されています)
正引き nakahara.michitomo.jp → 206.225.17.14
逆引き 206.225.17.15 → nakahara.michitomo.jp
この状態で206.225.17.15からApacheにアクセスすると、ログは次のようになります。
nakahara.michitomo.jp - - [14/Jul/2009:10:12:54 +0000] "GET / HTTP/1.1" 200 780 "-" "Opera/9.80 (X11; Linux i686; U; ja) Presto/2.2.15 Version/10.00"
ドメイン所有者が設定しているIPアドレス以外からのアクセスにもかかわらず、ログにはnakahara.michitomo.jpのドメインが残りました。これだとnakahara.michitomo.jpからのアクセスに見えます。
このドメインがわかりづらいですが、逆引きの設定は委譲を受けていれば自由にできてしまうので、例えばsoftbank***.bbtec.netやkantei.go.jpなどのオレオレ逆引きが設定されていてもApacheのログにはそのまま逆引きの結果だけが残ってしまう点が問題です。
静的なサイトでは特にいいかもしれませんが、動的な、例えばアップローダなどを運営しているサーバの場合、アップロード主を追跡できないと厄介なファイルをアップロードされたときに困るかもしれません。
ところで、SSHの場合は対策がされているようです。上と同じ状況で接続したときのauth.logは次のようになります。
Jul 14 10:14:06 sf sshd[12263]: Address 206.225.17.15 maps to nakahara.michitomo.jp, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
「206.225.17.15はnakahara.michitomo.jpに逆引きされているが、nakahara.michitomo.jpは206.225.17.15になっていない。不正侵入の可能性!」という意味のメッセージです。さらに、ログイン中のユーザ一覧を表示するwhoやwコマンドでホスト名が表示されるためにも逆引きと正引きの一致が条件になっているようです。
Apacheでも「アクセス元ホスト名をログに残したい」利便性と「偽装ホスト名は困る」のセキュリティを両立した設定があるといいわけですが、どうやら
HostnameLookups Double
があるようです。DNSの負荷が2倍になる問題はありますが、個人的に画像のアップローダをやるなら、OnにしておくよりはDoubleの方がいいかなと。今のところ私自身はIPアドレスだけを記録して後で必要なら正引きをしています。
というわけで、閲覧者がコンテンツに編集を加えられるサイトでホスト名を記録したい場合にはHostnameLookups Doubleがいいんじゃないか?という話でした。