
サーバのバージョンは隠すのが常識? 193
ストーリー by yoosee
いっそApache100.0とか表示しとけばいいじゃない 部門より
いっそApache100.0とか表示しとけばいいじゃない 部門より
Anonymous Coward曰く、
技術系ブログ「ウノウラボ」に「5分でできるウェブサーバのセキュリティ向上施策」という記事が掲載されて話題になっています。ApacheやOSのバージョンを表示しないようにする方法や、PHPでX-Powered-Byを応答しなくする方法が紹介された記事ですが、コメント欄や260件以上の登録を集めたはてなブックマークでは賛否両論になっています。「セキュリティがみじんも上がっていない」という意見や「セキュリティの甘さが見え見え」という意見がある一方で、隠さないでいると「こんな基本的なこともやっていないサイトと思われるよ」という意見も。そういえば、7月の@ITの記事「たった2行でできるWebサーバ防御の「心理戦」」にも同様のことが書かれていました。セキュリティ会社でペネトレーションテストに従事する著者は
と述べています。この記事にもたくさんのはてなブックマークが付いていて賛否両論です。さて、サーバのバージョンは隠すのが吉でしょうか、隠さないのが吉でしょうか。「バナー情報が露呈していても、アプリケーションを常に最新版を使用するよう心掛けて実行していれば問題ないのでは?」という考え方もあるが、答えはNoである。(...) バナー情報が抑制されていることで攻撃者は、「このサイトは、セキュリティを考慮した運用を行っているのではないか?」という判断をする可能性が高いといえるのである。
偏屈な回答ですが (スコア:5, 興味深い)
#ちなみに私は概ね隠します。理由は、なんとなく (笑
Re:偏屈な回答ですが (スコア:1, 興味深い)
一応これはセキュリティ的に良い悪いの話なので…。
バージョン情報みたいに実際には毒にも薬にもならないものであれば好みやポリシーでも構わないんですが、
例えば「脆弱性のあるバージョンのapacheを放置するかどうか」を好みやポリシーだといわれるとちょっと困ります。
今回の話はどちらかというと「バージョン情報を隠すのがセキュリティ確保に有効」と言う話に対して、
「おいおいちょっとまてよ、隠すのは構わんけど隠しても大した効果はないぞ」と言うコメントがついているんでしょう。
Re:偏屈な回答ですが (スコア:4, すばらしい洞察)
どこにぶら下げようか迷ったんですが、とりあえずここで。
他にも同じような発言があったのですが、どうも「バージョン隠蔽=パッチ未適用」が規定路線として語られてる感があります。
パッチ未適用ならバージョンを隠蔽しようが公開しようが攻撃者から見て事実上何の差異も無いのであれば、
パッチはきちんと当たってるという前提で、その上で「バージョンを公開/非公開」の論議をすべきでは?
どうも話をすり替えて混乱させている人が居るような気がしてなりませんよ。
# 私は公開した方がいいと思います。バージョン情報を参照するのは別に攻撃者だけってわけでも無いでしょうから。
# 逆に言うと他に利用されない情報ならわざわざ公開する必要は無いでしょう。無駄というものです。
論点間違ってない? (スコア:5, すばらしい洞察)
じゃなくて、
サーバのバージョンを隠すことがセキュリティ対策になるのか。という話では?
隠さないのが吉でしょうか、が変。
個人的には、隠して支障がないなら隠せばいいと思う。
昔のワームの話ですが。 (スコア:4, 参考になる)
ディストリビューション屋にしてみれば、自社の名前を Apache のレスポンスヘッダに入れておくことで、Netcraft とかの統計で自社の製品がどれぐらい使われているといったマーケティング用途になる、なんていう話もありますが。 ディストリビューション屋としてはマーケティングの材料にしたいが、利用者にしてみれば迷惑なお話で。
Re:昔のワームの話ですが。 (スコア:1)
ワームではありませんし、セキュリティでもありませんが。
システムの設定がちゃんとしているかどうかを調べる際に、最初に相手のバージョンや誰が設定したのかを調べて、それに応じてテスト順序を入れ替える、というのならやったことがあります。
通らなさそうなテストを先に実行する事で、問題点を早い目に発見するのが目的だったのですが、同じ発想を使うと同じ総当たり戦であっても
「より短期間でアタックに成功する可能性の高い順序」
でアタックできそうな気がします。
バージョン番号を隠す事で、これを「ランダムな順序で実行した場合」と同じ程度まで耐久時間を延ばせるならば、その間に攻撃を検知・対処できる可能性が高くなります。
というわけで、バージョン番号はやはり隠しておいたほうがよいでしょう。
fjの教祖様
一方、別のワームは (スコア:1, すばらしい洞察)
RFC 2616 によると (スコア:4, 参考になる)
Note: Revealing the specific software version of the server might allow the server machine to become more vulnerable to attacks against software that is known to contain security holes. Server implementors are encouraged to make this field a configurable option.
Re:RFC 2616 によると (スコア:1, 興味深い)
ただ、このRFCは1999年に書かれたものだということに注意したいところです。
当時は実際、脆弱性パッチの適用があまり常識になっておらず、脆弱なバージョンのサーバが大半を占めるという時代でした。
その頃は確かに、バージョンを隠すのが常識という空気があり、脆弱性スキャナにもバナーチェックの機能が搭載され、セキュリティコンサルも「お宅、バナー出してますね」などとしたり顔で言っていたものでした。
しかしその後21世紀に入ると、ワームによる攻撃が盛んになり、攻撃ツールの自動化も進んで、バージョンを隠すことは常識ではなくなりました。
Re:RFC 2616 によると (スコア:2, おもしろおかしい)
1999060101とかしておけば、一日のうちに99回まで修正できます。
100回以上修正したかったら19990601001で。
単に心理的な理由で (スコア:3, すばらしい洞察)
隠しても隠さなくても気にしないでアタックしてくる奴はいるがね
それでもまあダミー監視カメラ程度の効果は期待できる
#てか表示させておくべきな理由がない
Re:単に心理的な理由で (スコア:1, 興味深い)
攻撃側にも無駄な手間をかける事ができるし、地味に有効かも。
# もちろん他のセキュリティ対策と併用だし
そもそも表示するのは何のため? (スコア:1, 興味深い)
そもそも表示するのは何のため?
採用されてるソフトの広告?
Re:そもそも表示するのは何のため? (スコア:2, 参考になる)
> そもそも表示するのは何のため?
非互換による問題を回避するためですよ。サーバの製品名とバージョンを見て、クライアント側で動作を変えるということが実際にあります。
たとえばこのへん [mozilla.org]とか。
Re:そもそも表示するのは何のため? (スコア:1)
一般利用者もそれを見てサーバーの信頼性を図ることができますし。
Re:単に心理的な理由で (スコア:1, すばらしい洞察)
>ワーム相手に、ダミー監視カメラ程度の効果を期待してもねえ・・・
ワームに対しては期待してないでしょwww
隠しても隠さなくても気にしないでアタックしてくる奴はいるがね
の意味わかってない???
常識人を前提にする限界 (スコア:3, おもしろおかしい)
>つまり、スクリプトキディにヤられちゃうほど杜撰な管理だということですね。
>バージョンを隠してるサイトは、そういうサイトだと自ら宣伝しているようなもの。
心理効果というのは、通常の判断能力がある人を前提にしているので、
見ての通り、こういう思考回路が壊れてる人には、逆効果になりかねない。
アタックをするような人は、どちらが多いのかと考えると、
隠さない方がいいのかもしれないなぁ
Re:単に心理的な理由で (スコア:2, すばらしい洞察)
無差別攻撃ならバージョンを晒しても隠しても同じなので、ここで論じる意味がありません。
後に続く分に関してはツッコむ気にもなれません。
# 新学期早々サボリか?学校にはちゃんと行っといた方がいいぞ。
いたずら心が疼くので (スコア:3, おもしろおかしい)
いたずら心が疼くので、どうしても明らかに嘘のソフト名と
バージョン番号を返信したくなります。
OS: /.J ver 2.0
WWWServer: Oliver copy version.
Re:いたずら心が疼くので (スコア:5, おもしろおかしい)
誰もつっこんでくれなくて悲しい・・・。
Re:いたずら心が疼くので (スコア:2, すばらしい洞察)
Re:いたずら心が疼くので (スコア:1)
Re:いたずら心が疼くので (スコア:3, おもしろおかしい)
Re:いたずら心が疼くので (スコア:1)
心理戦と言うなら (スコア:3, 興味深い)
結局、みんなが正しくバージョンを返さないという前提になった場合、
バージョンのマッチは余り意味がないため
メジャーなサーバーの
最新のセキュリティホールから順にスキャンするのが一番効率的なんじゃないかと思う。
時間稼ぎが出来るといってる人もいるが、
そう言ってる人にしてもスキャンされてる間に気がつける程いつも見張ってるわけじゃないわけで、、、
そもそも、攻撃が成功したら、早々に証拠一掃してして潜伏状態にするのが常道。
攻撃の兆候を自動検出して早期に自動 ban する機能がない限り、
バージョン隠した事で期待できる時間稼ぎも有用に活用できないわけで、
たいした効果は期待できるとは思えない。
結局、攻撃する側としても、大して痛くも痒くもないんじゃないかと、、、
しかし ban するにしても botnet とか使われてると IP 単位の個別 ban では全く効果がない、、、
こうなってくると、
ゼロデイも考慮した場合、
最新の security patch が当たってる奴よりも
下手をすると、枯れて風化しかかってるやつとか、
凄いマイナーなサーバーの方が断然有利な場合もありそう。
# こいつらはこいつらで、大穴がありそうで怖いけど、、、
# どちらにせよ、メジャーなのに最新パッチ当たってないのは論外
結局の所、バージョン隠すのは
成田山のお守り程度のご利益と考えるのが妥当ではなかろうかと、、、
# あってもなくても一緒、、、
# あれば、幾分心は落ち着く?
uxi
Re:心理戦と言うなら (スコア:1, 興味深い)
>メジャーなサーバーの最新のセキュリティホールから順にスキャンする
なるほど、それを防ぐためにバージョンはノーガードで行こうと言ってる人がいるのですね!
他のサーバーが流れ弾に当たってくれないと困りますからね。
実は、隠すなと言ってる人が一番良く効果を解っている?!
マジレスすれば、「順にスキャンするのが一番効率的」であるとなれば、
1台毎にかける判断、時間は余分にかかることにはなるし、
総当りになれば対象台数は増える。
世のサーバーにかたっぱしからスキャンすれば、情報が流れる [srad.jp]事になり、
攻撃者にとっては警戒されるリスクが高まる。
まあ、順にスキャンすれば目的を果たせるスキルがある奴なら最初からやる。
(そういう奴は、バージョン情報で判断がつくサーバーを狙いたいよりも、
そのサーバーを攻略する必然性を持ってやるほうが多いと思うが。)
バージョン情報を欲する人間と、スキャンから有効な攻撃に結びつける人間とは、
最初から住むレイヤーが違うわけで、前者に対して有用なら前者への対策として行い、
後者への対策は別途考える必要があるのではないかな。
バージョン情報の隠蔽が、狼男はもちろんドラキュラにまで有効な、
銀の弾丸であるとでもいう前提があるから当然、発散してしまって、
効果が無いという結論を持ち出す人がいるんじゃないだろうか。
#ここでは、サーバー管理者が他のすべき事をやっていて、やれなくても把握している、
#という最低限の運用が守られていることは前提で、隠す効果に限定しての話。
Re:心理戦と言うなら (スコア:2, 興味深い)
> #という最低限の運用が守られていることは前提で、隠す効果に限定しての話。
正しく管理されている前提で隠す効果を考えると全く無いのでは。なぜならそもそも突く穴が無いだろうから。
残念ながら現実はそう理想的にはいかないから、パラノイア的なことでもできることは全てやっておくのが(必須ではないが)better、という結論に落ち着くのだと思う。
隠したほうがいい (スコア:3, おもしろおかしい)
・おっぴろげで全部丸見え
・見えそうで見えない
またはこれ。
・大声で「おーいえーかもーん」
・押し殺した声で「…ん、…ん」
どちらが相手の興味を引くか明白です。
なお、嗜好には個人差があり「食えりゃ何でもいい」主義もありますのでご注意を。
Re:隠したほうがいい (スコア:1)
Re:隠したほうがいい (スコア:1, すばらしい洞察)
いや、「興味を引いちゃダメだ」って話じゃないの?
Re:隠したほうがいい (スコア:1)
方が興味があります
バッファオーバーラン対策として (スコア:3, 参考になる)
流行ったとき、そのwormのコードはRedHatLinuxのインストールCDからrpmで
インストールされるデフォルト状態のApacheばかりを狙う仕組みになっていたと
思います。
何故かと言うと、バッファオーバーランでは基本的に攻撃用のコードを発動できる
メモリの位置が確定していないと意味がない(場所が違うとせいぜいsegmentation
faultでcore dumpするだけ)なので、当時最もユーザの多かったRHLのデフォルト
rpmばかりを狙うというのは非常に意味があったものの、ソースからbuildした
ユーザにとっては意味がないというものでした。
(猫も杓子もLinuxの頃だったので、up2dateなんてかけたことのないデフォルト
設定の野良サーバがゴロゴロしてた時代です)
で、そのときに少しでも「うちは対策してるから攻撃しないでね」という牽制を
行うために、ServerVersionを表示しないようにしてたりしてました。
そういえば、bind8の脆弱性が見つかったときも、「今すぐversion.bindで
返されるバージョン番号に別のものが表示されるように変更しよう」という風潮が
あり、今もほとんどのサーバはそれに従っているのではないかと思うのですが、
こちらも世間的には実効性がないという判断なんでしょうかね。
スキャナが五月蝿いから (スコア:2, 興味深い)
あほ管理者がいるので隠してます。
Re:スキャナが五月蝿いから (スコア:3, 興味深い)
落ちたりして :-P
Re:スキャナが五月蝿いから (スコア:2, おもしろおかしい)
電子的不実の記載で心理戦?
#よ~し、お兄ちゃんOS/2騙っちゃうぞ~
性別情報は隠すのが常識? (スコア:2, おもしろおかしい)
#すんません思いつきと勢いで書きました
バージョンを隠す理由 (スコア:2, 興味深い)
やはりパッチの適用体制が整っていないところが隠すようですね。
隠す隠さないの他に (スコア:2, 参考になる)
私の場合、10年ぐらい前にサーバーのOS名を「OS/2 V2.11 LAN Server」と変えただけで、アタックが無くなった経験があります。
簡単にハックできないようなアーキティクチャとかの名前に偽造すれば、なおさら効果的な気もします。
例:OS/400とか
たいてい、アタックされるのは攻略が判ってるCPU、OS、アプリ群だから、手をつけた事の無いようなCPUやOSとかの名前を出されれば、手の出しようもないと思うし。
稀に、攻略したいと思ってアタックをしつこくしてくる連中もいるかもしれないけど、全体から見れば0に等しいでしょうし。
でも、この手法はサーバー立ち上げの最初の時からやっておかないと意味が無いかも。アタックが増えたからといって、途中でCPUやOS換えるなんて事は、そう簡単にはできないからバレやすいし。
#詳細は知らないが、pingのレスポンスでOSを特定できる手法もあるから、この手法も完璧とはいえませんが。
/* Kachou Utumi
I'm Not Rich... */
一応やってます (スコア:1)
Webサーバーに関係した話しか出てないですが、OpenSSHとかでも隠せるんでしょうかね。
ProFTPとかPostfixとかは隠し方しってるんですが、OpenSSHだけわからず。
Re:一応やってます (スコア:3, 参考になる)
> ProFTPとかPostfixとかは隠し方しってるんですが、OpenSSHだけわからず。
設定では変えられないので、ソース修正して構築しなおしですね。おすすめしませんが。
理由は FAQ 読め。 [openssh.com]
Re:一応やってます (スコア:1)
ただ、そのせいかどうか詳細は不明ですがSolaris のssh クライアントと上手く
話ができなかったことがありました。
バージョンを (スコア:1, おもしろおかしい)
自由だーーっ!
バージョンisフリーダム
バージョンisフリーダム
Re:バージョンを (スコア:1, おもしろおかしい)
♪ジャジャーン、センキュー!
10年くらい前からあった (スコア:1)
結局相手方の意見を通しましたが、今から考えると正当だったかな、と。今でも「払いのいいお客」には、この「出力切る機能」を入れています。
-- gonta --
"May Macintosh be with you"
Re:最新バージョンを騙るのが吉 (スコア:3, 参考になる)
偽り隠したところで,ある程度までは特定可能 [owasp.org]らしいですから,
相手が人間である場合には効果無いですね。
> バナー情報が抑制されていることで攻撃者は、「このサイトは、セキュリティを考慮した運用を行っているのではないか?」
現場はそんなに甘くない。
攻撃者は,「このサイトは,セキュリティを考慮した運用をしていないことを隠しているのではないか?」と思うじゃろ。
Re:バージョン番号も個人情報のうち (スコア:2, おもしろおかしい)
#あ、この人も本当のバージョンを詐称している!
Re:けちけちすんなよ (スコア:1, おもしろおかしい)
リスクは上がるこれだけの理由
1. パッチ管理ができてないと疑われる。
2. 隠したことでパッチ管理をサボるようになる。
3. 常識じゃないのに常識だとか居丈高な似非コンサルが増えて困る。
Re:偽の情報 (スコア:2, 興味深い)
だいぶ昔(もう7年以上昔になりますか)、ちょっといくつかアカウントが必要でいろいろ
やっていた際使いました。
特定のサーバをどうこうしたいという場合には意味はないと思うんですが、そうではなく
いくつか擬装用なりなんなりでどこでもいいから自由に使えるサーバがほしいという際に、
IPアドレスを適当に順繰りにサーチして、特定のOSだとか(穴の多い某社のとかがお勧め
されてましたね)を見つけると既知の穴をつついてみる、というようなスクリプトを走らせ
たりしました。結構使えるサーバがお手軽に手に入ってみたり。
同じIP相手にいろいろ試すと危険が大きいですが、異なるIPに一回ずつトライとかだと
相手に警戒される事も少なくなります。さらにServerNameで篩にかけて無駄なアタックを
減らして危険をさらに減少という感じで。
#管理の杜撰なサーバの多かった大学機関限定で虱潰しにサーチとかも流行っていた気が。
Re:偽の情報 (スコア:1)
なにもしないよりは情報を攪乱しておいた方がマシといった程度
ただ、情報を攪乱するのが目的だから嘘であることがバレるのは微妙かもね
すぐバレる嘘をつくということは嘘をつけるサーバを使ってることを申告しているようなものだし
それによりapacheかも?と思われたら、apacheが抱えてる未対策の脆弱性を利用されるだと思う
あと、当然といえば当然だけど
無差別に同じ攻撃を仕掛けてくる相手に対しては効果はないと思う
誰のための心理戦 (スコア:2, すばらしい洞察)
高度な調査能力がなくても指摘できる重箱の隅が「常識」になっていることが必要なのです。
検査で何も検出できなかったらかっこ悪いでしょ。