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

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

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

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

Раз такая ерунда, решил ограничить доступ к файлу 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, по паролю…

Leave a comment

    Send a Comment

    Ваш адрес email не будет опубликован.