アクセス制限:wp-login.phpへのアクセスで404 Not Foundを返す

なんだか最近、WordPressをインストールしているディレクトリの「wp-login.php」に対する攻撃が頻繁なんですよ。 おそらくセキュリティホールを見つけてアクセスしてきてるんでしょう。

210.48.154.90 - - [04/Nov/2013:10:30:49 +0900] "POST /hoge/wp-login.php HTTP/1.1" 403 480 "http://my.example.com/hoge/wp-login.php" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1623.0 Safari/537.36"
210.210.178.20 - - [04/Nov/2013:11:12:54 +0900] "POST /hoge/wp-login.php HTTP/1.1" 403 480 "http://my.example.com/hoge/wp-login.php" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1623.0 Safari/537.36"
72.29.71.247 - - [04/Nov/2013:11:12:56 +0900] "POST /hoge/wp-login.php HTTP/1.1" 403 480 "http://my.example.com/hoge/wp-login.php" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1623.0 Safari/537.36"
198.136.54.104 - - [04/Nov/2013:11:12:58 +0900] "POST /hoge/wp-login.php HTTP/1.1" 403 480 "http://my.example.com/hoge/wp-login.php" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1623.0 Safari/537.36"

403では止まらないwp-admin.phpへのアクセス

で、最初はアクセス制限で「order deny, allow」「deny from all」等を使ってレスポンスコード「403」を返してたんですが、1週間経った後でもアクセスが一向に止まらない。 「いつかアクセス制限が外れて攻撃できる時が来るかもしれないぜ…hehehe」なんて思っているのでしょうか。

まぁ、それは考えすぎかもしれませんが、403というコードは「wp-login.php」が存在することを暗に示しているわけで、その認識自体を改めさせる必要があります。 つまり「wp-login.php」は無いよ、というレスポンスコード「404」を返す必要があります

特定のIPアドレス以外は404を返す

そこで今回は mod_rewriteで404を返すことにしました。 もちろん、特定のIPアドレスからは管理用としてアクセスOKにしないといけないので、RewriteCondで特定のIPアドレスでは制限をかけません。

wp-login.php と同じディレクトリに .htaccess ファイルを配置し、次のように記述します。

<FilesMatch "wp-login.php$">
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192.168.1.10$
RewriteCond %{REMOTE_ADDR} !^192.168.1.12$
RewriteRule ^.*$ - [R=404,L]
</IfModule>
</FilesMatch>

これで諦めてくれるでしょう。

このページをシェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

2013-11-04