2026年5月20日
2026年5月20日
WordPressのIP制限でログインページを保護する方法
はじめに
WordPressのログインページ(wp-login.php)は全世界からアクセス可能で、ブルートフォース攻撃の標的になりやすいです。IPアドレスによるアクセス制限を設けることで、許可されたIPからのみログインを受け付けるようになります。
解決手順(Apache/.htaccess)
ステップ1:wp-login.phpへのIP制限を設定する
# .htaccess(WordPressルートディレクトリ)
# wp-login.php を特定IPのみに制限
<Files "wp-login.php">
Order Deny,Allow
Deny from all
Allow from 203.0.113.10 # 自宅のIPアドレス
Allow from 198.51.100.0/24 # オフィスのサブネット
</Files>
# wp-admin ディレクトリも制限する場合
<Directory "/wp-admin">
Order Deny,Allow
Deny from all
Allow from 203.0.113.10
Allow from 198.51.100.0/24
# admin-ajax.php は除外(必須)
</Directory>
<Files "admin-ajax.php">
Order Allow,Deny
Allow from all
</Files>
ステップ2:新しい.htaccess構文(Apache 2.4以降)
# Apache 2.4+ の場合
<Files "wp-login.php">
Require ip 203.0.113.10
Require ip 198.51.100.0/24
</Files>
ステップ3:Nginxでの設定
# nginx.conf または サイト設定ファイル
location = /wp-login.php {
allow 203.0.113.10;
allow 198.51.100.0/24;
deny all;
fastcgi_pass php-fpm;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# /wp-admin/ も制限する場合
location ^~ /wp-admin/ {
allow 203.0.113.10;
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;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
ステップ4:動的IPの場合の対処法
自宅のIPが変わる場合は、CloudflareやVPNで固定IPを確保するか、ログインURLの変更で代替します:
# ログインURLを変更するプラグイン(IP制限の代替手段)
wp plugin install wps-hide-login --activate
wp option update whl_page 'secret-login-2024'
ステップ5:誤ってロックアウトされた場合の解除
# SSH経由で.htaccessを編集してIP制限を一時的に削除
# または WP-CLIで管理者パスワードをリセット
wp user update admin --user_pass='new_password'
# FTPで .htaccess を編集してIP制限行を削除
# または サーバーコントロールパネルのファイルマネージャーを使用
注意事項
- IP制限を設定する前に必ず自分のIPアドレスを確認してください。
whatismyip.comなどで確認できます admin-ajax.phpはIP制限から除外してください。除外しないとフロントエンドのAJAX処理が壊れます- 動的IPのプロバイダーを使っている場合、IPが変わるとロックアウトされます。必ずSSHアクセスなど別の復旧手段を確保してください
まとめ
wp-login.phpへのIP制限は .htaccess に ブロックを追加するだけです。admin-ajax.php の除外を忘れず、必ずロックアウト時の復旧手段を確保した上で設定してください。