WordPress 改ざん時の復旧方法

WordPress で改ざん被害に遭った時に復旧する手順

改ざんからの復旧と予防処置を一緒に行います

WordPress

一般でも商用でも無料で使える WordPress。CMS 利用率で頭一つ飛び出ていると言われるくらいとてもメジャーです。法人サイトでも人気があり、一般の方がアフィリエイト(広告収入)で運営しているケースもよく見かけます。そして人気があれば人気があるほど、どうしても悪意のある者から狙われてしまいます。

たとえば、当社サイトのアクセスログを見ると「wp-content/themes/timthumb.php」の記録が多くあります。 これは過去に脆弱性のあったものですが、そういうファイルが在る無し関係なく無差別に攻撃を受けます。もし存在するなら… 事故発生です。

このように無差別で改ざんを試みるケースはパターンが決まっています。そして改ざんの入り口になる原因は、「ログインパスワードの問題」、「WordPress やテーマ、プラグインのバージョンが古い」のどちらかです。なお、パソコンがウイルスに感染し、FTP パスワードが漏れ、FTP から改ざん被害に遭うこともあります。まずは FTP ログイン履歴を確認し、パソコン側の問題なのか、サーバ上の WordPress の問題なのか切り分けます。そしてここでは WordPress の問題に限定します。*パソコンの問題はページ下の関連リンクを読んでください。

WordPress の問題の場合、侵入できただけでは大量のページを改ざんすることはできません。大量の改ざんを実行するためのプログラム( .phpなど )が必要です。万が一、残ってしまっている場合は、予防しても再度改ざんされてしまいます。改ざんの入り口になる予防策と、大量の改ざんを実行するためのプログラムを削除し、また改ざん文字の修正を行い、サイトを復旧します(ホームページ内のブログ機能として WordPress を使っている場合、ホームページ側にも改ざんが入りますのでこちらはローカルの原本をアップしてください)。

なお、改ざんを予防するために最新のバージョンを使う必要がありますが、新しくすることによりデザインや機能で不具合の起こる可能性もあります。そもそも論としては、予防することにより不具合があれば、新しいバージョンに合わせてカスタマイズするしかありません。ここはフリーソフトの宿命とも言えます。この点はご注意ください。

それでは WordPress 改ざん時の復旧方法についてご説明します。なお、よくある改ざん被害を踏まえた上での復旧方法と対策です。復旧後の予防策については WordPress の改ざん原因と対策 を読んでください。

WordPress を復旧して、さらに改ざん予防する方法

改ざんの入り口になる原因は、「ログインパスワードの問題」、「WordPress やテーマ、プラグインのバージョンが古い」のどちらかです。パスワードの変更と新しいバージョンにアップして、入り口を無くし、予防します。また大量の改ざんを実行するためのプログラムを削除し、また改ざん文字の修正を行い、サイトを復旧します。なお、原因を把握したほうがより確実に復旧できます。WordPress 改ざん事故でパスワードクラックされたかを調べる方法 こちらの記事も読んで切り分けしてください。

WordPress のデフォルトユーザーの「admin」と「簡単なパスワード」が原因で改ざんされる事故が多く、データベースのバックアップをとってから「admin」アカウントを削除します。その他のアカウントについては、パスワードを強力なものに変更します。続いて FTP でアクセスし、サイトのバックアップを取り閉鎖します。なお、データベースのパスワードが漏えいした可能性もあり、こちらも変更し、 wp-config.php を修正します。

デザインや記事はサイト毎に異なりますが、WordPress を構成するファイルは一緒です。つまり WordPress そのものを削除して、新しい WordPress に変更するので問題ありません。大量の改ざんを実行するためのプログラムが残っている可能性もあり、 WordPress ディレクトリそのものを削除し、新しい WordPress ディレクトリをアップします。これで万が一、大量の改ざんを実行するためのプログラムがあっても無くなります(ホームページ内のブログ機能として WordPress を使っている場合、ホームページ側にも改ざんが入りますのでこちらはローカルの原本をアップしてください)。

ただし、WordPress を構成するファイルで wp-config.php のみは設定値が記述されていて個別のものです。こちらは新しい WordPress にコピーしてください。その際に認証用ユニークキーの変更も行います。万が一、改ざんした側がログイン中であっても、古いクッキーが無効になるため強制的にログアウトされます。

またデザインや記事はサイト毎に異なりますが、この違いのテーマ、プラグイン、アップしている画像など、個別のディレクトリに保管されています。記事やナビゲーションメニュー、アカウント情報やシステム上の設定値などは、データベースに保存されています。そしてテーマ、プラグイン、アップしている画像などは個別にコピーすれば、新しい WordPress で元通りになります。

なお、テーマ、プラグイン、アップしている画像などのディレクトリに、大量の改ざんを実行するためのプログラムが残っている場合は再度改ざんを受けてしまうため、このディレクトリの対処はとても重要です。テーマ、プラグインは WordPress 公式サイトからダウンロードできるため、新しいものを取得してください。またアップしている画像などのディレクトリについては、自分でアップしていない .php などがないか確認してください。

