WordPressのログイン・管理画面へのアクセスを制限する方法

投稿者 : OSCA

[PR] "東野・岡村の旅猿"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

 WordPress では管理画面にアクセスする場合に、管理者アカウントでのログインが必要になります。 その際にアクセスするログイン画面のURLは /wp-login.php です。 また管理画面は /wp-admin/ のディレクトリ配下です。 セキュリティの観点において、本来秘密にしたい画面のURLがバレているという状態はよろしくありません。 あなたのホームページが WordPress でできている事を気づかれてしまった場合、容易に WordPress の管理者用ログイン画面にアクセスされてしまいます。

 WordPress はパッケージソフトウェアですので、ログイン画面のURLを変更することは容易ではありません。 また、WordPress のセキュリティアップデートがリリースされた際にアップデートすることを考えると、WordPress 本体に手を入れることは望ましくありません。 このことから、ログイン画面や管理画面のURLを変更するというような考えは捨て、ログイン画面・管理画面にアクセスできるクライアントを制限することを考えた方が良いでしょう。

アクセス制限方法

 WordPress の管理画面へのアクセスを制限する方法としては、次のような方法があります。

  1. IPアドレス制限
  2. クライアント証明書認証
  3. 基本認証/ダイジェスト認証

 本稿では「IPアドレス制限」「クライアント証明書認証」「基本認証/ダイジェスト認証」の順に推奨します。 それぞれについて概要を説明します。

IPアドレス制限

 WordPress の管理者ログイン画面・管理画面へアクセスできるクライアントを、接続元IPアドレスを用いて制限する方法です。 このIPアドレス制限により、特定のネットワークからのアクセスでしか画面を見れないようにできます。

 ただし、IPアドレス制限はアクセス元となるクライアントのIPアドレスがはっきり分かっている(固定である)場合に利用できる制限手段です。 例えばあなたの会社が固定のグローバルIPアドレスを利用しており、管理画面へは会社からしかアクセスしないというような場合に有効です。 逆に、携帯電話のアクセス網や、頻繁にグローバルIPアドレスが変化するコンシューマ向けプロバイダからアクセスしたい場合は、アクセスを許可するIPアドレスが固定されないため、IPアドレス制限を導入するのは難しいと言えます。

 IPアドレス制限をする場合の具体的な方法については、次の記事を参考にしてください。

クライアント証明書認証

 IPアドレス制限をかけることが難しい場合は、クライアント証明書認証の導入を考えるのが良いでしょう。 クライアント証明書は、接続元であるクライアントPCが本物(許可されたもの)であるかどうかを確認するための証明書です。 本稿の目的においては「ブラウザに指定されたクライアント証明書がインストールされている人だけアクセスを許可する」ことができます。 次のような手順で導入できます。

  1. サーバー管理者が、クライアント証明書を発行する。
  2. 1で発行したクライアント証明書を、管理画面へのアクセスを許可するブログ運営管理者に配布する。
  3. ブログ運営管理者は、利用するブラウザに2で配布されたクライアント証明書をインストールする。

 この手順により、クライアント証明書をブラウザにインストールしたブログ運営管理者だけが WordPress の管理画面にアクセスできるようになります。 逆にクライアント証明書をインストールしていないブラウザは、管理画面にアクセスできません。 クライアント証明書が不本意に流出しない限り安全と言えるアクセス制限の方法です。

 クライアント証明書はSSL証明書を発行するような企業から購入することもできますし、組織内だけでの利用であれば自身で発行した証明書(いわゆるオレオレ証明書)を利用することもできます。

基本認証/ダイジェスト認証

 IPアドレス制限もクライアント証明書認証も導入できない場合の方法として、基本認証(ベーシック認証)およびダイジェスト認証を導入する方法が考えらえます。 ログイン画面や管理画面にアクセスしようとした際に、WordPressのログインとは別にブラウザのダイアログでアカウントとパスワードを要求します。 ただしこの制限方法は気休めでしかないと筆者は考えます。

 基本認証やダイジェスト認証では、ログイン画面や管理画面にアクセスしようとした際に表示されるダイアログは、ダイアログ認証の先に守りたい何らかのページがあることを知らせているようなものです。 またこのダイアログ認証は何度でもチャレンジできてしまいますので、総当たり攻撃を受けるかも知れません。 できる限り上記の「IPアドレス制限」「クライアント証明書認証」の導入をしたいところです。

レンタルサーバーで設定する場合の考察

 WordPress を、さくらのレンタルサーバーやロリポップなどの共用レンタルサーバーなどで運用している方も多いかと思います。 そのような場合、上記のアクセス制限をかけることはできるのでしょうか?

 多くの共用レンタルサーバーでは、WEBサーバーとして Apache httpd を利用していることが多いかと思いますが、Apache そのものの設定ファイルを変更することはほぼできないでしょう。 また SSH などでサーバーにログインすることも難しいと思います。 そう考えると「クライアント証明書認証」を導入するのは、ほぼ無理だと思います。

 そうすると「IPアドレス制限」でアクセスを制限したいところですが、その場合 .htaccess が利用できることと、.htaccess でIPアドレス制限をかけることをレンタルサーバー業者によって許可されているかが確認ポイントとなります。 .htaccess の仕様が許可されていなければ、アクセス制限の設定をすることは難しいでしょう。

 基本認証およびダイジェスト認証についても、.htaccess で設定できるかを確認する必要があるでしょう。 .htaccess で設定が可能な場合は、.htaccess に合わせてパスワードファイルを設置する必要があるかと思いますが、サーバー上でパスワードファイルの作成が難しい場合は、別途何かしらの方法でパスワードを作る必要があります。

おわりに

 本稿では WordPress のログイン・管理画面へのアクセスを制限する方法について解説しました。 お使いのサーバーに合わせてどの方法が利用できるかを確認した上で導入を検討してください。

WordPressのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca