WordPressの管理画面へのアクセスをIPアドレスで制限する

WordPressで運営していると実に多くの攻撃を受けます。

大半の攻撃はログインを試すブルートフォース攻撃と呼ばれるものです。この攻撃は十分長く複雑なパスワードを設定していれば突破される可能性は極めて低いのですが、それでも絶対という事はありません。

また、何らかの脆弱(ぜいじゃく)性を突かれて認証を突破したり認証を迂回(うかい)されたりする可能性もあります。

そのような事態に備えて、弊社ではWordPressの管理画面(/wp-admin/ 配下)へのアクセス制限を行っています。

アクセス制限はIPアドレスを使い、許可されていないIPアドレスからのアクセスを拒否しています。

この方法は非常に簡単に実現できます。

特定のディレクトリでIPアドレスによるアクセス制限をする

「.htaccess」はディレクトリ単位でWEBサーバーを制御するためのファイルで、古くからApacheというWEBサーバーで利用されています。

エックスサーバーはNginxで運用されていますが「.htaccess」でアクセス制限が可能です。

.htaccessを使うとIPアドレスによるアクセス制限ができるようになります。

.htaccess
order deny,allow
deny from all
allow from rentalserverz.com
allow from 1.2.3.123
allow from 1.2.3.

最初に、次の2行ですべての通信を拒否しています。

order deny,allow

deny from all

続けて「allow from」で許可したいホスト名やIPアドレスを記述します。この行は複数記述できます。

ホスト名で指定したい場合は「allow from ホスト名」という形式で記述します。

allow from rentalserverz.com

IPアドレスで指定する場合は「allow from IPアドレス」という形式で記述します。

allow from 1.2.3.123

IPアドレスの箇所は部分一致で指定できるので次のようにすると1.2.3.???にマッチします。

allow from 1.2.3.

どこにファイルを設定するか

.htaccessを配置すると、そのディレクトリ配下すべてに影響します。

弊社が利用しているエックスサーバーの場合「/home/ユーザー名/ドメイン名/public_html/wp-admin」となります。

ファイルを配置する方法は複数あります。

  • SSHでサーバーにリモートログインして直接ファイルを作成する
  • ローカルで.htacceessを作成してSFTPで転送する
  • ローカルで.htacceessを作成してFTPで転送する

SSHでサーバーにログインする

レンタルサーバーの場合、SSHでリモートログインを許可しているのか確認しておく必要があります。

エックスサーバーの場合はサーバーパネルにログインして左側のメニューにある[SSH設定]からSSHを有効化しておきます。

ログインする際はポート番号が通常の22番ではなく10022番になるので注意してください。Linuxコマンドに慣れていない場合はSSHでサーバーログインする方法はトラブルの原因になりますので、別の方法を検討した方が良いでしょう。

SSHを有効化する

SFTPでファイルを転送する

SFTPはSSHでファイルを転送するので、SSHが使える状態にしておく必要があります。

Windowsを利用している方はWinSCPが使いやすいでしょう。

FTPでファイルを転送する

FTPは古くからあるファイル転送方式です。認証情報やデータを暗号化しないのでセキュリティー的にはおすすめしません。

FTPを使う場合、Windows環境ではFFFTPが古くから利用されています。

アクセス制限できているか確認する

設定したら必ず動作チェックしましょう。

まずWEBサイトのトップページにアクセスして問題なく表示されることを確認します。次にアクセス制限したいページにアクセスしてみて許可している送信元であれば問題なく表示され、許可していない送信元であればエラーが発生することを確認します。

WEBではアクセス許可がない場合に「403エラー」が発生します。エックスサーバーの場合、次のようなエラー画面が表示されます。

エックスサーバーのエラー画面

固定IPアドレスを手に入れる

IPアドレスでWordPressへのログイン制限をおこなうためには、自分専用の固定IPアドレスを手に入れる必要があります。

固定IPアドレスを提供するISPを利用されている方であれば簡単にIPアドレスで制限できますが、わたしを含めIPアドレスが固定されていない場合はIPアドレスでの制限が難しくなります。

そのため、弊社ではVPNを使って固定IPアドレスを利用しています。

VPNを利用するメリットは、自宅やオフィスだけでなく外出先やスマホでも同じIPアドレスを使えるためIPアドレスの制限が非常に簡単になる点です。

VPNは個人向けから法人向けまでさまざまありますが、弊社ではWindowsやMac、iPhone、AndroidだけでなくLinuxでも同じGUIアプリを提供していて価格が安いPrivate Internet Accessというサービスを利用しています。

VPNを使った固定IPサービスに興味がある方は以下の記事が参考になるのでご覧になってみてください。

.htaccessの所有者とパーミッションに注意

レンタルサーバーの場合は.htaccessの所有者とパーミッションに注意が必要です。

たとえばエックスサーバーの場合、.htaccessを作成するとファイルの所有者は利用者自身です。これは当然ですが、PHPの実行権限も利用者自身なので、もしもOSコマンドインジェクションのような脆弱性がある場合は.htaccessを書き換えられてしまう危険性があります。

レンタルサーバーの場合は、OSコマンドインジェクションの脆弱性があると.htaccessを含めファイルを自由に書き換えられてしまう危険性があるという点に注意してください。

レンタルサーバーの場合はPHPなどのプロセスの実行ユーザーを確認しておいた方が良い

まとめ

.htaccessを使ったアクセス制限の方法を解説しました。

WordPressは攻撃者から狙われやすいため、大切なブログやWEBサイトを守るためにもアクセス制限をしてセキュリティーレベルを高めることをおすすめします。

ファイルを配置するだけですので、固定IPアドレスが使える環境にあればぜひ試してみてください。