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 の除外を忘れず、必ずロックアウト時の復旧手段を確保した上で設定してください。

お気軽にご相談ください

お見積りへ お問い合わせへ