2025年11月16日

2025年11月16日

IPアドレス制限でアクセスを制御する方法

もくじ

取引先からの不正アクセスで学んだこと

以前、制作を請け負った企業サイトで、管理画面への不正アクセス未遂が続いた時期があった。ログを見ると、毎日のように海外のIPアドレスからログイン試行が繰り返されている。クライアントに報告したら、「管理画面は社内からしかアクセスしないから、それ以外は全部ブロックできないの?」と聞かれたんだ。

その時は、IPアドレス制限を設定することで解決した。管理画面へのアクセスを、クライアントのオフィスと僕の作業場のIPアドレスだけに限定したんだ。設定後、不正アクセスの試行はピタリと止まった。攻撃者は管理画面そのものにアクセスできなくなったからね。

IPアドレス制限は、セキュリティ対策の中でも特に効果が高い。設定は少し手間だけど、一度やってしまえば、あとは自動的に守ってくれる。ファイアウォールやセキュリティプラグインと違って、サーバーレベルで弾くから、サイトのパフォーマンスにもほとんど影響しないんだ。

この記事では、WordPressサイトでIPアドレス制限を実装する具体的な方法と、実務で使える実践的なテクニックを紹介する。管理画面だけでなく、特定のページやディレクトリを保護する方法も解説するから、自分のサイトに合った設定ができるはずだ。

なぜIPアドレス制限が有効なのか

攻撃者は管理画面にたどり着けない

セキュリティプラグインやWAFは、不正なアクセスを「検知して防ぐ」仕組みだ。でも、IPアドレス制限は、そもそもアクセスを「受け付けない」。この違いは大きい。

攻撃者が管理画面にアクセスしようとしても、サーバーレベルで403エラー(アクセス拒否)が返される。ログインフォームすら表示されないから、パスワードを試すことさえできない。これが最も確実な防御方法なんだ。

セキュリティプラグインは、ログインフォームまで到達してからの防御だ。つまり、攻撃者は何度でもアクセスを試せる。ブルートフォース攻撃対策でロックアウト機能があっても、攻撃者はIPアドレスを変えて再び試行できる。でも、IPアドレス制限なら、最初から弾かれるからそういった心配がないんだよね。

サーバーリソースを無駄にしない

攻撃者のアクセスをサーバーレベルでブロックすることで、WordPressの処理が実行されない。つまり、PHPも動かないし、データベースへの問い合わせも発生しない。サーバーリソースを守ることができるんだ。

大量の不正アクセスがあると、サーバーに負荷がかかる。特に共有サーバーだと、他のサイトにも影響が出ることがある。IPアドレス制限で攻撃を入口で止めれば、こういった問題も防げる。

僕が運用しているサイトの一つで、以前は1日に数百回のログイン試行があった。管理画面にIPアドレス制限をかけたら、サーバーの負荷が目に見えて下がったんだ。アクセスログも、正常なアクセスだけになってスッキリした。

複数の保護対象に適用できる

IPアドレス制限は、管理画面だけじゃなく、いろんな場所に適用できる。例えば:

  • 管理画面全体(/wp-admin/)
  • ログインページ(/wp-login.php)
  • XML-RPC(/xmlrpc.php)
  • wp-config.phpなどの重要ファイル
  • 会員専用ページ
  • 開発中のステージング環境

セキュリティ上重要な場所や、限られたユーザーだけがアクセスする場所は、IPアドレス制限で保護するのが効果的だ。

IPアドレス制限を設定する前の準備

自分のIPアドレスを確認する

IPアドレス制限を設定する前に、まず自分のIPアドレスを確認しておく必要がある。これを間違えると、自分まで締め出されてしまうからね。

確認方法:

ブラウザで以下のようなサイトにアクセスすると、現在のIPアドレスが表示される:

  • https://www.cman.jp/network/support/go_access.cgi
  • https://www.whatismyip.com/

例えば、「203.0.113.25」のような数字が表示される。これがあなたの現在のIPアドレスだ。

複数の場所からアクセスする場合:

オフィスと自宅の両方から管理画面にアクセスするなら、それぞれの場所でIPアドレスを確認する必要がある。場所が違えば、通常IPアドレスも違うからね。

固定IPと動的IPの違い

IPアドレスには、固定IPと動的IPの2種類がある。これを理解しておかないと、後で困ることになる。

固定IP:

いつも同じIPアドレスが割り当てられる。オフィスや会社の専用回線だと、固定IPのことが多い。固定IPなら、IPアドレス制限との相性は最高だ。一度設定すれば、ずっと使い続けられる。

動的IP:

