Webサーバ防御の「心理戦」に関する自分の体験
セキュリティスタジアム2004に参加した時の話。私は防御側としてIISをセットアップしたWindows 2000 Server(SPなし、パッチなし)を用意した。セキュリティスタジアムには、セキュリティの技術を持った人達が集まっているので、さすがにそのままじゃあっという間にやられるだろうと思い、ホストファイアウォールを動作させておき、ポート80だけ開けて置くことにした。
パッチなしのIIS 5.0と言えば、山ほどセキュリティホールがあり特殊なツールを使わなくてもブラウザ一つだけでサーバを攻略することも可能なもので、やられるまで数時間持たないだろうと予想していた。
ところが、アクセスを監視しているとポート80へのアクセスがほとんどない。ホワイトボードに攻撃ターゲットとなるIPが書かれているわけだから、攻撃側がアクセス出来ないわけではない。準備に手間取っているのかと思い数時間放置したが状況が変わらないので、攻撃側の様子を見てみた。
そこでようやく謎が解明した。ある人のメモ用紙を見ると、IPアドレスとオープンポートの状況がメモしてあった。よくよく見ると私が用意したサーバのIPアドレスに×がついているではないか。
なんと私の用意したサーバはファイアウォールでpingの応答をしないようにしていたために、ある人の攻撃対象リストから外れていたようだ。確かにnmapなどのポートスキャナのデフォルトの動作では最初にpingで対象が動作しているか確認する。pingの応答がないとポートスキャンをしない。おそらくコレが原因でパッチなしのサーバにほとんどアクセスがなかったのである。
そのあと、ファイアウォールの設定を全開にしたが、その後も攻撃を仕掛けてくる人はあまりおらずパッチなしのWindows 2000 Serverで丸1日守りきってしまった*1。
このように、pingの応答を返さないという、ほとんどセキュリティの役に立たないと思われることでも有効に働くこともある*2。セキュリティスタジアムの環境とインターネット環境とでは違うだろうし、pingの応答を返さないことがサーバ防御に特に有効に働くとも思えないが、ちょっとしたことの積み上げで攻撃対象になりにくくすることは出来ると考えている。
論点の整理
Tarikiさんからコメントが長くなったのでこっちに書くというコメントをいただいた。私がうまく書ききれていないからかもしれないが、発散している部分もあるので、一度整理してみた。
攻撃者想定
攻撃者はバナーなんか見てない、だからバナー隠蔽なんて意味が無い。
というのが、Tarikiさんの元記事の反論の根幹になっているように思うのですが、攻撃者想定がTarikiさんと辻さんとで違っていて、客観的な統計などなしで攻撃者はバナーを見ないといくら反論してもあまり意味が無いと思うんですよね。
私はバナー隠蔽によって「無数にやってくる攻撃者がみんな見逃してくれる」なんて思っていないし、想像でどれくらい多い少ないの量的な話をするつもりはありません。
防御側想定
セキュリティ問題が発生したらできるだけ早く根本的対策をとるのは大前提ですが、すぐに根本的な対策が取れないケースを考えておくべきです。
根本的対策だけではなく、攻撃対象にされにくくしたり攻撃されても影響を受けにくくしたりする保険的な対策を積み上げておくべきだと思います。