ロリポップ!への大規模攻撃——明日は我が身! 自衛するには?

  by Butameron  Tags :  

8月下旬にレンタルサーバーサービス『ロリポップ!』において大規模なWEBサイト改ざん被害が発生した件について、同サービスを運営するpaperboy&co.が原因と対策をまとめた調査結果を9日夜に公表しました。同社発表によると、原因は未インストール状態のWordPress及びパーミッション設定の不備であり、被害は8,438件にのぼったとされています。

パーミッション設定の不備が原因でこのような事態が発生するのは、共用レンタルサーバーの弱点といえるでしょう。共用レンタルサーバーにおいては、1つのサーバーに複数の契約者のユーザーアカウントが同居する形になり、専用サーバーやVPSに比べるとユーザーアカウント毎の環境が完全に分離されているわけではないからです。

別の共用レンタルサーバーのサービスを利用しているとしても、もしかしたら明日攻撃を受けるかも知れません。うっかり間違えた設定が命取りです。では、どうすれば自分のサイトを改ざんから守れるのか、本稿では基本的な自衛策をご紹介したいと思います。もし既にご存じの方でも再度チェックしてみてはいかがでしょうか。

改ざんからの自衛策

この節では、特に今回の被害の対象となったWordPressを使用するケースを中心に、自衛策について要点を述べます。

未インストール状態で放置しない

同社によると、今回の『ロリポップ!』への大規模攻撃においては、『簡単インストール』の処理過程において、未インストール状態で放置されていたWordPressが攻撃の踏み台となりました。

『簡単インストール』ではなく、手動インストールを行う場合も気を付ける必要があります。WordPressは、最初の起動時にインストールを行う仕様です。しかし、WordPressをアップロードしただけで満足して、インストールを実行せずに放置してしまうと、最悪の場合、WordPressの管理者権限をクラッカーに奪われることになります。プラグインやテーマもインストールし放題になり、不正なプログラムを仕込むことも可能となってしまいます。他ユーザーアカウントへの攻撃の踏み台となれば、自分だけではなく他人にも影響が及ぶのです。

原則論からいえば、未インストール状態のWEBサイトをインターネット上に公開してはならないのですが、レンタルサーバーの特性上、やむを得ない部分もあります。ですので、もしWEBサイトに未インストールのWordPressをアップロードを行った場合は、すぐにインストールを済ませてしまうか、install.phpのパーミッションを変更して実行できないようにしておくなどの対策が必要です。

suEXECが有効になっているレンタルサーバーを利用する

これは、レンタルサーバー選びの時点の話です。レンタルサーバーでは、suEXEC(場合によってはsuPHPも)が有効になっているのが基本です。あまりにも常識的なことですので、機能一覧に記述されていない場合もあるのですが、「レンタルサーバー名 suEXEC」というキーワードでグーグルで検索することで、そのレンタルサーバーでsuEXECが有効になっているかどうかの情報を得られるはずです。もしそれでも分からなければレンタルサーバーサーボスのサポート窓口に問い合わせるなどしてみてください。もし、正当な理由(OSがLinuxやUnixではない、VPSなどでユーザー毎に独立した環境が構築されている等)もなく、suEXECが有効になっていないのであれば、そのレンタルサーバーは解約するべきでしょう。

パーミッションの設定は最小限にする(特に機密情報を含むファイル)

今回の『ロリポップ!』への大規模攻撃では、パスワードなどが記された設定ファイルの、パーミッション(ファイルのアクセス許可設定)の不備が原因であったとされています。同社発表によると、『wp-config.php』のパーミッションが644(rw-r--r--)になっていた(つまり、他の契約者のユーザーアカウントからでも閲覧可能となっていた)ことで、同ファイルに含まれるデータベースへの接続パスワードなどを不正に取得されたとのことです。

前述のsuEXECやsuPHP環境であれば、『wp-config.php』のパーミッションを400(r--------)に、『.htaccess』のパーミッションを604(rw----r--)に変更しましょう。

詳しい数字の意味は後述の補足説明で解説しますが、共用タイプのレンタルサーバーにおいては、少なくともパーミッションを表す3桁の数値のうち【2桁目は0(許可なし)に設定する】のが基本です。このパーミッションはレンタルサーバーのWEB管理画面や、FTPクライアントソフトなどで設定することができます。

WordPressにインストールするプラグインやテーマは最小限に

WordPressには必要最小限のプラグインやテーマのみインストールしましょう。
そして、不要なテーマやプラグインは削除してしまうことをおすすめします。

プラグインやテーマなどは、基本的に誰でも自由に作成することができます。その中には開発プロジェクトにおいてしっかりとテストされたものもあれば、技術者崩れが作ったゴミや、デザイナー気取りが作った白く塗った墓もあります。あまつさえ、悪意のあるコードが埋め込まれていることもあるのです。ニュースサイトなどで話題になっていたからといって、安全とは限りません。

同社によると、今回の一連の被害とは関係がないものの、「テーマに含まれているファイルなどの脆弱性を悪用されるケースも実際に確認されております」とのことですので、注意が必要です。