接続するたびにIPアドレスが変わる可能性がある。一般家庭の回線や、モバイル回線はこっちが多い。動的IPだと、IPアドレス制限の管理が少し面倒になるんだ。

確認方法:

プロバイダの契約内容を確認するか、数日おきにIPアドレスをチェックしてみる。変わらなければ、実質的に固定IPと考えていいだろう。

動的IPの場合の対策:

もし動的IPで頻繁に変わるなら、以下の対策がある:

  1. IPアドレスの範囲で許可する(後述)
  2. VPNサービスを使って固定IPを取得する
  3. 管理画面だけは固定IPのオフィスからアクセスする運用にする

僕の場合、自宅は動的IPだけど、実際には数ヶ月変わらないことが多い。だから定期的にチェックして、変わったら設定を更新するようにしている。

バックアップとFTPアクセスの確保

IPアドレス制限の設定を間違えると、自分も管理画面にアクセスできなくなる可能性がある。だから、必ず以下を準備しておこう:

1. FTPアクセス情報の確認

.htaccessファイルを編集することになるから、FTPでサーバーにアクセスできるようにしておく。FTPソフト(FileZillaなど)と、アクセス情報(ホスト名、ユーザー名、パスワード)を準備しよう。

2. 現在の.htaccessのバックアップ

設定を変更する前に、必ず既存の.htaccessファイルをバックアップする。何かあった時に、すぐ元に戻せるようにするためだ。

3. サーバー管理画面へのアクセス

レンタルサーバーの管理画面(cPanelなど)にアクセスできることを確認しておく。最悪の場合、ここからファイルを編集できるからね。

.htaccessでIPアドレス制限を設定する

管理画面全体を制限する基本設定

最も一般的なのは、WordPressの管理画面全体にIPアドレス制限をかける方法だ。/wp-admin/ディレクトリに.htaccessファイルを作成または編集する。

手順:

  1. FTPソフトで、WordPressがインストールされているディレクトリにアクセス
  2. /wp-admin/フォルダに移動
  3. .htaccessファイルがあれば編集、なければ新規作成

基本的な設定例:

# 管理画面へのアクセスを特定のIPアドレスのみに制限
<Files "admin-ajax.php">
    Order allow,deny
    Allow from all
</Files>

Order deny,allow
Deny from all
# 許可するIPアドレスを記述
Allow from 203.0.113.25
Allow from 198.51.100.50

この設定で、203.0.113.25と198.51.100.50からのアクセスだけが許可される。それ以外のIPアドレスからアクセスしようとすると、403エラーが表示されるんだ。

admin-ajax.phpの例外処理について:

最初の<Files "admin-ajax.php">の部分は重要だ。admin-ajax.phpは、WordPressがAjax通信に使うファイルで、フロントエンドからもアクセスされることがある。これを制限してしまうと、サイトの一部機能が動かなくなる可能性がある。だから、このファイルだけは例外にしているんだ。

ログインページだけを制限する

管理画面全体を制限するのは厳しすぎる、という場合は、ログインページだけを制限する方法もある。

WordPressのルートディレクトリ(wp-config.phpがある場所)の.htaccessファイルに、以下を追加する:

# wp-login.phpへのアクセス制限
<Files wp-login.php>
    Order deny,allow
    Deny from all
    Allow from 203.0.113.25
    Allow from 198.51.100.50
</Files>

これで、ログインページへのアクセスだけが制限される。管理画面にログインした後は、通常通り使えるんだ。

ただし、ログインページを制限しても、管理画面のURLを直接知っている攻撃者はアクセスを試みることができる。完全な防御にはならないけど、ブルートフォース攻撃の大半は防げる。

複数のIPアドレスを許可する

チームで運用している場合や、複数の場所からアクセスする必要がある場合は、複数のIPアドレスを許可リストに追加する。

Order deny,allow
Deny from all
# オフィス
Allow from 203.0.113.25
# 自宅
Allow from 198.51.100.50
# リモートワーク用VPN
Allow from 192.0.2.100
# クライアント先
Allow from 198.51.100.75

