WordPress Tips | セキュリティ:.htaccess で管理URLへのIP制限

web Web
スポンサーリンク

管理URLへのIP制限って、ざっくり言うと何をするのか

「.htaccess で管理URLへのIP制限」というのは、
WordPress の管理画面(例:/wp-admin//wp-login.php)にアクセスできる人を、
「特定のIPアドレスから来た人だけ」に絞り込む仕組みです。

もっとラフに言うと、

このIPから来た人だけ、管理画面のドアを開けていい
それ以外のIPから来た人は、そもそもドアの前に立つことすら許さない

という“門番”を、Webサーバー(Apache)のレベルで置くイメージです。

WordPress のログインIDやパスワードよりも前の段階で、
「そもそもここに近づけるかどうか」をIPアドレスで制御する——これがポイントです。


なぜIP制限がセキュリティ的にめちゃくちゃ強いのか

ログイン画面そのものを「ほぼ非公開」にできる

通常、https://example.com/wp-login.php は、
世界中の誰からでもアクセスできます。

だからこそ、ボットや攻撃者は、

とりあえず /wp-login.php を叩く
ユーザー名とパスワードを総当たりする

という攻撃を、機械的にガンガン投げてきます。

ここにIP制限をかけると、

自分のIP(例:自宅回線、会社の固定IP)からのアクセスだけ許可
それ以外のIPからのアクセスは、403 Forbidden などで即拒否

という状態にできます。

つまり、攻撃者からすると、

ログイン画面にすらたどり着けない
=パスワードを試すステージに入れない

という状況になります。
これは、パスワード強化や2段階認証とは別軸の、非常に強力な防御です。

「ID・パスワード以前の防御レイヤー」を作れる

通常のログイン防御は、

強力なパスワード
2段階認証
ログイン試行回数制限

といった「認証の中身」を固くするアプローチです。

IP制限はそれより前の段階で、

そもそもログイン画面に来られる人を限定する

という、防御レイヤーを一枚追加するイメージです。

プログラミングで言えば、

アプリケーションの認証ロジックの前に
ファイアウォール的なフィルターを置く

という設計に近いです。


.htaccess でのIP制限のイメージ(Apache 前提)

管理URLに対して「このIPだけ許可、それ以外は拒否」と書く

Apache 環境では、.htaccess にルールを書くことで、
特定のパスへのアクセスをIPアドレスで制御できます。

例えば、/wp-admin/ 以下に対してIP制限をかけるイメージは、こんな感じです。

<Directory "/path/to/your/wp-admin">
    Order deny,allow
    Deny from all
    Allow from 123.45.67.89
</Directory>
Apache

あるいは、.htaccess 側でパスベースで書く場合は、こういう形もあります。

<FilesMatch "^(wp-login\.php)$">
    Order deny,allow
    Deny from all
    Allow from 123.45.67.89
</FilesMatch>
Apache

ここで重要なのは、考え方です。

基本ルールは「全部拒否(Deny from all)」
そのうえで「このIPだけは例外的に許可(Allow from xxx.xxx.xxx.xxx)」

という順番で書くことで、
「許可したIP以外は、管理URLに触れない」状態を作ります。

複数のIPからアクセスしたい場合のイメージ

自宅と会社の両方から管理画面に入りたい、というケースもあります。

その場合は、Allow を複数行書くイメージです。

Deny from all
Allow from 123.45.67.89
Allow from 98.76.54.32
Apache

これで、

123.45.67.89(自宅)
98.76.54.32(会社)

からのアクセスだけが、管理URLに到達できるようになります。


例題:IP制限あり・なしで何が変わるか

制限なしの場合

https://example.com/wp-login.php に対して、

世界中のIPからアクセス可能
ボットが1秒間に何回もログイン試行を投げてくる
ログイン試行回数制限や2FAが常にフル稼働

という状態になります。

ログやサーバー負荷も、
「攻撃トラフィック」が常に混ざった状態になります。

IP制限ありの場合

https://example.com/wp-login.php に対して、

自分が許可したIPからのアクセスだけが通る
それ以外のIPは、そもそも403などで弾かれる
ボットの大半はログイン画面にすら到達できない

という状態になります。

結果として、

ログイン攻撃のログがほぼ消える
ログイン試行回数制限プラグインの出番も激減する
「怪しいアクセス」があったときにログから見つけやすくなる

という、セキュリティと運用の両面でのメリットが出てきます。


重要ポイント:IP制限には「運用上の注意」がある

固定IPかどうかが超重要

IP制限は強力ですが、
「自分のIPがコロコロ変わる環境」だと、かなり扱いが難しくなります。

例えば、

自宅回線が固定IPではない
モバイル回線(4G/5G)から管理画面に入りたい

といった場合、
IPが変わるたびに .htaccess を書き換える必要が出てきます。

最悪なのは、

IPが変わった
→ 自分自身が管理画面に入れなくなる

というパターンです。

なので、

会社や自宅に固定IPがある
VPN 経由で固定IPからアクセスできる

といった環境がある場合に、特に相性が良い対策です。

緊急時の「裏口」をどうするかも考えておく

もしIP制限をかけた状態で、

許可しているIPからアクセスできなくなった
設定を間違えて全IPを弾いてしまった

といったことが起きると、
管理画面に入れなくなります。

そのときのために、

サーバーのコントロールパネルから .htaccess を編集できるか
FTP / SFTP で .htaccess を直接修正できるか

といった「緊急時の復旧ルート」を、
あらかじめ確保しておくことが大事です。


プログラミングの感覚で捉える「.htaccess で管理URLへのIP制限」

これは「アプリの前に立つファイアウォールルール」

アプリケーション側(WordPress)の認証ロジックは、

ユーザー名
パスワード
2FAコード

といった情報を見て、「この人を通すかどうか」を判断します。

一方、.htaccess によるIP制限は、

このIPアドレスからのリクエストは、そもそもアプリに渡さない

という、もっと手前のレイヤーでのフィルタリングです。

Webアプリで言えば、

管理用エンドポイントに対して
WAF やリバースプロキシでIP制限をかける

のと同じ発想です。

「攻撃を受けない」のではなく「攻撃の土俵に上げない」

セキュリティの発想として大事なのは、

攻撃されないようにする
ではなく
攻撃の土俵にすら上げさせない

という考え方です。

IP制限はまさにそれで、

ログイン画面を世界中に公開したまま守る
のではなく
そもそも世界中に公開しない

という方向の対策です。

これは、
強力なパスワードや2FAと組み合わせると、
「そもそも近づけないし、仮に近づけても突破しにくい」という二重の防御になります。


まとめ:IP制限は「管理画面を半分クローズドにする」強力な一手

「.htaccess で管理URLへのIP制限」というのは、

管理画面にアクセスできるIPを限定する
=ログイン画面そのものを“ほぼ非公開”にする

という、とても強力なセキュリティ強化です。

ただし、

固定IPがあるか
自分がロックアウトされたときに復旧できるか

といった運用面の条件も絡むので、
「入れれば誰でも便利」という類の設定ではありません。

もしあなたが、

自宅や会社に固定IPがある
FTP やサーバーパネルで .htaccess を触れる

という環境にいるなら、
このIP制限は「本気でセキュリティを上げたい人向けの一段上の設定」です。

一度、自分のアクセス環境を整理して、
「管理画面をIPで絞る」という選択肢が取れるかどうか、エンジニア目線で検討してみてください。

Web
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました