Wordpressの管理画面、およびログイン画面のそれぞれにIPアドレスでアクセス制限をかける方法をまとめました。
サーバー上の.htaccessを使って自分が使用している回線以外のIPアドレスを全てシャットアウトしておけば、管理画面への不正ログインを効果的に防げます。
この記事では管理画面へのログインに使用される「wp-login.php」をはじめとした、重要なファイルをIP制限してセキュリティを高める方法を解説します。
wp-login.php、およびwp-adminフォルダ全体にIP制限をかける方法です。
この記事の目次
WordPressの管理画面やログイン画面にIP制限をかける
WordPressは世界的に人気のCMSということで、ハッカーの的になっている今日ですが、皆さんセキュリティ強化はどの程度やっていますか?
デフォルトのままだと管理画面やログイン画面のURLは形式的で分かりやすいものになっており、尚且つ「ユーザー名orメールアドレス」と「パスワード」の2つを当てるだけで管理画面まで辿り着けてしまうので注意が必要です。
守り方は色々あるのですが、ここでは管理画面およびログイン画面へアクセスできるIPを制限し、自分以外のIPアドレスからのアクセスを禁止する方法をご紹介します。
最終的には上の画像のように、設定したIPアドレス以外のIPアドレスから管理画面やログイン画面にアクセスしようとすると拒否されるようになります。
ちなみにWordPressで管理画面やログイン画面を守る方法としては、
- ログインページのURLの変更
- Basic認証の導入
- 2段階ログイン認証の導入
などがありますが、IPアドレスの制限は上記の方法よりも効果的だと思います。
ポイント
サーバー上の「.htaccess」を使ってIP制限を設定します。
初心者の方にもできるだけ分かりやすく書きました。(多分)
では早速参りましょう・w・
定番の文言ですが、作業の前に必ずバックアップを取って下さい。
ログイン画面にIPアドレス制限をかける方法
まずはWordpressのログイン画面にIP制限をかける方法です。
編集する「.hatccess」の場所は以下。(ほとんどの方はココにあるはず。)
サーバールートディレクトリ > public_html内にある.htaccess
FTPソフトや各レンタルサーバーの管理ツール等を使って「public_html」フォルダ内にある「.htaccess」にアクセスします。
ポイント
「.htaccess」は隠しファイルなので見えないことが多々あります。
はじめから存在するはずなので非表示ファイルの表示設定を確認して下さい。
なぜこの場所(public_html内)なのかというと、Wordpressのログイン画面に使用される「wp-login.php」というコアファイルがこのフォルダの中にあるからです。
この「wp-login.php」にIP制限を設定することでログイン画面にIP制限をかけます。
自分が使っている回線のIPアドレスの調べ方
.htaccessが編集できる状態になったら早速IP制限のコードを追記しましょう!
…と言いたいところですが、コードの前に普段自分が使っているインターネット回線のIPアドレスを調べておく必要があります。
自分が使っている回線のIPアドレスの調べ方ですが、オンラインサービスを使用して調べるのが手っ取り早いです。「IPアドレス 確認」と検索すればすぐに出ますが、以下のサイト様(↓)がお勧めです。
外部リンク
【IPアドレス確認サイト】
アクセス情報【使用中のIPアドレス確認】
xx.xx.xxx.xxxというのが現在自分が使用しているIPアドレスで、この後必要です。
.htaccessにコードを追記する(public_html内)
Wordpressのログイン画面にIPアドレスの制限をかけるためのコードが以下です。
<Files wp-login.php> Order deny,allow Deny from all Allow from xx.xx.xxx.xxx </Files>
※Allow fromの後に自分のIPアドレスを指定して下さい。
これを.htaccessの任意の場所(分からなければ先頭でOK)に追記して保存します。
FTPソフトを使うならコード追記後の.htaccessを同階層(public_html内)にアップロードして上書きすればOKです。
なお、ログイン画面にアクセスを許可したいIPアドレスを複数設定したい時は、以下のようにAllow fromの行を追加すれば対応できます。
<Files wp-login.php> Order deny,allow Deny from all Allow from xx.xx.xxx.xxx Allow from yy.yy.yyy.yyy </Files>
また契約回線によってはIPが完全に固定されないかもしれません。
この場合は「xx.xx」という風に先頭一致するIPアドレスを許可する形や、サブネットマスクでの指定などで対応して下さい…
指定方法やコードについては長くなるのでこれ以上は割愛させていただきます。
(それぞれ調べれば意味や使い方はすぐ出てきますので…)
ポイント
コード1行目の「wp-login.php」を変更すれば、ログインページのURLを変更している場合でも対応できます。
動作確認(ログインページ)
.htaccessにコードを追記して保存したら、早速動作確認しましょう。
自分以外のIPアドレスでアクセスできなければ成功です。
ここで同じ回線(IPアドレス)からアクセスしても普通にアクセス出来てしまうことにご注意を…そういう設定にしたので当たり前ですが。
作業しているパソコンではなく、モバイル回線(4Gなど)を使ったスマホでアクセスして確認してみて下さい。無事に403(アクセス拒否)が表示されればOKです。
これで自分が使っているIPアドレス以外のIPではログイン画面にアクセスすることができなくなりました!
何かおかしくなった時は先ほどのコードを消して再挑戦して下さいね。
管理画面にIPアドレス制限をかける方法
続いて、Wordpressの管理画面にIPアドレス制限をかける方法です。
編集する「.hatccess」の場所は以下。(元々存在しないので作る)
サーバールートディレクトリ > public_html > wp-admin内にある.htaccess
ログイン画面の時とやり方はほぼ同じですが、管理画面の場合は「wp-adminフォルダ」全体にIP制限を設定します。
IPアドレスによるアクセス制限が、ログイン画面の「wp-login.php」だけでなく、wp-adminフォルダ全体が対象になるでセキュリティがより強固になる…はず。
.htaccessを新規作成する
管理画面自体にIP制限をかけたい場合、wp-adminフォルダ内に.htaccessを設置する必要があります。
wp-adminフォルダ内には元々.htaccessが存在しないので、まずこれを作ります。
作る時は先頭に「.」を付けること。
ファイル名後の拡張子は付けないこと。に注意して下さい。
作成する.htaccessのコード(管理画面用)
管理画面にIP制限をかけるための.htaccessの中身は以下です。
Order deny,allow Deny from all Allow from xx.xx.xxx.xxx <FilesMatch "(admin-ajax.php)$"> Satisfy Any Order allow,deny Allow from all Deny from none </FilesMatch>
Allow from xx.xx.xxx.xxxに自分のIPアドレスを入れます。
admin-ajax.phpについてはIP制限をかけたいところなのですが、多くのプラグインが使用しているらしいので今回はIP制限の対象から外しています。
コードの後半部分がそのためのコードです。
ここでも長くなるので詳細は割愛。使えれば良いでしょう←
wp-admin内に.htaccessをアップロードする
.htaccessを作成したら「wp-admin」フォルダ内にアップロードします。
上の画像も参考にwp-admin内に新規作成した.htaccessをアップロードして下さい。
先ほどログイン画面にIP制限をかけた時とは設置個所も中身も異なる.htaccessです。
ややこしいので慣れていない方は混同しないように注意して下さい!
ポイント
.htaccessは設置されている階層以下のファイルに影響します。
その性質上.htaccessは複数存在し、中身がそれぞれ異なるのが一般的です。
動作確認(管理画面)
.htaccessをwp-adminフォルダ内にアップロードしたら、管理画面にIPアドレス制限が効いているかどうか確認しましょう。
ログイン画面にIP制限をかけていないなら、ログイン画面は普通に全てのIPアドレスからアクセスできます。
しかしユーザー名とパスワードを入力して管理画面にログインすると、ログイン情報が合っていても.htaccessで許可したIPアドレス以外は拒否されるようになります!
まとめ
以上、サーバー上の.htaccessを使用してWordPressのログイン画面、および管理画面にIPアドレスでのアクセス制限を設定する方法でした。
長くなりましたので、最後にこの記事のポイントを整理します。
- IPアドレス制限には.htaccessが使える。
- コードはアクセスを許可するIPアドレスのみをAllow fromの後に入れて使います。
- IP制限はログイン画面と管理画面、またはその両方に設定可能。
アクセス制限する場所と.htaccessの設置場所とファイルの対応表は以下です。
IP制限したい場所 | .htaccessの設置場所 | 対象ファイル |
ログイン画面 | public_html内 | wp-login.php |
管理画面 | public_html/wp-admin内 | adminフォルダ全体 |
ログインページのURLを変更してブルートフォースアタック(総当たり攻撃)の攻撃箇所を隠したうえで、更にログイン画面と管理画面にもIPでのアクセス制限をかけておけばセキュリティは結構高くなるかと思います…
管理者の住所が分からないから、IP偽装するのも難しそうだしね・w・