Закрыть wp-login.php c помощью Nginx

· 134 words · 1 minute read

Уже несколько дней наблюдается массовый ботнет брутфорс пароля в WordPress направленный на wp-login.php на серверах с сайтами. Что можно сказать равносильно небольшой DDOS-атаке, выливается в большую нагрузку на сервера. В access логах видно:

85.26.82.37 - - [05/Aug/2013:09:44:37 +0400] “POST /wp-login.php HTTP/1.0” 200 4499 “read-me.su/wp-login.php” “Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0”

В nginx.conf к каждому server {…} с сайтами WordPress добавляем локейшн:

location /wp-login.php {
allow ip;
deny all;
}

где ip - соответственно ваш ip адрес, либо подсеть провайдера в формате CIDR x.x.x.x/y

дальше:

nginx -t

если ок, то

nginx -s restart

если всё сделали правильно, в error лог будет попадать такое:

2013/08/05 12:08:44 [error] 39451#0: *220415 access forbidden by rule, client: 109.188.127.117, server: read-me.su, request: “POST /wp-login.php HTTP/1.0”, host: “read-me.su”, referrer: “read-me.su/wp-login.php”

Или как вариант на этот локейшн можно добавить basic авторизацию.