WordPressの不正アクセス・不正ログインなどの対策やっていますか?
WordPressは世界中で最も利用されているオープンソースのCMSです。
そのオープンソース性ゆえ、ディレクトリ構造やソースコードが完全に公開されており、悪意のある攻撃者にとっては容易に目的のファイルにアクセスすることが可能です。
特に、WordPress管理画面ログインする重要ファイルwp-login.php
への攻撃からの保護や、不正アクセス、不正ログイン対策が非常に重要です。
この記事ではWordPressの不正アクセス・不正ログインの攻撃から保護する方法をまとめています。
wp-login.phpの重要性
wp-login.phpはWordPressサイトへのアクセスを制御する要所であり、サイトの管理権限を持つユーザーにのみアクセスを許可します。したがって、このログインページが安全で保護されていることは非常に重要です。攻撃者がこのページにアクセスしようと試み、成功すればサイト全体に対する攻撃が可能になります。
WordPressの不正ログイン対策があるレンタルサーバー
最近はレンタルサーバー会社で海外IPをブロックする対策を導入しておりセキュリティにおける安心度は増しました。
エックスサーバー 、ConoHa WINGはWordPressのセキュリティ対策が標準装備されています。
海外(国外IP)アクセス制限
対象:ダッシュボード、XML-RPC API、REST-API、wlwmanifest.xml
XML-RPC APIへのアクセス制限がある場合、海外にいるときに自分のWordPressへアクセスできなくなる場合があります。
またプラグインによってこのアクセス制限によって正常に動かない場合もあります。
不正なログイン制限
管理画面に短時間に複数回ログイン試行があった場合アクセスを制限されます。
コメント・トラックバック制限
短時間に大量コメント・トラックバックがあった場合の制限、海外からのコメント・トラックバックを制限する機能
でも海外IPをブロックするだけでは絶対安心とは限りません。
管理画面ログイン関連ファイル・ディレクトリ wp-login.php,wp-adminのアクセス制限
WordPressの管理画面ログイン関連ファイル・ディレクトリ、具体的には"wp-login.php"と"wp-admin"ディレクトリへのアクセス制限は、WordPressのセキュリティ対策の一つとして重要です。
これらのwp-login.phpファイルやwp-adminディレクトリなど、WordPressの重要ファイル・ディレクトリに「特定のIPだけを許可したい、特定のIPだけを拒否したい」など適切なアクセス制限を設定することで、不正アクセスや攻撃からサイトを保護できます。
制限をかける対象のファイル・ディレクトリ
- wp-config.php
- wp-login.php
- wp-admin/
- xmlrpc.php
wp-config.phpのアクセス制限
wp-config.php
はデータベースのログイン情報、WordPressの設定情報など重要情報が記載されているのでアクセスできないようにしておきます。
<Files "wp-config.php">
order deny,allow
deny from all
</Files>
wp-login.phpのアクセス制限
■特定のIPのみ許可する.htaccess
<Files "wp-login.php">
order deny,allow
deny from all
allow from 192.168.xx.xx
</Files>
※192.168.xx.xxからのアクセスだけ許可する
複数指定する場合は、改行してallow from を記述
■特定のIPを拒否する.htaccess
アクセスする場所が限定できない場合
<Files "wp-login.php">
order allow,deny
allow from all
deny from 192.168.xx.xx
</Files>
※192.168.xx.xxからのアクセスを拒否する
wp-adminディレクトリのアクセス制限
※wp-adminディレクトリ内にある「admin-ajax.php」は、プラグインで使われている場合があるので対象から除外した方が良いです。
Gatespace's Blogさんの記事から
http://gatespace.jp/2013/05/21/wp-admin-access-restriction-ver3-5-1/
ルートディレクトリではなく、wp-adminディレクトリに.htaccess を置くこと
■特定のIPのみ許可する.htaccess
order deny,allow
deny from all
allow from 192.168.xx.xx
<FilesMatch "(admin-ajax.php)$">
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</FilesMatch>
xmlrpc.phpの対策
xmlrpc.phpに対しブルートフォースアタックをかけられるのを防ぐため
※Pingback機能を悪用して踏み台にする攻撃がある
<Files "xmlrpc.php">
order deny,allow
deny from all
</Files>
もしくは、Disable XML-RPC Pingbackプラグインを利用する
https://ja.wordpress.org/plugins/disable-xml-rpc-pingback/
プラグインを使って総合的なセキュリティ対策をする
セキュリティ系のプラグインには、前述のような.htaccessによるアクセス制限やログインロックアウトを備えています。
WordPressのログインを一定回数以上間違えるとロックするプラグイン
Limit Login Attempts
https://wordpress.org/plugins/limit-login-attempts/
ログイン履歴(エラーもふくめて)を記録してくれるプラグイン
総合的なセキュリティ対策
有効インストール数:400万以上
WordPressの基本的なセキュリティ対策がこれ一つでできる人気の総合セキュリティプラグイン。
WordPressでインストールしているテーマやプラグイン、WordPress本体でアップデートがあった場合、メール通知してくれる機能があり、アップデートせずに放置してしまうことを防ぐことができます。
All-In-One Security (AIOS) – Security and Firewall
有効インストール数:100万以上
ログインセキュリティ、ファイヤーウォール、コメントスパム防御など包括的にセキュリティ対策ができます。
WordPress内のファイルに変更があったログを記録し、アラートを送ってくれる機能があります。
有効インストール数:50万以上
管理画面のアクセス制限、画像認証、ログインURL変更、ログインロック機能など不正ログイン関連の機能が豊富な国産プラグイン。さくらのレンタルサーバで標準提供されているWAF機能「SiteGuard」でも知られるEGセキュアソリューションズ株式会社が提供しているので安心感があります。
まとめ:基本はWordPressとプラグインを最新の状態に保つこと
WordPressを安全に保つ基本はWordPress本体とプラグインを最新の状態にしておくことです。
セキュリティアップデートがあった場合は早急な対応が必要です。
セキュリティホールをそのままにしておくことはとても危険です。
脆弱性を放置したことが原因で不正アクセス、ウェブサイトの改ざんや個人情報の漏洩が起こった場合、元に戻すのには大変な作業になります。
その期間、Webサイトは機能しなくなりビジネスチャンスを逃し、信頼性を損ねることにつながるのです。
「自分のサイトはアクセスが少ないから大丈夫」というわけではありません。
WordPressだけに限りませんがCMSなどWebアプリケーションを利用する場合は不正アクセス対策をしっかりすることが重要です。