コメント(#で始まる行)を入れておくと、後で見た時に分かりやすい。どのIPアドレスが誰のものか、メモしておくことをおすすめする。

IPアドレスの範囲で許可する

会社のネットワークなど、特定の範囲のIPアドレスをまとめて許可したい場合は、CIDR表記を使う。

Order deny,allow
Deny from all
# 203.0.113.0 から 203.0.113.255 までを許可
Allow from 203.0.113.0/24

「/24」は、最後の8ビット(0$301C255)が変動することを意味する。つまり、203.0.113.0から203.0.113.255までの256個のIPアドレスが許可される。

他の範囲指定の例:

# 203.0.113.0 から 203.0.113.127 まで(128個)
Allow from 203.0.113.0/25

# 203.0.113.0 から 203.0.113.15 まで(16個)
Allow from 203.0.113.0/28

企業のネットワークや、VPNサービスのIPアドレス範囲を許可する時に便利だ。

Nginxでの設定方法

Nginxの設定ファイルの場所

Apacheではなく、Nginxを使っているサーバーもある。Nginxの場合は、.htaccessではなく、Nginx自体の設定ファイルを編集する必要があるんだ。

一般的な設定ファイルの場所:

# メインの設定ファイル
/etc/nginx/nginx.conf

# サイトごとの設定ファイル
/etc/nginx/sites-available/default
/etc/nginx/conf.d/example.com.conf

サーバー環境によって場所が違うから、まずは自分のサーバーの設定ファイルがどこにあるか確認しよう。レンタルサーバーの場合は、サポートに問い合わせるのが確実だ。

管理画面のIPアドレス制限

Nginxで管理画面にIPアドレス制限をかける場合、location ディレクティブを使う。

# wp-adminへのアクセス制限
location /wp-admin/ {
    # 許可するIPアドレス
    allow 203.0.113.25;
    allow 198.51.100.50;
    # それ以外は拒否
    deny all;

    # PHP処理
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
}

# admin-ajax.phpは例外(すべてのIPを許可)
location = /wp-admin/admin-ajax.php {
    allow all;
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

Nginxの設定は、Apacheよりも少し複雑に見えるかもしれない。でも、基本的な考え方は同じだ。allowで許可して、deny allでそれ以外を拒否する。

ログインページの制限

ログインページだけを制限する場合:

# wp-login.phpへのアクセス制限
location = /wp-login.php {
    allow 203.0.113.25;
    allow 198.51.100.50;
    deny all;

    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

location = を使うことで、正確にそのファイルだけに適用される。location ~ だと正規表現でのマッチングになるから、使い分けが必要だ。

設定の反映方法

Nginxの設定を変更したら、必ず構文チェックをしてから反映させる。設定ミスがあると、サイト全体が停止してしまうからね。

# 構文チェック
sudo nginx -t

# 問題がなければ、設定を反映
sudo systemctl reload nginx
# または
sudo service nginx reload

「syntax is ok」と表示されれば、設定ファイルに問題はない。それを確認してから、リロードするんだ。

プラグインを使った柔軟なアクセス制御

WP Limit Login Attemptsでの設定

.htaccessやNginxの設定が難しい場合、プラグインを使う方法もある。「WP Limit Login Attempts」というプラグインは、ログイン試行回数の制限に加えて、IPアドレスのホワイトリスト機能も持っているんだ。

設定手順:

  1. WordPress管理画面から「プラグイン」→「新規追加」
  2. 「WP Limit Login Attempts」を検索してインストール
  3. 有効化後、「設定」→「Login Attempts」から設定画面を開く

ホワイトリストの設定:

設定画面の「Whitelist」タブで、許可するIPアドレスを追加できる。ここに登録したIPアドレスは、ログイン試行回数の制限を受けず、常にアクセスできる。

プラグインの利点は、管理画面から簡単に設定できることだ。でも、プラグインはWordPressレベルでの制限だから、サーバーレベルでの制限(.htaccessやNginx)ほど強力ではない。

Wordfence Securityでの設定

Wordfenceは総合的なセキュリティプラグインで、ファイアウォール機能の一部としてIPアドレス制限も提供している。

設定方法:

  1. Wordfenceをインストールして有効化
  2. 「Wordfence」→「Firewall」→「Manage Firewall」
  3. 「Allow IPs」タブで許可するIPアドレスを追加

Wordfenceの強みは、リアルタイムでの脅威検知と組み合わせられることだ。IPアドレス制限だけでなく、マルウェアスキャンやブルートフォース保護も同時に設定できる。

ただし、Wordfenceは動作が重いという声もある。小規模なサイトや、サーバーリソースに余裕がない場合は、軽量な専門プラグインの方がいいかもしれない。

All In One WP Security & Firewall

「All In One WP Security & Firewall」も、使いやすいセキュリティプラグインだ。UIが分かりやすくて、初心者にもおすすめできる。

IPアドレス制限の設定:

  1. プラグインをインストールして有効化
  2. 「WP Security」→「Firewall」→「Internet Bots」
  3. 「IP or User Agent Blacklist」でブロックしたいIPを登録
  4. または「Whitelist」で許可リストを管理

このプラグインは、ブラックリスト(ブロックしたいIP)とホワイトリスト(許可したいIP)の両方を管理できる。攻撃者のIPアドレスを見つけたら、すぐにブラックリストに追加できるんだ。

プラグインの限界を理解する

プラグインは便利だけど、いくつか限界がある:

  1. WordPressが動作しないと機能しない
  2. サーバーレベルの制限よりも処理が遅い
  3. プラグイン自体が脆弱性の原因になることもある
  4. 複数のセキュリティプラグインを入れると競合する可能性がある

だから僕は、重要な部分(管理画面など)はサーバーレベルで制限して、それ以外の細かい制御にプラグインを使う、という使い分けをしているんだ。

実運用での注意点とトラブルシューティング

自分をロックアウトしてしまった場合

IPアドレス制限で最も怖いのは、自分まで締め出してしまうことだ。でも、落ち着いて対処すれば大丈夫。

対処法1: FTPで.htaccessを削除または編集

FTPソフトでサーバーにアクセスして、問題のある.htaccessファイルを削除するか、編集して正しいIPアドレスに修正する。これが最も確実な方法だ。

対処法2: サーバー管理画面から編集

レンタルサーバーの管理画面(cPanelなど)からファイルマネージャーを開いて、.htaccessを編集できる場合がある。

対処法3: サポートに連絡

どうしても解決できない場合は、サーバー会社のサポートに連絡しよう。状況を説明すれば、.htaccessファイルの削除や修正を手伝ってくれるはずだ。

予防策:

  • 必ずバックアップを取ってから設定変更する
  • 最初は1つのIPアドレスだけ許可して、動作確認してから追加する
  • 複数の接続手段(FTP、SSH、サーバー管理画面)を確保しておく

IPアドレスが変わった時の対処

動的IPを使っている場合、IPアドレスが変わることがある。そうなると、突然管理画面にアクセスできなくなるんだ。

事前の対策:

定期的に自分のIPアドレスをチェックして、変わっていたら.htaccessも更新する。週に1回程度チェックすれば、急に困ることは少ないはずだ。

変わってしまった場合:

FTPや別の接続手段で.htaccessを編集して、新しいIPアドレスを追加する。または、一時的にIPアドレス制限を無効にして、アクセスできるようにする。

固定IPサービスの検討:

頻繁にIPアドレスが変わって面倒なら、VPNサービスなどで固定IPを取得することも検討しよう。月額数百円から使えるサービスもあるから、運用の手間を考えれば価値はあると思う。

チームでの運用と管理

複数人で管理する場合、誰のIPアドレスが登録されているか把握しておく必要がある。

管理方法:

.htaccessにコメントで記録しておく:

Order deny,allow
Deny from all
# 田中(オフィス) - 2025/01/15登録
Allow from 203.0.113.25
# 佐藤(自宅) - 2025/01/20登録
Allow from 198.51.100.50
# 鈴木(リモート) - 2025/02/01登録
Allow from 192.0.2.100

メンバーが増減したら、すぐに.htaccessを更新する。退職者のIPアドレスは、必ず削除しておこう。

ログで効果を確認する

IPアドレス制限を設定したら、実際に機能しているか確認しておきたい。サーバーのアクセスログを見れば、ブロックされたアクセスが記録されている。

# 403エラー(アクセス拒否)のログを確認
$ grep " 403 " /var/log/apache2/access.log | grep wp-admin

403エラーが記録されていれば、IPアドレス制限が正常に動作している証拠だ。不正なアクセス試行がブロックされているんだよね。

逆に、自分がアクセスできているかも確認しよう。自分のIPアドレスからのアクセスが、200(成功)で記録されていればOKだ。

よくある質問(FAQ)

Q1: IPアドレス制限だけで十分なセキュリティ対策になる?

いや、残念ながらそうじゃない。IPアドレス制限は強力な防御手段だけど、これだけで完璧とは言えないんだ。

総合的なセキュリティには、以下も必要だ:

  • WordPress本体、プラグイン、テーマの定期的な更新
  • 強固なパスワードと二要素認証
  • 定期的なバックアップ
  • SSL/TLSの導入
  • ファイアウォールの設定

IPアドレス制限は、管理画面という「重要な入口」を守る手段だ。これと他の対策を組み合わせることで、堅牢なセキュリティが実現できる。

Q2: モバイル回線からアクセスしたい場合は?

モバイル回線のIPアドレスは、頻繁に変わるから、IPアドレス制限との相性は悪い。でも、いくつか解決策がある:

方法1: VPNを使う

VPNアプリを使って、固定IPのサーバー経由でアクセスする。NordVPNやExpressVPNなど、専用IPオプションを提供しているサービスもあるんだ。

方法2: 特定のアクション以外は制限しない

ログインページだけIPアドレス制限して、ログイン後の管理画面は制限しない。もしくは、重要な設定変更ができるページだけ制限する。

方法3: 別の認証手段を追加

モバイルからアクセスする時だけ、二要素認証やBasic認証を使う。IPアドレス制限ほど強力じゃないけど、一定の保護にはなる。

Q3: 社外からアクセスする必要がある時は?

リモートワークや出張で、登録していない場所からアクセスする必要が出ることもあるよね。

一時的な対処法:

  1. FTPでアクセスできるなら、その場のIPアドレスを一時的に.htaccessに追加
  2. 信頼できる人に依頼して、IPアドレスを追加してもらう
  3. VPNを使って、登録済みのIPアドレスからアクセス

事前の対策:

  • 複数の場所のIPアドレスを予め登録しておく
  • VPNサービスを契約して、固定IPを確保しておく
  • IP制限を無効にする緊急用の.htaccessファイルを準備しておく

僕は、緊急用に「IP制限なし」バージョンの.htaccessを別名で保存している。いざという時は、FTPでファイル名を変更すれば、すぐ制限を解除できるんだ。

Q4: 間違って自分のIPをブロックしてしまった。どうすればいい?

まず、落ち着こう。必ず解決策はある。

対処手順:

  1. FTPでアクセス: FTPソフトを起動して、サーバーに接続する
  2. .htaccessを探す: /wp-admin/ディレクトリの.htaccessファイルを見つける
  3. 編集または削除:
  • 自分のIPアドレスを追加するか
  • 一時的にファイルを削除して制限を解除する
  1. 動作確認: 管理画面にアクセスできるか確認
  2. 再設定: 正しい設定に修正する

FTPも使えない状況なら、サーバー会社のサポートに連絡するしかない。でも、ほとんどの場合はFTPで解決できるはずだ。

Q5: クライアントのIPアドレスを教えてもらう時の注意点は?

制作案件で、クライアントのIPアドレスを登録する場合、いくつか確認すべきことがある。

確認ポイント:

  1. 固定IPかどうか: 「IPアドレスは固定ですか?」と直接聞く
  2. 複数の拠点: オフィスが複数ある場合、全ての拠点のIPアドレスが必要
  3. リモートワーク: 在宅勤務者がいる場合、その対応をどうするか
  4. 将来の変更: IPアドレスが変わる可能性と、その際の連絡フローを確認

説明のコツ:

技術的な話が分からないクライアントには、「会社の住所みたいなもので、それを登録することで、会社からしかアクセスできない仕組みにします」と説明すると伝わりやすい。

そして、「IPアドレスが変わったら教えてください」と必ず伝えておく。連絡がないと、ある日突然アクセスできなくなって、慌てて連絡が来ることになるからね。

まとめ: シンプルで強力な防御手段として

IPアドレス制限は、設定こそ少し手間がかかるけど、一度設定すれば非常に強力なセキュリティ対策になる。サーバーレベルで不正アクセスを遮断できるから、攻撃者は管理画面にたどり着くことすらできない。

この記事のポイント:

  • IPアドレス制限は、管理画面への不正アクセスを根本的に防ぐ
  • .htaccessやNginxの設定で、サーバーレベルで制限できる
  • 固定IPとの組み合わせが理想的だが、動的IPでも工夫次第で運用可能
  • プラグインを使った柔軟な制御も可能
  • 自分をロックアウトしないよう、バックアップとFTPアクセスを確保する

セキュリティ対策は、一つの方法だけで完璧になることはない。でも、IPアドレス制限は、特に重要な「入口」を守る手段として、非常に効果的だ。

管理画面やログインページへの不正アクセスに悩んでいるなら、まずはIPアドレス制限を試してみてほしい。設定後、ログを見れば、どれだけの攻撃をブロックできているか実感できるはずだ。あなたのWordPressサイトを、少しでも安全に保つために、今日から始めてみよう。


WordPressのセキュリティ、不安に思っていませんか?

WordPressセキュリティ診断

「自分のサイトは大丈夫だろうか…」
「何から手をつければいいか分からない…」

もしあなたが少しでもそう感じているなら、専門家によるセキュリティ診断を受けてみることを強くお勧めします。

>> WordPressセキュリティ無料診断はこちら

上記のサイトでは、WordPressのプロがあなたのサイトの脆弱性を無料で診断してくれます。問題が見つかれば、具体的な対策方法についてもアドバイスをもらえます。手遅れになる前に、一度プロの目でチェックしてもらい、安心を手に入れましょう。

お気軽にご相談ください

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