「サイトにアクセスしたら知らないページにリダイレクトされる」「Google検索で自社サイトに警告が表示された」「管理画面にログインできなくなった」——これらはWordPressへの不正アクセス・改ざんの典型的なサインです。
パニックになる前に、まず被害の拡大を止めることが最優先です。
感染しているかどうかの確認
不審に感じたらまず以下を確認します。
Google Safe Browsingで確認する:https://transparencyreport.google.com/safe-browsing/search?url=yourdomain.com にアクセスし、「危険なサイト」として登録されていないか確認します。
VirusTotalで確認する:URLをVirusTotalに入力すると複数のアンチウイルスエンジンでスキャンされます。マルウェアチェックツールでも確認できます。
Search Consoleで確認する:Googleサーチコンソールに「セキュリティの問題」セクションがあります。Googleが不審なコンテンツを検出していると通知が来ます。
WordPressセキュリティチェックツールで確認する:外部からWordPressサイトの典型的な脆弱性を確認できます。
緊急対応:被害拡大を止める
感染が確認できたら、まず被害の拡大を防ぎます。
1. サイトを一時的にアクセス不可にする
.htaccess にアクセス制限を追加するか、サーバーのコントロールパネルでサイトを停止します。感染したサイトを訪れた一般ユーザーへの被害を防ぐためです。
# .htaccess に追記して自分のIP以外をブロック
Order Deny,Allow
Deny from All
Allow from 自分のIPアドレス
### 2. パスワードをすべて変更する
以下のすべてのパスワードを即座に変更します。
□ WordPress管理者パスワード(全管理者アカウント)
□ レンタルサーバーのコントロールパネル
□ FTPアカウント
□ データベース(MySQL)のパスワード
□ ドメイン登録会社の管理画面
□ 関連するメールアカウント
### 3. バックアップを確認する(汚染前のものがあれば)
感染前のバックアップがあれば、それに戻すのが最も確実な方法です。ただし「いつから感染していたか」を確認してから戻さないと、すでに汚染されたバックアップに戻してしまうリスクがあります。
サーバーのアクセスログで不審なリクエストが始まった時期を確認します。
感染経路の特定
除去作業と並行して、どこから侵入されたかを特定します。再発防止のために必要なステップです。
よくある感染経路:
| 経路 | 確認方法 |
|---|---|
| プラグインの脆弱性 | 更新を長期間放置していたプラグイン |
| テーマの脆弱性 | 非公式または古いテーマ |
| 管理者パスワードの不正取得 | ブルートフォース攻撃・フィッシング |
| 古いWordPressバージョン | WordPress本体のアップデート未実施 |
| 他のサイトからの感染 | 同じサーバーに複数サイトを設置 |
| FTP・SSH認証情報の流出 | 端末のマルウェア感染 |
サーバーのアクセスログ(access_log)で不審なURLへのPOSTリクエストがないかを確認します。特に /wp-admin/ や /wp-login.php への大量アクセスはブルートフォース攻撃の痕跡です。
マルウェアの除去
プラグインを使う方法
Wordfence Security:無料プランでもファイルスキャンと改ざん検知ができます。管理画面にログインできる場合はインストールしてスキャンを実行します。
Sucuri Security:サーバーサイドのスキャンが可能。有料プランではマルウェア除去もサービスに含まれます。
手動で除去する方法
感染ファイルを特定してFTPで削除・修正します。
# 最近変更されたファイルを確認(サーバーのSSH)
find /path/to/wordpress -name "*.php" -newer /path/to/reference-file -ls
特に以下のファイルに不審なコードが埋め込まれていることが多いです。
index.php(テーマ・プラグインの)wp-config.php.htaccessfunctions.php(テーマの)
不審なコードは難読化(base64エンコードなど)されていることが多いです。
// こういった記述は要注意
eval(base64_decode('...長い文字列...'));
### クリーンな状態から再構築する(最も確実)
バックアップからの復元が可能な場合や、感染範囲が広い場合は以下の手順が最も確実です。
1. 感染前のバックアップを確認・用意する
2. サーバーからすべてのファイルを削除する
3. データベースをクリーンアップまたは再構築する
4. WordPressを新規インストールする
5. クリーンなバックアップからコンテンツを復元する
6. 信頼できるプラグイン・テーマのみを再インストールする
## 再発防止のセキュリティ強化
感染経路を閉じた後、同様の攻撃を防ぐために以下を設定します。
□ WordPress本体・プラグイン・テーマを最新版に更新
□ 使っていないプラグイン・テーマを削除
□ 管理者パスワードを強力なものに変更(16文字以上・記号含む)
□ 二段階認証を有効にする(WP 2FA などのプラグイン)
□ ログインURLを変更する(/wp-login.php を変更)
□ xmlrpc.phpへのアクセスをブロック
□ ファイルパーミッションを適切に設定(wp-config.php は 600)
□ セキュリティプラグインの導入(Wordfence または Sucuri)
□ 定期バックアップの設定(最低でも週1回)
□ サーバー側のWebアプリケーションファイアウォール(WAF)の有効化
WordPressセキュリティチェックツールで外部から確認できる脆弱性がないかを定期的にチェックする習慣を付けることも重要です。