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/.htaccessDeny from all + Allow from {自分のIP} を設定し、admin-ajax.php を除外するだけで管理画面への外部アクセスをほぼ遮断できます。

お気軽にご相談ください

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