IPアドレスでアクセス拒否をする方法

今回は、WordPressで特定のIPアドレスからのアクセスを拒否する方法を紹介します。functions.php にコードを追加することで簡単に実装できます。セキュリティ強化や不正アクセス対策として有効です。

1 実装のポイント

IPアドレスを判定して、対象のIPであれば WordPress のページを表示せずに拒否する仕組みを作ります。拒否したいIPは配列に登録して管理するのがおすすめです。

2 functions.php にコードを追加


//-------------------------------------------
// 特定のIPアドレスや範囲を拒否する
//-------------------------------------------
function deny_specific_ip() {
    $blocked_ips = array(
        '111.222.333.444', // 1つのIPを拒否
        '123.45.67.*'   // 123.45.67.0 ~ 123.45.67.255 を拒否
    );

    $user_ip = $_SERVER['REMOTE_ADDR'];

    foreach ($blocked_ips as $blocked) {
        // ワイルドカード * を正規表現に変換
        $pattern = '/^' . str_replace('\*', '.*', preg_quote($blocked, '/')) . '$/';

        if (preg_match($pattern, $user_ip)) {
            wp_die('アクセスが拒否されました。(IP制御)');
            exit;
        }
    }
}
add_action('init', 'deny_specific_ip');

  
補足:

  • IPは複数登録可能です。
  • 123.45.67.*123.45.67.0 ~ 123.45.67.255 を全て拒否
  • 111.222.333.444 → その1つのIPだけ拒否
  • 動的IPやプロキシ環境では効果が薄い場合があります。

2.1 動的IP(Dynamic IP)とは?

インターネット接続時にプロバイダから自動的に割り当てられるIPアドレスのことで、接続するたびに変わる場合が多く、同じ利用者でも毎回違うIPになることがあります。

しくみとしては「ユーザー → プロキシサーバー → Webサイト」で、Webサイトから見ると、アクセス元はユーザーの端末ではなく プロキシサーバーのIPアドレス になります。そのため、サイト管理者には「ユーザー本来のIP」が見えず、プロキシのIPだけが分かる状態になります。

2.2 プロキシ環境とは?

プロキシサーバー(Proxy Server) を経由してインターネットに接続する仕組みのことです。ユーザーのパソコンやスマホが直接サイトにアクセスするのではなく、代理(proxy)となるサーバーを中継して通信します。

3 完成イメージ

アクセスが拒否されました。

4 代用プラグイン

プラグインを利用する場合は「Wordfence Security」や「All In One WP Security & Firewall」などのセキュリティ系プラグインで、IPブロック機能を利用できます。

5 まとめ

functions.php にコードを追加するだけで、特定のIPアドレスからのアクセスを簡単に拒否できます。ただし、動的IPやプロキシ環境では限界があるため、必要に応じてサーバー側設定やプラグインと組み合わせるのが安全です。