【実録】WordPressサイトが不正アクセスで403エラーに。エックスサーバーで自力で復旧した手順まとめ
こんにちは、29歳のITエンジニアです。Kalsarikännit (自宅でパンツ一丁で酔っ払う)してますか?
WordPressの403エラーに遭遇すると、「403 Forbidden」と表示されて、まるでサイトが「お前はここに来るな!」と拒絶しているように感じますよね。
でもご安心を。この記事では、その「ツンデレ」なエラーを攻略する方法をお伝えします。
WordPressサイトで403 Forbiddenエラーが発生し、困っている方へ向けて、実際に私が対応した復旧の記録をまとめました。
突然サイトにアクセスできなくなったり、エックスサーバーから「不正アクセスがありました」という通知を受け取った方の参考になれば幸いです。
前提条件(作業を始める前に)
- 操作にはphpMyAdminを使用します(phpMyAdminの操作方法)。
- WordPressのコアファイルとデータベースのバックアップを必ず取得してください。
状況:WordPressサイトが403エラーに
知人から「WordPressサイトにアクセスできない!」と連絡があり、サイトを確認したところ、403 Forbiddenエラーが表示されていました。
さらに詳しく調べると、エックスサーバーからも「不正アクセスを検知した」と通知がありました。
調査結果:原因は不正アクセスによる改ざん
サーバーを調査したところ、以下のような不正ファイルが存在していました。
wp-confiq.php
(本来はwp-config.php
が正しい名称のため、不正ファイルの疑い)wp-includes/nkrfct.php
という不審なPHPプロセスが動作.htaccess
のパーミッションが「444」になり、不正なリダイレクト設定がされていた
エックスサーバー側で一時的にパーミッションが「000」に変更されていましたが、自動復旧機能だけでは再発を防げませんでした。
行った対応:サイト復旧の具体的な手順
1. バックアップを取得
まずはWordPressのコアファイルとデータベースをバックアップします。これは必ず行ってください。
2. WordPressをサブディレクトリに再インストール
セキュリティ向上のため、WordPressのコアファイルをルートディレクトリ(/
)ではなく、サブディレクトリに設置します。
例えば「/subfolder」に設置した場合、ルートのindex.php
は以下のように記述します。
<?php
define('WP_USE_THEMES', true);
require( dirname(__FILE__) . '/subfolder/wp-blog-header.php' );
3. コメント機能をすべて無効化
新規投稿はダッシュボードの設定でコメントを無効にします。既存の記事はphpMyAdminでSQLを使って一括変更しました。
UPDATE wp_posts
SET comment_status = 'closed', ping_status = 'closed'
WHERE comment_status != 'closed' OR ping_status != 'closed';
4. データベース内の不要データを削除
サイトのパフォーマンス改善とセキュリティ対策のため、次のSQLを実行して不要データを削除します。
30日以上前のリビジョンを削除
DELETE FROM wp_posts
WHERE post_type = 'revision'
AND post_date < DATE_SUB(NOW(), INTERVAL 30 DAY);
ゴミ箱(Trash)内の投稿やページを削除
DELETE FROM wp_posts
WHERE post_status = 'trash';
不要なコメント(スパム、ゴミ箱)を削除
DELETE FROM wp_comments
WHERE comment_approved IN ('spam', 'trash');
孤立したメタデータを削除
DELETE pm
FROM wp_postmeta pm
LEFT JOIN wp_posts p ON p.ID = pm.post_id
WHERE p.ID IS NULL;
使用していないプラグインの残骸を削除
過去に使用していた「All in One SEO」やフォームの名残を削除します。
DELETE FROM wp_postmeta
WHERE meta_key LIKE '\\_aio%' ESCAPE '\\';
DELETE FROM wp_postmeta
WHERE meta_key LIKE '%メールアドレス%'
OR meta_key LIKE '%お名前%';
4. セキュリティ対策を強化する
再発を防ぐため、次の設定をおすすめします。
- セキュリティプラグインの導入(SiteGuardなど)
- WordPress本体とプラグインを最新に保つ
- WAF(ウェブアプリケーションファイアウォール)の有効化
- 管理者アカウントの強化(二段階認証など)
まとめ:同様の被害を防ぐために
今回の事例では、単にエラーを解決するだけでなく、不正アクセスの原因をきちんと特定し、根本的にサイトを再構築することが必要でした。
「403エラー」や「不正アクセスの通知」があったときは、慌てずバックアップを取得した上でサーバー内を確認し、不正なファイルや設定がないか点検しましょう。
同じ状況でお困りの方の参考になれば嬉しいです。それではまた!