「2ちゃんねる壊滅」? スレ乱立騒動、弱点を外部から突かれたのが原因か
なんだか2ちゃんねるが大変なことになってるらしいですね。上記リンクの記事から重要部分を引用すると、
ログが置かれていたディレクトリ以下の全ファイルリストがApacheの設定ミスで閲覧できる状態になっていた上、ここでCGIのソースコードが丸見えになっていた、という。 これらが起点となって、制限もなく置かれていたというキャップのパスワードなどが流出
だそうです。
パスワードを書いてあるperlのソースをpublic領域に置いていたとのことですが、ちょっと考えられないですね。普通はprivate領域に置くもの。まさか2ch規模のサイトがそんな初歩的な対策すらしてないなんて、信じられない・・・。
Apache設定ミスなどのアクシデントは起こりうるのだから、万が一ミスっても大丈夫なように、最低でもパスワードなどはprivate領域に置くべきです。そうすれば直接ブラウザからアクセスできなくなる。こういうのを専門用語で言うと「フェイル・セーフ」と言います。ミスやトラブルが起こることを前提にして、それらが発生しても大事故にならないように設計しておくのがシステムにおいては大事です。今回の場合で言えば、外部からアクセスできるpublic領域ではなく、private領域にパスワードを置いておけばそれで防げる事件だったはず。
・・・と書いてて、あることにハッと気付いて怖くなった。
当ブログはWordPressを使って作られているのですが、これがまたデフォルトではサーバの公開領域にパスワードを書いたphpファイルをそのままアップしてしまってるんですね。忘れてた。これは非常に危険です。何かの拍子にApacheの設定が変わってしまえば、パスワードがダダ漏れになります。
というわけで、対処法を書きます。と言っても超簡単ですが。
wp-config.php内の、DBユーザー名とパスワード部分を切り取って(削除して)、別の新しいファイルにペーストします。もちろん新しいファイルに移動したパスワードなど(define命令)はphp括弧で括ってくださいね。その別ファイルを適当な名前(たとえばdbinfo.php)で保存して、サーバの非公開領域にアップします。たとえばxreaなら「/private」が良いでしょう。間違っても「/public_html」に置かないように。
で、先ほどのwp-config.php内の、もともとDBユーザー名があった行あたりに、privateに置いたdbinfo.phpをincludeする一文を書いてアップ。includeパスを書くときは、絶対パスで書いてください。
(※xreaでのinclude文記述例)
include (“/virtual/ユーザー名/private/ドメイン名/dbinfo.php”);//ドメイン名のディレクトリはFFFTPなど使って自分で作ってください。
たったこれだけで対処終わりです。ファイルを編集して保存する際には、文字コードを「utf-8N」にすることをお忘れなく。「utf-8」ではなく「utf-8N」じゃないとダメです。
これで、とりあえず今回2ちゃんねるが陥ったような不測の事態は防げるようになります。
コメント
[…] だから福島原発について「想定外だった」を繰り返す東電には本当に腹が立つ。天災のせいにしようとする開き直りぶりがムカつく。万が一の「想定外」が起きたときに自動的に安全停止する何重もの装置を用意しとかなかったから叩かれてるんだろ、と。(フェイル・セーフという考え方です) あらゆるリスクが全て想定内に収まれば苦労しないよ。 […]