被害に遭う確率を下げたいのであれば、インストールするプラグインやテーマも最小限にする必要があります。そして、素性の知れないプラグインやテーマは気安く導入しないようにしましょう。

WordPress本体、プラグイン、テーマ等を定期的にアップデートする

どんなプログラムにもバグやセキュリティホールがあります。ですから、継続的にアップデートしていかなければなりません。幸いにもWordPressにはアップデートチェック機能があり、ボタンひとつでアップデートできます。定期的に管理画面にログインし、アップデート通知がないかどうかを確認しましょう。

プラグインやテーマをzipファイルでインストールした場合、そのプラグインやテーマのアップデート通知を受け取れない可能性があります。zipファイルでインストールするのではなくWordPressの管理画面からプラグインやテーマを検索してインストールするようにしましょう。

定期的にバックアップを

最悪の事態には常に備えておかなければなりません。
いくら最善策をとっていたとしても、絶対にWEBサイトが改ざんされないというわけではないからです。インターネットに公開している限り、海外のクラッカーが本気を出せばどんなWEBサイトでも改ざんされてしまう、という話もあります。実際、超大手であるYahoo! JAPANでも侵入を許したという事例もあるぐらいです。弱小個人サイトへの攻撃など赤子の手を捻るようなものだと考えて差し支えないと思われます。

え?攻撃されるほど有名なサイトではないから大丈夫? いえ、そんなことはありません。魚釣りのサイトを運営していたら、尖閣(せんかく)諸島の魚釣島に関するサイトだと勘違いされて、某国のクラッカーから攻撃を受けるかもしれないのです。

もし改ざんされ、今まで書いた記事を消されてしまったら? バックアップを取っていなければ、もう取り戻せません。ですから、必ず定期的にバックアップをするようにしましょう。

なお、WordPressの場合、記事のバックアップは簡単に取れるようになっています。管理画面のツール→エクスポートを使えば全記事の内容がダウンロード出来ます。これを月末毎にダウンロードしておきましょう。

ただし、これには、画像などは含まれません。したがって、FTPクライアントなどを用い、サイトのデータすべてを同時にダウンロードしておくことをおすすめします。

補足説明

この節では補足的な事項を説明します。

suEXECとは

suEXECとはCGI(サーバー側で実行されるプログラム)を、各ユーザーの権限で実行するための仕組みです。(suPHPはCGIモードで実行されないPHP向けのものです。主な機能は同じです)

例えば、仮にレンタルサーバーにおけるあなたのユーザーアカウントが「yamada」だったとします(注:WordPressにログインするときのアカウントではなく、レンタルサーバーのアカウントです)。あなたは、そのレンタルサーバーで、WordPressを運用しています。

suEXECが有効になっている場合、WordPressは「yamada」ユーザーとして実行されます。「yamada」がアクセス出来るファイルなら何でもアクセス出来ますし、「yamada」がアクセス出来ないファイルにはアクセス出来ません。「suzuki」のファイルも「satou」のファイルも他者から閲覧できないように設定されていれば閲覧できません。

一方、suEXECが有効になっていない場合、WordPressはWEBサーバープログラムが実行されているユーザーの権限で実行されます。ここでは仮にそのユーザー名を「www-data」とします。この場合、「yamada」のWordPressは「www-data」ユーザーとして実行されます。したがって、不正なコードを仕込めば、「www-data」がアクセス出来るファイルなら何でもアクセスできてしまいます。そもそも「www-data」からアクセス出来ないファイルは、WEBサイトで公開すること自体が不可能になりますので、WEBサイトのすべてのファイルは「www-data」からアクセスできるように設定しなければなりません。したがって、そのように設定されている「yamada」のファイルはもちろん、「suzuki」のファイルも「satou」のファイルも閲覧し放題です。もちろん、パスワードなどが記録されている重要なファイルもです。

ですから、共用タイプのレンタルサーバーで、suEXECが有効になっていないというのはセキュリティ上あり得ないことですし、そのようなレンタルサーバーは利用するべきではありません。

パーミッションとは

パーミッションは“754”などのように、3桁の数字で表され、1桁目は自分(ファイルの所有者)に対するアクセス許可、2桁目はグループ(レンタルサーバーでは、他の契約者のユーザーアカウントなどが該当)に対するアクセス許可、3桁目はそのほか(他のユーザーアカウント、WEBサーバープログラムなど)に対するアクセス許可です。それぞれの数字の意味は以下の通りです。

7……読み・書き・実行OK
6……読み・書きOK
5……読み・実行OK
4……読みOK
3……書き・実行OK
2……書きOK
1……実行OK
0……すべてNG

例えば、『wp-config.php』の場合、一度設定が終わってしまえば自分自身も滅多に設定を変更することがありませんから、自分へのアクセス許可である1桁目は読み取り専用の4とします。設定ファイルは他の契約者や外部の閲覧者から見られては困るため、2桁目はゼロ、3桁目もゼロとします。

こうして、“400”という最小限のパーミッションが導かれました。

参考リンク

[1] 第三者によるユーザーサイトの改ざん被害に関するご報告 http://lolipop.jp/info/news/4149/

画像/ロリポップ! WEBサイト[1]より引用

いつか小説家になりたい。そんな夢見がちなWEBライター。