WordPressサイトをクリーンにリビルドする|改竄・感染した環境を引き継がない復旧

当ページは検証・整備中のドラフトです。
内容は実環境での検証や追加調査により変更される予定です。
参照:ページ公開・更新ポリシー

WordPressが改竄やマルウェア感染を受けた場合、既存の環境やバックアップに不正なファイルや設定が含まれている可能性がある。

影響範囲を特定できない場合は、既存環境をそのまま修復・復元するのではなく、新しいWordPress環境を用意する。信頼できるものだけで新環境を組み立てることで、不正なファイルや設定を引き継がないようにする。

バックアップからの通常復元と使い分ける

障害、更新失敗、データ破損などでは、正常なバックアップからサイトを復元する方法が利用できる。

一方、改竄やマルウェア感染では、いつから影響を受けていたのか、どのファイルや設定が変更されたのかを特定できないことがある。その状態を含むバックアップを丸ごと復元すれば、不正な変更まで戻す可能性が残る。

このような場合は、既存環境を引き継がず、新しい環境へ必要なデータだけを移す方法を選択する。

参考:WordPressをバックアップから復元する

復旧に使用するデータを選別する

旧環境やバックアップにあるデータをすべて戻すのではなく、正規配布元から取得し直すもの、設定集から再現するもの、内容を確認して移行するものに分ける。

WordPress本体、テーマ、プラグインなどは、旧環境からコピーせず新しく取得する。PHPやJavaScriptなどの実行コード、出所や用途を確認できないファイルも、そのまま新しい環境へ持ち込まない。

投稿、固定ページ、画像、添付ファイル、投稿メタデータ、カテゴリ、タグ、コメントなどのサイト固有のコンテンツは、必要性と内容を確認したうえで復旧対象とする。

クリーンなWordPress環境を用意する

既存サイトとは別に、新しいWordPress環境を用意する。

WordPress本体は正規配布元から新しく導入し、既存環境のコアファイルを新しい環境へ引き継がない。

なお、再構築中の環境は外部へ公開しないようにする。

テーマ・プラグインを再取得する

使用するテーマとプラグインは、WordPress公式ディレクトリや開発元など、信頼できる配布元から改めて取得する。

旧環境に保存されていたテーマやプラグインをそのままコピーすると、改竄されたファイルまで新しい環境へ持ち込む可能性がある。

配布が終了しているものや入手元を確認できないものは旧環境から安易に流用せず、代替手段も含めて扱いを判断する。

設定集から構成を再現する

正常時に作成した設定集を参照し、WordPress、テーマ、プラグイン、PHP、ホスティング、WAF、DNS、外部サービスなどの構成を再現する。

旧環境の設定をそのままコピーするのではなく、記録していた構成情報を基準に一つずつ設定し、不正な変更を新しい環境へ持ち込まないようにする。

参考:WordPressの設定集を作成する

必要なコンテンツを移行する

旧環境やバックアップから、復旧に必要なコンテンツを選別して新しい環境へ移す。

対象は記事本文だけではない。画像、添付ファイル、投稿メタデータ、カテゴリ、タグ、コメントなど、サイトの運用に必要なデータも確認する。

ファイルを戻す場合は、種類や内容を確認せずディレクトリ単位でそのままコピーする方法を避ける。実行可能なファイルや用途を確認できないファイルは、新しい環境へ持ち込まない。

認証情報を変更する

改竄や感染に伴って認証情報が漏洩している可能性も考慮しなければならない。

WordPress、ホスティング、SFTP、データベース、外部サービスなど、影響を受けた可能性のある認証情報を変更する。APIキーなども漏洩の可能性があれば再発行する。

原因を解消する

改竄や感染につながった原因が判明している場合は、再公開前に解消する。

脆弱なテーマやプラグイン、古いソフトウェア、漏洩した認証情報などが原因であれば、新しい環境で同じ状態を再現しない。

原因が残ったままでは、クリーンな環境へ再構築しても再び同じ問題が発生し得る。

動作と構成を確認する

再構築後は、サイトの表示だけでなく、管理画面へのログイン、主要なページや画像、フォーム、メール、外部サービスとの連携などを確認する。

設定集とも照合し、必要な構成が再現されていることを確認する。不要なユーザーや用途不明のファイルなどが新しい環境へ持ち込まれていないことも確認対象となる。

新しい環境へ切り替える

動作と構成の確認が完了したら、新しい環境を本番サイトとして公開する。

DNSやホスティングの設定変更が必要な場合は、新しい環境へ接続先を切り替える。

旧環境は再び本番環境として利用しないようにし、原因調査や記録のために残す場合は、外部から利用できない状態にして本番環境から分離しておく。