[WordPress] ログインページ(wp-login.php)で海外IPアドレスからのアクセスを拒否する
WordPress のブルートフォースアタックは以前から問題になっており、管理しているサイトでもユーザー名とパスワードを工夫するなどの対策をしていました。
しかし、ロリポップサーバーの WordPress で度々「WordPressへの攻撃に対する検知・防御機能」によるログインページへの全アクセス制限が自動的に行われ、少し困っていました…。
とてもありがたい機能ですが、実際の使用者もログインページに突然アクセスできなくなるのと、その頻度が高く週に一回くらい起こっていた為、その度に .htaccess ファイルを編集しなくてはいけないのでちょっと面倒です。
そこで、wp-login.php への海外IPアドレスからのアクセス制限を行ったところ効果てきめんでした。最初からやっておけばよかったと思います。その設定方法のメモです。
.htaccess ファイルの設定
1. 国内のIPのアクセスのみを許可する設定ファイルを取得する
以下のサイトで国内のIPアドレスの一覧と、そのアクセスを許可する設定が書かれたファイルを取得することができます。
IPアドレスで日本国外(海外/外国)からのアクセスを制限する.htaccess CGI's
「.htaccessダウンロード」ボタンをクリックして htaccess ファイルをダウンロードします。
htaccess ファイルをテキストエディタなどで開くと以下のような内容になっています。
order deny,allow
deny from all
allow from 1.0.16.0/20
allow from 1.0.64.0/18
allow from 1.1.64.0/18
allow from 1.5.0.0/16
:
order deny,allow deny from all という行ですべてのアクセスを拒否しています。そしてその下から始まる allow from 〜 という行で、その IPアドレスからのアクセスを許可します。
国内すべての IP に対して allow from 〜 としてアクセスを許可していくためすごく長いファイルになっています。
2. wp-login.php ファイルに対してのみその設定を適応する
以下のように<Files wp-login.php> と </Files>で先の設定を囲みます。これで設定が wp-login.php に対してのみ行われるようになります。
<Files wp-login.php>
order deny,allow
deny from all
allow from 1.0.16.0/20
allow from 1.0.64.0/18
allow from 1.1.64.0/18
allow from 1.5.0.0/16
:
</Files>
このファイルを サーバーのルートディレクトリなどにアップし、ファイル名の前に「.」(ドット)をつければ完成です。すでに、.htaccess ファイルがサーバーにある場合は、そのファイルにこの設定を追加しましょう。
ロリポップ以外のサーバーでも wp-login.php への不正アクセスは常にあるので、WordPress を使われている方はこの設定をしておくと安心だと思います。
WordPress のログイン履歴を保存するプラグイン「狂骨」で、使用前・使用後のアクセスを観察できます。使用前に沢山あった海外からの謎のアクセスが全くなくなるので安心できます。
2 Comments & Tracbacks