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 の削除をしたら、その他のアカウントのパスワードを強力なものに変更してください。
FTP ソフトで WordPress ディレクトリ内のすべてをダウンロードし、バックアップとして保存します。バックアップが完了したら、サイト内のすべてを削除し閉鎖します。
2. wp-config.php の加工
ダウンロードした WordPress ディレクトリ内の wp-config.php を加工します。「 https://api.wordpress.org/secret-key/1.1/salt/ 」で認証用ユニークキーを取得し、wp-config.php にコピペします。これで古いクッキーが無効になるため、不正にログインしている場合でも、ログアウト状態になります。また変更したデータベースパスワードを登録します。30行目の「 MySQL データベースのパスワード」です。
3. 新しいバージョンのダウンロード
新しいバージョンの WordPress をダウンロードします。
Themes 又は Plugins をクリックし、プラグインやテーマも新しいバージョンをダウンロードします。テーマとプラグインは事前に何を使っているのか確認してください。
4. 新しいバージョンの加工
ダウンロードした新しいバージョンの WordPress ディレクトリに必要なファイルをコピーします。まずは「2. wp-config.php の加工」で加工した wp-config.php をコピーします。
「3. 新しいバージョンのダウンロード」でダウンロードした新しいバージョンのテーマとプラグインを、「themes」ディレクトリまたは「plugins」ディレクトリにコピーします(「wp-content」ディレクトリ内にあります)。またバックアップから「uploads」ディレクトリをコピーします。 なお、「uploads」ディレクトリだけは過去のものをそのまま使います。事前に改ざんを修正したり、自分でアップしていない不明なファイル(大量の改ざんを実行するためのプログラム)があれば削除してください。オリジナルのテーマを使っている場合は、バックアップから「themes」ディレクトリへコピーします。こちらも事前に改ざんを修正したり、自分でアップしていない不明なファイル(大量の改ざんを実行するためのプログラム)があれば削除してください。
5. WordPress ディレクトリのアップロード、確認
「4. 新しいバージョンの加工」で作業した新しいバージョンの WordPress ディレクトリを FTP ソフトを使い、すべてアップロードします。最後に WordPress にログインし、再設定や不具合がないか確認します。なお、プラグインは「有効化」をクリックし、再度設定する必要があります。