• このエントリーをはてなブックマークに追加

2014年06月24日(Tue)

POSTリクエストを使ってwp-login.phpにアクセスしてきたら「403 Forbidden」を返して阻止

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」を返して阻止に対するご意見、ご感想、情報提供など皆様からのコメントをお待ちしております。 お気軽にコメントしてください。

コメントフォーム

【ソーシャルボタン】


TOP