先日、私が運営している別のWordPressサイトがハッキング/乗っ取り被害にあいました。
サイトを閲覧しようとすると、意図しない別のページ(海外の通販サービス)に転送されてしまうのです。
いわゆる「リダイレクトハッキング」と呼ばれるものらしいのですが、サイト運営期間こそ長いものの、技術的には完全な素人の私は、どうしていいかわからず右往左往することに(被害の実例はこちらの記事にまとめています)
- 勝手に別サイトにリダイレクトされる
- 記事の中に 変なスクリプトが仕込まれている(多分 これでリダイレクトされている)
- 身に覚えのないユーザが追加されている
- サーバ内に身に覚えのないファイル/フォルダが追加されている
- サーバ内のWordPressファイルが改変(スクリプトの追記など)されている
このうち「勝手にリダイレクト」以外の症状は、当初気づいておらず、後になってから判明したもの(だから被害を受けたわけですが)。
正常に作動していた時点のバックアップデータも残っておらず、途方にくれましたが、WEBの情報を頼りに なんとかかんとか復旧することができました。
この記事では、その際の経験をもとに、WordPressサイトがハッキング/乗っ取り被害にあった場合の対処法を 備忘録としてまとめておきたいと思います。※長くなったので、記事を分けて投稿しています。
まず初めにやること
まず、ハッキング/乗っ取り被害に気付いたら、復旧作業の前に、さらなる被害の拡大を防ぎましょう。
復旧作業には かなり時間がかかりますので、はじめに 被害の拡大を防ぐ対策を行っておきましょう。
サイトへのアクセスを制限する
ハッキングされた状態で サイトの公開を続けると、サイトを訪れたユーザが被害に巻き込まれる可能性があります。ひとまず、サイトへのアクセス制限をかけましょう。
主だったレンタルサーバでは「Basic認証」と呼ばれるアクセス制限機能が標準装備されています(事例:Xサーバー)。
これは、サイト閲覧時にIDとパスワードを要求するもの。
「Basic認証(アクセス制限)」を設定して、ひとまず 一般ユーザのアクセスを遮断しましょう。
不審なユーザーを削除する
WordPressのダッシュボード「ユーザー > ユーザー一覧」を開き、身に覚えのないユーザーが追加されていないか確認します。
不審なユーザーが追加されていた場合は、削除します。
「復元用バックアップ」をダウンロードする
私の場合、ハッキング被害に気付くまでに、事象発生から(おそらく)半年以上が経過していました。
このため、プラグインによるバックアップデータも、サーバの復元データも、すべて被害をうけた後の状態のものでした。
そこで仕方なく、現状、サーバ上に残っているデータファイル(被害を受けている状態のもの)を「復元用バックアップデータ」としてダウンロードし、手動で復旧することにしました。
WordPressは「本体データ(サイトデータ)」と「データベース」の2種類で構成されており、それぞれ別の場所に保存されています。
- 本体(サイトデータ): 画像、テーマ、プラグインなどが保存されている。FTPアプリを使って、サーバにアクセスし WordPressが保存されているフォルダ内のデータをすべてをダウンロードする
- データベース: 記事(本文、タイトル、コメントなど)やユーザ情報が記録されている。ダウンロード方法はこちらの記事を参照
両者をそれぞれローカル環境にダウンロードして保存します。
以後、記事内では ここでダウンロードしたデータ(被害を受けている状態の最新のデータ)を「復元用バックアップデータ」と呼びます。
ダウンロードした「復元用のバックアップデータ」は、はじめにウィルスチェックをしておきましょう。
現状の「本体データ」を削除する
「復元用バックアップデータ」がダウンロードできたら、サーバ上のWordPress本体データ(被害を受けたもの)一式を削除します。
データベースの方は、ひとまず現状のものを利用するので、そのままにしておきます。
復元の基本的な考え方
実際の復元作業に入る前に、基本的な考え方を確認しておきましょう。
- WordPress本体(サイトデータ)は 一部を除き 新規に用意したものを利用する
- 本体(サイトデータ)のうち「wp-config.php」内の情報と「画像ファイル」は「復元用バックアップデータ」から流用する
- データベースは ひとまず 現状のものを使用し 問題ある個所だけ修正する
WordPress本体データは、ハッキングの被害を受けやすいポイントです。
私の場合も、本体データに新たなファイル/フォルダが追加されていたり、構成ファイルに不正なスクリプトが仕込まれていました。
このため、WordPress本体は「復元用バックアップ」のものは使わずに、基本的に 新たにダウンロードし直したものを利用します。
「プラグイン」と「テーマ」も、被害を受けやすいファイルなので、基本的にはすべて新しいものに差し替えましょう。
設定値などは、基本的にデータベース側に保存されているため、プラグインを再度インストールして、「有効化」すれば 復活します。
以下のデータは、「復元用バックアップデータ」から 引き継いで利用します。
- wp-config.php:ファイル内の情報(データベース用のID/パスワードなど)のみ利用
- 「uploads」内の画像データ:復元用バックアップのデータを「洗浄処理」後に利用
- 子テーマ:復元用バックアップのデータを「洗浄処理」後に利用
データベースは、ひとまず 現状のデータをそのまま残しておき、本体(サイトデータ)の修正後に 問題ある個所だけ修正することとします。
まとめ
以上で「1. 最初にやること/復旧の考え方」の紹介は終了です。
続いて、いよいよ 実際にハッキングを受けたデータの復元作業に入ります。「2. 本体(サイトデータ)を回復させる」の記事に進んでください。