WordPressで運営中のサイトが乗っ取り被害を受けてしまいました。
その際、私が復旧/復元のために行った内容を備忘録として記事にまとめました(長くなったので 記事を分けています)。
この記事は「2. 本体(サイトデータ)を回復させる」方法を紹介しています。
WordPressは「本体(サイトデータ)」と「データベース」という2種類のデータで構成されています。
はじめに「本体データ」を復元し(この記事で紹介)、その後で「データベース」の復元(こちらの記事で紹介)を行っていきます。
記事の目次
「本体データ」を復元する
WordPressの「本体データ」は、基本的に新しいものを使用しますので、まずは以下のページから当該バージョンを入手します。
https://ja.wordpress.org/download/releases/
「最新版」のWordPressをいれてしまうと、不具合でサイトが開けなくなる可能性がありますので、必ず「これまで利用していたバージョン(被害を受けたのと同じバージョン)」を選んでください。
例えば ver5.7.8で運用していたサイトがハッキング被害にあったとしたら、同じ「ver5.7.8」をダウンロードします。
「復元用バックアップ」の本体データの中から、wp-includes内にある「version.php」を開きます。
ファイル頭の方の「$wp_version = ‘〇.〇.〇’;」というのが、WordPressのバージョンです。
例えば「$wp_version = ‘5.7.8’;」とあったら「ver 5.7.8」ということになります。
「WordPress 本体データ」をアップロードする
入手したWordPressインストール用ファイル(.zip)を展開し、 FTPアプリを使ってサーバにアップロードします。
WordPressをアップロードする場所(インストール先)は、従来の構成と同じにしてください。
WordPressのアップロード先は「1. ROOT直下にインストール」の場合と「2. サブディレクトリ以下にインストール」の場合があります。この記事では 私の環境に合わせて「1. ROOT直下にインストール」の事例を前提に説明を続けますので、環境が異なる場合は 適宜読み替えてください。
「wp-config.php」を復元する
「wp-config.php」とは、WordPressが データベースにアクセスするためのIDやパスワードを記録したファイルです。
サーバ移転時など、通常の復元作業であれば、旧「wp-config.php」を、新規WordPress内に複製してあげればよいのですが、今回はハッキング被害ということもあり「復元用バックアップ」のものをそのまま使用するのは抵抗がありました。※実際に 不正なスクリプトが仕込まれていました・・・
そこで「復元用バックアップ」のwp-config.phpから必要な情報だけを抜き出し、新規に作成した「wp-config.php」に転記することにしました。
「復元用バックアップ」の情報を入手する
「復元用バックアップ」のWordPress本体データより「wp-config.php」を開きます。
「wp-config.php」を開いたら以下の部分を控えます。
- define(‘DB_NAME’, ‘★★★★★★’); ※データベース名
- define(‘DB_USER’, ‘★★★★★★’); ※データベースのユーザー名
- define(‘DB_PASSWORD’, ‘★★★★★★’); ※データベースのパスワード
- define(‘DB_HOST’, ‘★★★★★★’); ※MySQLのホスト名
- $table_prefix = ‘★★’; ※テーブルの接頭辞
「wp-config.php」を新規に作成する
あらたに入手したWordPress本体データの「WordPress」フォルダを開きます。
その中からwp-config-sample.phpを複製して、名前を「wp-config.php」に変更します。
続けてこの「wp-config.php」をテキストエディタで開き、当該部分(下図 青字部分)を先ほど確認した情報に書き換えます。
書き換えが終わったら「UTF-8(BOMなし)」形式で保存します。
FTPでアップする
新規に作成した wp-config.phpを、サーバにアップロードしたWordPress本体データのインストールフォルダにアップします。
アップロードが終わったら、wp-config.phpの属性を「400(読み取り専用)」に変更しておきましょう。
「画像」データを復元する
画像のデータは復元用バックアップのものを「洗浄処理」して利用します。
「復元用バックアップ」のWordPress本体データより「wp-content > uploads」フォルダを開きます。
「2015」「2016」など西暦の名前が付いているフォルダが、画像ファイルの保存されているフォルダです(「西暦年フォルダ > 各月フォルダ」で構成されています)。
通常の復元作業であれば、これらのフォルダを新しいWordPressの「uploads」内にコピペしてあげればよいのですが、今回はそうはいきません(変なファイルが含まれている可能性があるため)。
初めに、不審なファイル/フォルダなどを削除(洗浄処理)してから、そのあとで、新WordPress側にデータを移動(複製)します。
「洗浄処理」を行う
「洗浄処理」・・・といっても特別な裏技があるわけではありません。
画像が保存されているフォルダを1つ1つ開いて 中身を確認し怪しいもの(アップした覚えのないもの)を手動で削除していきます。以下は 私が被害を受けた際に確認できた怪しいファイルの事例です。
拡張子のないファイルが作成されていました。(画像フォルダ内で)拡張子が付いていないファイルは基本的に使えないので、不正ファイルであるか否かに関わらず 削除してしまいましょう。
基本的に「画像」以外のファイルは疑ってかかりましょう。
「画像」ファイルをFTPでアップする
「洗浄処理」が終わったら、画像データ一式をフォルダごとコピペします。
サーバ上にアップロードしたWordPress本体データの「wp-content」フォルダ内に「uploads」というフォルダを作成し、そこに保存します。
従来の「プラグイン」を把握しておく
プラグインは、基本的にすべて新しく入れ直しますので、復元用バックアップの「plugins」フォルダのデータは使用しません。
ただ、これまで使用していたプラグインを把握しておくために、復元用バックアップの「wp-content > plugins」フォルダ内を確認しプラグイン名をメモしておきましょう。
テーマは「子テーマ」のみ流用する
テーマも基本的には新しく入れ直します。
ただし、子テーマを利用していた場合、そちらの設定値(カスタマイズした内容)は引き継がれません。
そこで、親テーマは新規にインストールし直し、子テーマは復元用バックアップの「wp-content > themes」のデータを洗浄処理して再利用します。
ファイルを開き、怪しいファイルがないか確認します。
「洗浄処理」が終わったら、サーバ上にアップロードしたWordPress本体データの「wp-content > themes」フォルダ内に、子テーマをフォルダごとコピペします。
アップロード後に行うこと
以上で、WordPress本体ファイルの 復元作業は終了です(データベースの方はこの後で作業します)
ひとまずサイトが開けるようになっているはずですので、WordPressのダッシュボードにログインし、以下の設定を行いましょう。
まずは、テーマを新しくインストールします。
ひとまず、サイトの表示に必要な最低限のプラグインをいれます。
「custom-permalinks」などのURL改変系のプラグインを使っている場合、いれないとサイトが正常に表示されないことがあります。
TOPページ以外が非表示(404NOT FOUND)になってしまう場合は、「.htaccess」が作成されていない可能性があります。
ダッシュボード「設定>パーマリンク設定」で、何も変更せずに「変更を保存」ボタンをクリックします。※これで「.htaccess」が新規に作成されるはず
まとめ
以上で「2. 本体(サイトデータ)を回復させる」方法の紹介は終了です。
次の記事で「3. データベースを回復させる」方法を紹介していますので、そちらもあわせてお読みください。