[WordPress] ログイン周りを改善してセキュリティを高める

WordPressは人気のあるCMSだけでに「WordPressアタック」と呼ばれるWordPressサイトを狙ったスパム攻撃も多くあります。
サイトを攻撃される前に対処しておくのが一番大事なのですが、今回はログイン周りのセキュリティを高めていきます。

ログインURLをwp-login.phpから変更する

まずはWordPress系の総当たりスパムが好んでアタックしてくる「wp-login.php」というURL自体をなくしてしまいます。

プラグインを使用すると簡単でいいんですが、裏でどんな作業をしているのかとか、プラグインのアップデートでどう挙動が変わるのかなどをトラッキングする手間がある分、PHPをある程度書ける人なら、function.phpに直接書く方法をオススメします。

プラグインを使用する場合

さくっと初心者でもできるのはプラグイン「SiteGuard WP Plugin」を使う方法です。

設定方法などは下記の記事を参考にしてください。
==>WordPressのログイン画面のURLをwp-loginから変更する

「SiteGuard WP Plugin」には、セキュリティに関する様々な機能が同梱されているので、ログインURLの変更以外でも利用できます。

機能 詳細
管理ページアクセス制限 ログインしていない接続元から管理ディレクトリ(/wp-admin/)を守ります。
ログインページ変更 ログインページ名を変更します。
画像認証 ログインページ、コメント投稿に画像認証を追加します。
ログイン詳細エラーメッセージの無効化 ログインエラー時の詳細なエラーメッセージに変えて、単一のメッセージを返します。
ログインロック ログイン失敗を繰り返す接続元を一定期間ロックします。
ログインアラート ログインがあったことを、メールで通知します。
フェールワンス 正しい入力を行っても、ログインを一回失敗します。
XMLRPC防御 XMLRPCの悪用を防ぎます。
更新通知 WordPress、プラグイン、テーマの更新を、メールで通知します。
WAFチューニングサポート WAF (SiteGuard Lite)の除外リストを作成します。

コードで対処する場合

function.phpに直接変更するプラグラム書く方法です

エス技研さんに素敵なコードが公開されています。そちらを参考にしてください。

海外からのアクセスを除外する

レンタルサーバーでWordPressの簡易インストールに対応しているサーバーには、「海外からの管理画面へのアクセス禁止」という項目があることが多いので、ある場合はそちらで設定します。

VPSなど自分でサーバーを用意している場合は、自分で海外IPアドレスを取得してapacheの設定なり、.htaccessにdenyの記述を入れるなりすることになります。

結構手間なんですが、VPSなどはサーバーリソースに限りがあるので、総当たり攻撃を防ぐことでサーバーの使用リソースを削減して、リソースを一般ユーザー向けに割けるようになるので、やっておくと良いでしょう。

特に中華系のスパムはサイトの内容をまるっとパクっていくものもあるので、アクセスログを見ながら悪質なユーザーの割合が多い国だけでもアクセス拒否しておくとベターです。

ログインを制限する

スパムにはログインすることを目標とするものがあります。ログインをした上で悪意のあるコードを仕込んだり、データ改ざんをしたりします。

ですので、まずはログインをさせないことが大事です

試行回数を制限する

こちらは、DBと連携する必要があるので、自作するよりかはプラグインの気軽に導入できます。

Limit Login Attempts Reloadedというプラグインが人気のようです。

似た名前でも「Limit Login Attempts」という前のバージョンは2012年頃から更新されていないようなので、間違えないようにしましょう。

reCaptchaを導入する

Googleが提供している画像キャプチャを導入するのが最も手軽でしょう。

専用のプラグインGoogle Captchaも用意されているので、そちらをインストールすれば簡単にreCaptchaを導入できます。なお、使用にはGoogle APIでの設定が必要です。

ちなみに、「Google Captcha」だと不正ログインだけでなく、自分のログインもreCaptchaが出てしまうので若干面倒です。(コメントなどログインした後に出るページについてはreCaptchaを出さない設定があります)


ざくっとですが、ログイン周りのセキュリティを高める方法を見てきました。

プラグインは簡単に導入できる反面、それ自体にセキュリティホールがあったり、動作が重くなったりと、良いことだけではないので、プラグインのレビューやIPAなどが出しているWordPressの脆弱性に関するレポートなどもチェックするようにしましょう。