ちなみにですが、テーマとプラグインを停止しても、パーミッションが変更されるわけではなく、WordPress から読み込まれなくなるだけです。そのため、URL を指定すれば .phpファイルをダイレクトに実行できます。たとえば当社サイトのアクセスログを見ると「wp-content/themes/timthumb.php」の記録が多くありますが、ファイルが存在していれば、直接アクセスされてしまいます。そしてデザインなどの不具合で停止することはあるかもしれませんが、停止したままにせず、使っていないものは必ず削除してください。

記事はデータベースに保存されます。記事への改ざんがない場合は、データベースを操作する必要はありません。そのままで OK です。万が一、記事への改ざんがある場合はデータベースを操作しないといけません。データベース操作に詳しくない限りは、削除することになるかと思います。日頃からバックアップして保護してください。

注意点としては、改ざんを予防するために最新のバージョンを使う必要がありますが、新しくすることによりデザインや機能で不具合の起こる可能性もあります。根本はフリーソフトですので、このような問題が起こることも多々あります。とはいえ、改ざんの入り口を残すわけにもいきません。そもそも論としては、予防することにより不具合があれば、新しいバージョンに合わせてカスタマイズするしかありません。

レンタルサーバによっては WAF を使えるところもあります。多層防御という意味で効果がありますので、利用可能であればオンにしてください。

WordPress 改ざん事故から復旧する手順

手順としては「バックアップと admin アカウントの削除、サイトの閉鎖」、「 wp-config.php の加工」、「新しいバージョンのダウンロード」、「新しいバージョンの加工」、「WordPress ディレクトリのアップロード、確認」の順に行います。

1. バックアップと「 admin 」アカウントの削除、サイトの閉鎖

データベースのバックアップを取り、パスワードを変更します。WordPress へログインし、「admin」アカウントを削除します。その他のアカウントについては、パスワードを強力なものに変更します。 FTP ソフトで WordPress ディレクトリ内のすべてをダウンロードし、バックアップとして保存します。バックアップが完了したら、サイト内のすべてを削除し閉鎖します。

データベースのバックアップ方法とデータベースのパスワード変更方法は、お使いのレンタルサーバーのマニュアルを確認してください。

データベースのバックアップ

admin でログインすると「削除」が表示されません。他の管理者アカウントでログインすると削除できます。admin しかない場合は別のアカウントを作成し、そのアカウントでログイン後に削除してください。

adminアカウント削除

必ず「すべての投稿を以下のユーザーにアサイン」を選択してください。admin で投稿した記事が無くなってしまいます。admin の削除をしたら、その他のアカウントのパスワードを強力なものに変更してください。

すべての投稿をアサイン

FTP ソフトで WordPress ディレクトリ内のすべてをダウンロードし、バックアップとして保存します。バックアップが完了したら、サイト内のすべてを削除し閉鎖します。

2. wp-config.php の加工

ダウンロードした WordPress ディレクトリ内の wp-config.php を加工します。「 https://api.wordpress.org/secret-key/1.1/salt/ 」で認証用ユニークキーを取得し、wp-config.php にコピペします。これで古いクッキーが無効になるため、不正にログインしている場合でも、ログアウト状態になります。また変更したデータベースパスワードを登録します。30行目の「 MySQL データベースのパスワード」です。

wp-config.php

3. 新しいバージョンのダウンロード

新しいバージョンの WordPress をダウンロードします。

WordPress

Themes 又は Plugins をクリックし、プラグインやテーマも新しいバージョンをダウンロードします。テーマとプラグインは事前に何を使っているのか確認してください。

Themes と Plugins

4. 新しいバージョンの加工

ダウンロードした新しいバージョンの WordPress ディレクトリに必要なファイルをコピーします。まずは「2. wp-config.php の加工」で加工した wp-config.php をコピーします。

WordPress

「3. 新しいバージョンのダウンロード」でダウンロードした新しいバージョンのテーマとプラグインを、「themes」ディレクトリまたは「plugins」ディレクトリにコピーします(「wp-content」ディレクトリ内にあります)。またバックアップから「uploads」ディレクトリをコピーします。 なお、「uploads」ディレクトリだけは過去のものをそのまま使います。事前に改ざんを修正したり、自分でアップしていない不明なファイル(大量の改ざんを実行するためのプログラム)があれば削除してください。オリジナルのテーマを使っている場合は、バックアップから「themes」ディレクトリへコピーします。こちらも事前に改ざんを修正したり、自分でアップしていない不明なファイル(大量の改ざんを実行するためのプログラム)があれば削除してください。

Themes と Plugins

5. WordPress ディレクトリのアップロード、確認

「4. 新しいバージョンの加工」で作業した新しいバージョンの WordPress ディレクトリを FTP ソフトを使い、すべてアップロードします。最後に WordPress にログインし、再設定や不具合がないか確認します。なお、プラグインは「有効化」をクリックし、再度設定する必要があります。