ハッキングされたWordPressを復旧する方法【1】最初にやること/復旧の考え方

WordPress_Eyecatch

先日、私が運営している別のWordPressサイトがハッキング/乗っ取り被害にあいました。

サイトを閲覧しようとすると、意図しない別のページ(海外の通販サービス)に転送されてしまうのです。

いわゆる「リダイレクトハッキング」と呼ばれるものらしいのですが、サイト運営期間こそ長いものの、技術的には完全な素人の私は、どうしていいかわからず右往左往することに(被害の実例はこちらの記事にまとめています

乗っ取り被害の症状(私の場合)
  • 勝手に別サイトにリダイレクトされる
  • 記事の中に 変なスクリプトが仕込まれている(多分 これでリダイレクトされている)
  • 身に覚えのないユーザが追加されている
  • サーバ内に身に覚えのないファイル/フォルダが追加されている
  • サーバ内のWordPressファイルが改変(スクリプトの追記など)されている

このうち「勝手にリダイレクト」以外の症状は、当初気づいておらず、後になってから判明したもの(だから被害を受けたわけですが)。

正常に作動していた時点のバックアップデータも残っておらず、途方にくれましたが、WEBの情報を頼りに なんとかかんとか復旧することができました。

この記事では、その際の経験をもとに、WordPressサイトがハッキング/乗っ取り被害にあった場合の対処法を 備忘録としてまとめておきたいと思います。※長くなったので、記事を分けて投稿しています。

一言メモ
一連の記事はあくまで、私の事例に対して私が行った対処法の紹介に過ぎません。これだけでは解決しない場合も十分考えられますので その点ご留意ください。

まず初めにやること

まず、ハッキング/乗っ取り被害に気付いたら、復旧作業の前に、さらなる被害の拡大を防ぎましょう。

復旧作業には かなり時間がかかりますので、はじめに 被害の拡大を防ぐ対策を行っておきましょう。

サイトへのアクセスを制限する

ハッキングされた状態で サイトの公開を続けると、サイトを訪れたユーザが被害に巻き込まれる可能性があります。ひとまず、サイトへのアクセス制限をかけましょう。

主だったレンタルサーバでは「Basic認証」と呼ばれるアクセス制限機能が標準装備されています(事例:Xサーバー)。

これは、サイト閲覧時にIDとパスワードを要求するもの。

「Basic認証(アクセス制限)」を設定して、ひとまず 一般ユーザのアクセスを遮断しましょう。

不審なユーザーを削除する

WordPressのダッシュボード「ユーザー > ユーザー一覧」を開き、身に覚えのないユーザーが追加されていないか確認します。

不審なユーザーが追加されていた場合は、削除します。

一言メモ
不審なユーザを削除しても、WordPress本体データに仕込まれたスクリプトによって すぐに復活してしまう可能性があります。その場合は、ひとまずこちらはそのままで放置し、次にすすみましょう。

「復元用バックアップ」をダウンロードする

私の場合、ハッキング被害に気付くまでに、事象発生から(おそらく)半年以上が経過していました。

このため、プラグインによるバックアップデータも、サーバの復元データも、すべて被害をうけた後の状態のものでした。

そこで仕方なく、現状、サーバ上に残っているデータファイル(被害を受けている状態のもの)を「復元用バックアップデータ」としてダウンロードし、手動で復旧することにしました。

一言メモ
正常作動時のバックアップデータがある場合は そのデータで復元作業を試しましょう。またレンタルサーバの中には、一定期間、過去のバックアップデータを保存してくれている会社もあります。
「本体(サイトデータ)」と「データベース」をそれぞれダウンロード

WordPressは「本体データ(サイトデータ)」と「データベース」の2種類で構成されており、それぞれ別の場所に保存されています。

  • 本体(サイトデータ): 画像、テーマ、プラグインなどが保存されている。FTPアプリを使って、サーバにアクセスし WordPressが保存されているフォルダ内のデータをすべてをダウンロードする
  • データベース: 記事(本文、タイトル、コメントなど)やユーザ情報が記録されている。ダウンロード方法はこちらの記事を参照

両者をそれぞれローカル環境にダウンロードして保存します。

以後、記事内では ここでダウンロードしたデータ(被害を受けている状態の最新のデータ)を「復元用バックアップデータ」と呼びます。

ダウンロードした「復元用のバックアップデータ」は、はじめにウィルスチェックをしておきましょう。

一言メモ
後述するように、「復元用バックアップデータ」の中でも 実際の復旧に用いるのは その中の一部だけです。ただ、なにかあった時のために、サーバ上のデータはすべて保存しておきましょう。私は「Root(サーバが用意した自分用スペースの最も上の階層)」以下の全部のフォルダをローカル環境に保存しました。

現状の「本体データ」を削除する

「復元用バックアップデータ」がダウンロードできたら、サーバ上のWordPress本体データ(被害を受けたもの)一式を削除します。

注意

データベースの方は、ひとまず現状のものを利用するので、そのままにしておきます。

復元の基本的な考え方

実際の復元作業に入る前に、基本的な考え方を確認しておきましょう。

  • WordPress本体(サイトデータ)は 一部を除き 新規に用意したものを利用する
  • 本体(サイトデータ)のうち「wp-config.php」内の情報と「画像ファイル」は「復元用バックアップデータ」から流用する
  • データベースは ひとまず 現状のものを使用し 問題ある個所だけ修正する
WordPress本体データは新規に用意する

WordPress本体データは、ハッキングの被害を受けやすいポイントです。

私の場合も、本体データに新たなファイル/フォルダが追加されていたり、構成ファイルに不正なスクリプトが仕込まれていました。

このため、WordPress本体は「復元用バックアップ」のものは使わずに、基本的に 新たにダウンロードし直したものを利用します。

一言メモ
WordPress本体データは、「uploads」フォルダ以外は、基本的に インストール時と同じ構成のままで運用が継続します。このため、被害を受けた本体データ(ファイル)を1つ1つ修正していくよりも、新しいものに切り替えてしまった方が作業が楽です。
「プラグイン」と「テーマ」は新規に入れ直す

「プラグイン」と「テーマ」も、被害を受けやすいファイルなので、基本的にはすべて新しいものに差し替えましょう。

設定値などは、基本的にデータベース側に保存されているため、プラグインを再度インストールして、「有効化」すれば 復活します。

一言メモ
テーマで「子テーマ」を利用している場合は、設定が引き継がれません。子テーマを使いまわす場合は「洗浄」処理が必要になります。
一部ファイルは「洗浄」して 従来のデータを引き継ぐ

以下のデータは、「復元用バックアップデータ」から 引き継いで利用します。

  • wp-config.php:ファイル内の情報(データベース用のID/パスワードなど)のみ利用
  • 「uploads」内の画像データ:復元用バックアップのデータを「洗浄処理」後に利用
  • 子テーマ:復元用バックアップのデータを「洗浄処理」後に利用
一言メモ
「洗浄処理」とは、被害を受けたファイルから不正なスクリプト/コードを削除して 正常化することを指します
データベースは「いったん」従来のものを利用する

データベースは、ひとまず 現状のデータをそのまま残しておき、本体(サイトデータ)の修正後に 問題ある個所だけ修正することとします。

まとめ

以上で「1. 最初にやること/復旧の考え方」の紹介は終了です。

続いて、いよいよ 実際にハッキングを受けたデータの復元作業に入ります。「2. 本体(サイトデータ)を回復させる」の記事に進んでください。