読者です 読者をやめる 読者になる 読者になる

サーバのバージョンは隠すのが常識?

Slashdot.jpより。何で1ヶ月以上前の日記にコメントが着いたと思ったのか不思議だったんですが、コレが原因だったんですね。

Slashdot.jpのコメントで私の日記にリンクを張られた方がおられますが、「そう解釈するか・・・」と思ったりしました。ただスコアが高いコメントは、隠す派・隠さない派どちらも参考になったり、日記にうまくかけなかった部分が書かれていたりしておもしろかったです。

コメントをしていただいた方はどなたか存じ上げませんが、簡単にお答えしておきます。
コメント1〜2行目

バナー情報を判断せずに、手当たり次第exploitを打ち込んでくるワームに対応するには「バージョン情報を隠す前に、まずは問題の無いデーモンでサービスを提供するようにメンテナンスを行うべきだ。」が適用されますよね。

コメントいただいた本文にもちゃんと書いているんですが、パージョンを隠すべきでないと言う方は、なぜかパッチ適用とパージョン隠蔽のどちらが重要という話にすり替えているような気がします。Slashdot.jpのコメントにも似たような意見がありました。

他にも同じような発言があったのですが、どうも「バージョン隠蔽=パッチ未適用」が規定路線として語られてる感があります。
パッチ未適用ならバージョンを隠蔽しようが公開しようが攻撃者から見て事実上何の差異も無いのであれば、パッチはきちんと当たってるという前提で、その上で「バージョンを公開/非公開」の論議をすべきでは?

どうも話をすり替えて混乱させている人が居るような気がしてなりませんよ。

コメント3行目

大流行したCodeRedもNimdaもバナーなんか見ていませんでした。

私も自分の意見を書いたときは、全般的に言える話であるものの基本的Apacheの話をしているつもりでした。でもバージョンを隠すべきではないという方々はIISの話をしているのに気がつきました。ワームの場合は、ApacheよりもIISの方がわかりやすいのでしょう。
結論を先に書いてしまうと、IISのバージョン隠蔽はApacheのバージョン隠蔽に比べると効果がだいぶ薄いと思います*1
バージョン隠蔽などのサーバ要塞化手順に書かれていることは、どんなシステムでも必ずやるべきというものではなく、システム環境やリスクに応じてやる・やらないを判断するものです。インターネットに直結しているかしないか、動作させているサーバプログラム、その他いろいろな要素によっても判断が変わるものだと思いますし、その判断は運用者のポリシーによるところも大きいと思います。
Apacheを狙うワームがあったと書きましたが、IISを狙うワームがバナーを見ないのはある意味当然です。ワームを流行させるには環境依存性を極力小さくする必要があります。Windowsの場合、言語(日本語版、英語版とか)やサービスパック(SP1とか)によってexploitが成功するしないに影響を与えます。しかしながら過去流行したワームはユニバーサルexploitコードと呼ばれる環境依存性が少ないexploitコードを使っているため、バナーを見る必要がありません*2
ところがApacheLinux商用UnixWindowsなど様々な環境で動作します。Linuxだけに絞っても様々なディストリビューション、さらにそのディストリビューションの中でも複数のバージョンがあります*3ソースコードの一部を見ればわかりますが、昔あったワームはバージョン情報を元に環境を判断し適切なexploitコードを打ち込むようになっていました。
いまどきのワームはバージョンなんか見ずにとりあえずexploitを打ち込んでくるからバージョン隠蔽しても意味がないという意見も多くありますが、その多くはIISを対象にしたワームの話でしょう。ユニバーサルexploitコードが見つかっているなら環境依存を考えなくてもOKでしょうが、そうでない場合はexploitが効かずにWebサーバをダウンさせまくるだけでワームとしての感染拡大はあまり見込めないでしょう。
一言でワームと言っても、個々のワームによってバナーを見る・見ない理由があるのです。

思ったより長くなってしまったので、いただいたコメントの返事はこれくらいにさせていただきます。

*1:以前書いたとおり、バージョン隠蔽自体で大きな効果が生まれないですが

*2:IISはもともとそれほど多くの情報を出しませんし…

*3:今は2003年あたりと比べるとそれほどバリエーションがないと思いますが