Ограничение доступа к wp-login по ip в nginx

В последнее время fail2ban перестал нормально защищать от брутфорса на wordpress потому, что ip во всяком запросе уникальный и блокировать каждый адрес бессмысленно.

Раз такая ерунда, решил ограничить доступ к файлу wp-login.php по ip. Здесь есть один нюанс: для прописанного в конфигурационном файле nginx локейшена (location) нужно добавить обработчик скриптов, при использовании php-fpm.

В итоге, конструкция выглядит так:

server{
...
location ~* wp-login\.php$ {
allow 127.0.0.1;
deny all;
try_files $uri =404;
fastcgi_pass unix:/run/php-www.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
fastcgi_ignore_client_abort off;
fastcgi_param PHP_VALUE "sendmail_path=/usr/sbin/sendmail -t -i -fmail@example.com";
fastcgi_param PHP_ADMIN_VALUE "open_basedir=/var/www/example.com/:/var/save_path/:/var/tmp_dir/";
}
...
}

Теперь ботам выдаётся ошибка 403 вместо страницы авторизации. Только этот метод не слишком универсален — если на сайте есть регистрация пользователей, применить его не получится.

Но если вы — единственный пользователь, то можно подключить фантазию, и вместо доступа по ip сделать доступ по user-agent, по паролю…

Как вы оцените статью?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *