ロリポップ!で起きている大規模な改ざんからWordPressサイトを守る方法


投稿日:2013年8月29日
  • 5
  • 14



既に判明しているだけでも被害は4,802件!

wp_security

巷では責任の所在を巡って賑わっていますが、ロリポップ!でWordPressサイトを運営している身としては、そんな場合ではありません。

しかし対策を取ろうにも情報が錯綜していたので、セキュリティ対策ついてまとめました。

重要度の高いものから順番に解説していきます。


ユーザー名とパスワードを変更する

まずこれをしないと始まりません。最重要項目です。
以下の点に注意して新しいIDとパスワードを作成してください。

  • 1.パスワードの長さは12文字以上
  • 2.辞書に載っているような単語を避ける
  • 3.大文字小文字や記号・数字を組み合わせる
  • 4.一意(ユニーク)なパスワードを付ける
  • 5.adminやuserなどの推測されやすいIDを避ける(できればサイト名やユーザー名も避けたほうが無難です。)

1から3までは常識ですが、45はどうでしょうか?

そのパスワードはWindowsにログインするときに利用しているものではありませんか?
twitterとFacebookのパスワードは別のものですか?
Webサービスに登録するときに利用する「いつものパスワード」がある人は注意してください。

安全なWebサービスなど無い」「IDとパスワードは漏れるもの」という認識で対策を取ることが求められています。

この機会に全てのパスワードを一意なものに変更しましょう。
強固なパスワードの生成・管理にはパスワードジェネレータの利用がお勧めです。個人的には「パスワード管理ソフトKeePassをDropboxやGoogleDriveで共有する方法」で紹介した「KeePass」の導入を、お勧めします。

WordPressでIDとパスワードを変更する方法

パスワードジェネレータでパスワードを作成したら早速WordPressの設定を変更しましょう。

1.まず管理者IDでログイン。管理画面で「ユーザー>新規追加」をクリック。

wp_security01

2.必要事項を入力の上「権限グループ」で「管理者」を選択。「新規ユーザーを追加」ボタンをクリック。

wp_security02

(画像を見てもらえばわかりますがKeepassを利用すればパスワードを覚える必要がないので22桁のパスワードを作成。「強力」という評価を得ています)

3.作成したIDでログインし直します。
ログイン画面は「あなたのサイトのURL/wp-login.php」で表示されます。

wp_security03

4.再び管理画面で「ユーザー」をクリック。元あったIDにマウスを合わせると「削除」という項目が表示されているのでクリック。
(現在ログインしているユーザーは削除できません。必ず別のユーザーでログイン後に対象のIDを削除するようにしてください。)

wp_security04

5.ユーザーの投稿をどう処理しますか ?」と出るので、「すべての投稿を以下のユーザーにアサイン」をチェックして、新しい管理者IDを選択します。
そして「削除を実行」ボタンをクリック。
(すべての投稿を削除する。をチェックして削除を実行してしまうと当該IDで投稿した記事が全て削除されてしまうので注意してください。)

wp_security05

以上で新しいパスワードを使ったIDを作成し、旧IDが削除できました。


パーミッションを見直す

Codexの解説」にある通り、通常はWordPressをインストールしてパーミッションを変更する必要はありません。

しかしサーバによって推奨する値は異なるため、これについては「ロリポップ!で推奨の値」に変更しておきましょう。

wp-config.php

WordPressの接続するデータベースのIDとパスワードが記載されたファイルです。情報が流出すれば、即、改ざんに繋がります。

これについては「ロリポップ!のお知らせページ」にてアナウンスが出ています。

パーミッション:400

オーナー グループ その他
呼出
書込
実行

.htaccess

Apacheのリダイレクトを利用した他サイトへの転送に使われます。このファイルによる被害も多いので必ず変更しましょう。
404としたいところですが、W3 Total Cacheなど管理画面から変更を行うプラグインもあるので604。

パーミッション:604

オーナー グループ その他
呼出
書込
実行

その他PHP・HTML・画像ファイル

これは特に変更する必要はありませんが、一応確認してみてください。
ロリポップ!では604が推奨されていますが、サーバによってはCLIのPHPで動作している場合があるのでPHPは705にしないと動作しない場合があります。

パーミッション:604

オーナー グループ その他
呼出
書込
実行

ディレクトリ

その他ユーザーに書き込み権限を与えると改ざんの危険があるばかりか、ディレクトリ下のPHPは実行できなくなるので注意。

パーミッション:705

オーナー グループ その他
呼出
書込
実行

CGIの実行ファイル

通常WordPressでCGIを使ったプログラムは無いと思いますが、掲示板等を自分で設置した場合は変更してください。

パーミッション:700

オーナー グループ その他
呼出
書込
実行

CGIのデータファイル

パーミッション:600

オーナー グループ その他
呼出
書込
実行

常に最新バージョンのものを使う

WordPressのコアファイル、プラグイン共に最新のものを利用するようにしましょう。
特にWordPressのコアファイル、ファイルの書き込みを行うキャッシュ系プラグイン、データベースへの書き込みを要求するプラグインについては、脆弱性が発見された時の被害が大きくなるので、最新の状態を保つ必要があります。

これはWordPressの管理画面から「ダッシュボード>更新」で簡単にアップデートできます。

wp_security06

いきなりサーバでアップデートせずに、ローカル環境での動作テスト、サーバファイルのバックアップを行った後にアップデートを行ってください。


テーマの選定を行う

テーマを変更することで、手軽にデザインを変更できるのがWordPressの魅力の1つです。しかし、無料のテーマをGoogleで検索して利用するのはやめたほうが賢明です。

こちらのサイト」でGoogleで検索してトップに出る10の無料テーマを検証していますが、全てで何らかの脆弱性が発見されています。
Googleはテーマを人気順に表示してくれますが、脆弱性のチェックはしてくれません。

他人のテーマを使う場合は以下の点に注意してください。

  • 1.「公式で配布されている」ものを利用する
  • 2.テーマのサポートページにて適切なディスカッションが行われているものを選ぶ
wp_security07

特に何年間も更新されていないものや、脆弱性の指摘を数ヶ月以上放置しているようなテーマは使用を避けましょう。


WAF(ウェブアプリケーションファイアウォール)を利用する

今回の改ざんには対応できませんでしたが、定型文を利用したSQLインジェクションやXSS攻撃には有効です。

ロリポップ!では「SiteGuard」のというWAFを導入しているようです。
無料で利用できるのでぜひ導入しましょう。

WAFについて

SQLインジェクションやXSSとは、簡単に解説すると、フォームやURLへ不正なSQL文(データベースへの問い合わせ)やJavascript等を送り、サイトを乗っ取るという方法です。

こうした乗っ取りによく利用されるコードをブラックリストに登録し、マッチした場合にアクセスを遮断するというのが、WAFの概要です。

導入することでWordPressだけでなく、サイト全体(他のCGIプログラムなど)でも有効になるという点が優れています。

1.ロリポップ!のユーザー専用ページにログインして、「webツール>WAFツール」をクリック

wp_security08

2.表示されているアドレスの横にある「設定変更」にて「有効にする」ボタンをクリック。

wp_security09

これだけで有効になります。複数のサイトを管理している場合はこの機会に全てのサイトでWAFを有効にしておきましょう。

WAFの動作テスト

ブラウザのアドレス欄にサイトのURLに続けて以下のコードを入力してアクセスしてみてください。(設定の反映まで5分ほどかかるそうなので一服してからチェックしてください。)

<script>alert("alert")</script>

通常だとページがないことを示す404 Not Foundエラーを出力します。
WAFが有効になっていれば、アクセス権の無いことを示す403 Forbiddenエラーが表示されるはずです。

正常に動作していれば、先ほどのWAFの設定画面で「ログ」をクリックするとファイアウォールで遮断したリストに「<script>alert(“alert”)</script>」と表示されているはずです。

wp_security10

.ftpaccessや.htaccessによるアクセス規制

これは更新作業をする端末が限定されている場合に有効な方法です。

.htaccessによるアクセス規制の方法は「同一IPによる大量のスパムコメントを.htaccessでアクセス規制する方法」でまとめたので、ご覧ください。

例として作業をする端末が限定されていて、ISP(インターネットサービスプロバイダ)に割り当てられているIPアドレスが判明している(192.168.*など)。といった場合の設定を考えてみます。

以下の内容で「.htaccess」を作成して「wp-admin」ディレクトリへアップロードする。

例)自宅のISPのIP割り当て192.168.と、会社のISPのIP割り当て192.128.でアクセスした時だけ、管理画面(wp-admin)にアクセスできるようにする。

Order deny,allow
deny from all
allow from 192.168.
allow from 192.128.

例)Apacheの設定ファイル「httpd.conf」を編集できる権限があるなら以下のように。(wpというディレクトリへインストールした場合)

<Directory "/wp/wp-admin">
	Order deny,allow
	deny from all
	allow from 192.168.
	allow from 192.128.
</Directory>

限定された状況でしか利用できませんが、セキリュティの向上には非常に有効です。

2013年9月3日追記
どうやら今回の大規模改ざんはWordPressの脆弱性と、ロリポップ!の設定不備によるSymlink Attacksということで落ち着きそうです。
ロリポップ!ではFollowSymLinksを無効にしたそうです。.htaccessで利用していた方はご注意ください。


以上、取り急ぎロリポップ!で設定できるセキュリティ対策についてまとめました。

1日も早い原因の究明と対策が取られることを願います。



現在のページを共有する



現在のページに関連する記事


おすすめの記事


いただいたコメントなど

  1. ピンバック: ロリポップ!のWordPressハッキング8,438件。役に立った情報と実施した対処法

コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。