2014年06月24日(Tue)
POSTリクエストを使ってwp-login.phpにアクセスしてきたら「403 Forbidden」を返して阻止
ブルートフォースアタックは、POSTリクエストを使ってくるらしいので、それを阻止するためにwp-login.phpまたはwp-adminフォルダへのPOSTリクエストが自分のドメインからでない場合は、「403 Forbidden」を返すように.htaccessを使ってアクセス制限するといった方法です。
POSTリクエスト対策前の検証
いきなり対策してしまうと、実際の効果が分からないので、設定する前に対策するドメインへPOSTリクエストを使ってアクセスしてみました。 手っ取り早く試す為に、以下のHTMLを作成しローカルからアクセスして試したところログインに成功しました。
post.html
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>POSTリクエスト対策のテスト</title> </head> <body> <form name="loginform" id="loginform" action="http://対象ドメイン/wp-login.php" method="post"> <input type="hidden" name="log" value="ユーザー名" /> <input type="hidden" name="pwd" value="パスワード" /> <input type="submit" value="ログイン" /> </form> </body> </html>
.htaccessを使って制限
以下のコードを「wp-login.php」が置いてあるディレクトリの.htaccessに追記します。
「example\.com」の部分は、対策するドメイン名に変更して使います。
.htaccess
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_METHOD} POST RewriteCond %{HTTP_REFERER} !^http://(.*)?example\.com [NC] RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR] RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$ RewriteRule ^(.*)$ - [F] </IfModule>
再度、POSTリクエストを試してみる
「.htaccess」を更新して、再度、ローカルに作成したHTMLからアクセスしてみると「403 Forbidden」が返ってきました。 ログインもログイン画面から行えば問題なく出来たので、暫く様子を見ていこうと思います。
コメント(0件)
POSTリクエストを使ってwp-login.phpにアクセスしてきたら「403 Forbidden」を返して阻止に対するご意見、ご感想、情報提供など皆様からのコメントをお待ちしております。 お気軽にコメントしてください。
コメントフォーム