WordPress Tips

WordPress管理画面 wp-login.phpの攻撃から保護する方法、アクセス制限

2016-03-16

本記事にはプロモーションが含まれています。

WordPress管理画面 wp-login.phpの攻撃から保護する方法、アクセス制限

ソラミ♪

Webエンジニアをやりつつ、デザインにも携わる株式会社コムワークの中の人。WordPress、Adobeアプリ、カワウソ好き。 2015年から当ブログ運営|2008年からGmail使用中|WordPress制作10年以上|15社以上のレンタルサーバー利用経験|100件以上のドメイン取得運用|サイト・ドメイン移転多数 »  もっとくわしく

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へアクセスできなくなる場合があります。

またプラグインによってこのアクセス制限によって正常に動かない場合もあります。

不正なログイン制限

管理画面に短時間に複数回ログイン試行があった場合アクセスを制限されます。

コメント・トラックバック制限

短時間に大量コメント・トラックバックがあった場合の制限、海外からのコメント・トラックバックを制限する機能

エックスサーバーのWordPressセキュリティ設定
ConoHa Wingの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>

IPアドレスによるアクセス制限のポイント

IPアドレスによる.htaccess制限は、特定の固定IPアドレスを持っている場合に最も効果的ですが、固定IPアドレスを持っていない場合、IPアドレスは変わってしまう可能性があるため制限するのが難しいです

固定IPを持たない場合、ユーザー認証によるアクセス制限、セキュリティプラグインによる保護などの代替手段が必要になります。

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での制限の記述おさらい

アクセス制限をかける場合、

「すべてを許可してから特定のIPを拒否する」
「すべてを拒否してから特定のIPを許可する」

という設定方法があります。

それを記述するのが「order」です。

すべてを許可する

order deny,allow

すべてを拒否する

order allow,deny

「すべてを許可してから特定のIPを拒否する」

order deny,allow
allow form 許可する対象
deny from 拒否する対象


「すべてを拒否してから特定のIPを許可する」

order allow,deny
deny from 拒否する対象
allow from 許可する対象

プラグインを使って総合的なセキュリティ対策をする

セキュリティ系のプラグインには、前述のような.htaccessによるアクセス制限やログインロックアウトを備えています。

WordPressのログインを一定回数以上間違えるとロックするプラグイン

Limit Login Attempts
https://wordpress.org/plugins/limit-login-attempts/

ログイン履歴(エラーもふくめて)を記録してくれるプラグイン

総合的なセキュリティ対策

Wordfence Security

有効インストール数:400万以上
WordPressの基本的なセキュリティ対策がこれ一つでできる人気の総合セキュリティプラグイン。
WordPressでインストールしているテーマやプラグイン、WordPress本体でアップデートがあった場合、メール通知してくれる機能があり、アップデートせずに放置してしまうことを防ぐことができます。

All-In-One Security (AIOS) – Security and Firewall

有効インストール数:100万以上
ログインセキュリティ、ファイヤーウォール、コメントスパム防御など包括的にセキュリティ対策ができます。
WordPress内のファイルに変更があったログを記録し、アラートを送ってくれる機能があります。

SiteGuard WP Plugin

有効インストール数:50万以上

管理画面のアクセス制限、画像認証、ログインURL変更、ログインロック機能など不正ログイン関連の機能が豊富な国産プラグイン。さくらのレンタルサーバで標準提供されているWAF機能「SiteGuard」でも知られるEGセキュアソリューションズ株式会社が提供しているので安心感があります。

まとめ:基本はWordPressとプラグインを最新の状態に保つこと

WordPressを安全に保つ基本はWordPress本体とプラグインを最新の状態にしておくことです。

セキュリティアップデートがあった場合は早急な対応が必要です。

セキュリティホールをそのままにしておくことはとても危険です。

脆弱性を放置したことが原因で不正アクセス、ウェブサイトの改ざんや個人情報の漏洩が起こった場合、元に戻すのには大変な作業になります。

その期間、Webサイトは機能しなくなりビジネスチャンスを逃し、信頼性を損ねることにつながるのです。

「自分のサイトはアクセスが少ないから大丈夫」というわけではありません。

WordPressだけに限りませんがCMSなどWebアプリケーションを利用する場合は不正アクセス対策をしっかりすることが重要です。

  • この記事を書いた人
  • 最新記事

ソラミ♪

Webエンジニアをやりつつ、デザインにも携わる株式会社コムワークの中の人。WordPress、Adobeアプリ、カワウソ好き。 2015年から当ブログ運営|2008年からGmail使用中|WordPress制作10年以上|15社以上のレンタルサーバー利用経験|100件以上のドメイン取得運用|サイト・ドメイン移転多数 »  もっとくわしく

-WordPress Tips
-,