2026年5月20日
2026年5月20日
WordPressの管理画面への外部からのアクセスをブロックする方法
はじめに
WordPressの /wp-admin/ は管理者しか使わないにも関わらず、インターネット全体に公開されています。IPアドレス制限で管理者のIPからのみアクセスできるようにすることで、攻撃面を大幅に削減できます。
方法1:.htaccessでIP制限(Apache)
/wp-admin/.htaccess を作成または編集:
# 管理画面を特定IPのみに制限
Order deny,allow
Deny from all
Allow from 203.0.113.1 # 自宅IPアドレス
Allow from 198.51.100.0/24 # 会社のIPレンジ
# admin-ajax.php はプラグインのため除外
<Files "admin-ajax.php">
Order allow,deny
Allow from all
</Files>
WordPressルートの .htaccess にも追加できます:
# /wp-admin/ へのアクセスを制限
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-admin/
RewriteCond %{REMOTE_ADDR} !^203\.0\.113\.1$
RewriteCond %{REQUEST_URI} !admin-ajax\.php$
RewriteRule ^ - [F]
方法2:Nginxで制限
# wp-admin ディレクトリへのアクセスを制限
location ^~ /wp-admin/ {
allow 203.0.113.1;
allow 198.51.100.0/24;
deny all;
# admin-ajax.php は除外
location = /wp-admin/admin-ajax.php {
allow all;
fastcgi_pass php-fpm;
include fastcgi_params;
}
}
方法3:wp-config.phpで管理画面URLを制限
// wp-config.php
// 管理画面へのアクセス時に追加の認証を要求(非推奨 — .htaccessの方が確実)
define('DISALLOW_FILE_EDIT', true); // テーマ・プラグインエディタを無効化
define('DISALLOW_FILE_MODS', true); // ファイル変更を全て禁止(更新も含む)
動的IPアドレスへの対応
固定IPがない場合は、VPNを使って固定IPからアクセスするか、ダイナミックDNSを使います。
# 現在のIPアドレスを確認
curl -s ifconfig.me
# IPアドレスが変わった場合は .htaccess を更新
# または WP-CLI でリモートから変更
wp eval "echo $_SERVER['REMOTE_ADDR'];"
アクセスログで不審なアクセスを確認
# wp-admin への不審なアクセスを確認
grep 'wp-admin' /var/log/apache2/access.log | grep ' 200 ' | awk '{print $1}' | sort | uniq -c | sort -rn | head -20
# 403エラー(ブロック済み)の確認
grep 'wp-admin' /var/log/nginx/access.log | grep ' 403 '
注意事項
admin-ajax.phpを制限すると、多くのプラグインやテーマの機能が壊れます — 必ず除外してくださいwp-cron.phpも除外が必要な場合があります- 固定IPがない場合はVPN利用またはBasic認証との組み合わせを検討してください
- ロックアウトに備えて緊急アクセス手段(SSH)を確保しておいてください
まとめ
/wp-admin/.htaccess に Deny from all + Allow from {自分のIP} を設定し、admin-ajax.php を除外するだけで管理画面への外部アクセスをほぼ遮断できます。