Защита сайта от брутфорса без правки кода

Если Ваш сайт, написанный на базе популярного движка (WordPress, Joomla, Magento и др.), стал сильно тормозить, а в логах доступа сервера Вы видите множество обращений к странице логина или к странице администрирования, знайте — ваш сайт «нашли» боты-брутфорсеры и пытаются подобрать пароль администратора.Если с Вашим паролем всё нормально (он длинный и набран цифрами и буквами в разных регистрах), то Вы можете быть уверены, что брутфорсер его не подберёт. Но сам факт того, что происходит подбор, а тем паче то, что при этом страшно грузится сервер и расходуется трафик (особенно если на вашем хостинге он платный) откровенно говоря, напрягает.

Ниже я расскажу как избавиться от этой проблемки очень простым и бескровным способом.

Сперва предыстория. Проблемой я озаботился спустя некоторое время после того, как перешёл с «самодельного» движка на WordPress (впрочем, это мог бы быть любой другой более-менее распространённый движок). Запилил первый сайт и уже через неделю увидел в логах огромное количество запросов к странице логина. Поиски в интернете выводили на множество «рецептов», подавляющее большинство которых заключается в переименовании файла wp-login.php и его правке (поскольку адрес самой страницы неоднократно встречается в самом файле wp-login.php и других файлах движка.

Но этот способ означает правку ядра WordPress. А это влечёт за собой невозможность получать регулярные автоматические обновления ядра, а также несовместимость с некоторыми плагинами. К тому же способ абсолютно не спасает против тех роботов, которые ищут «дыры» в админке и плагинах, обращаясь с хитроумными параметрами по адресам вида /wp-admin/* В общем, этот способ сразу был отвергнут.

А идея моя заключается вот в чём.

Нужно завести специальную куку, такую, чтобы при её отсутствии сам сервер (Apache или Nginx) перехватывал обращения к странице логина или админке и выдавал вместо кода страниц код состояния 404, означающий полное отсутствие по этим адресам каких-либо страниц). А при наличии куки сервер должен просто обходить эту проверку и сайт должен работать как ни в чём не бывало. Брутфорсеры не тупые, они не будут бесконечно «долбать» отсутствующий URL и отступят.

Куку я планировал устанавливать автоматически с помощью секретного скрипта, который кроме всего прочего (для моего удобства) должен также переносить меня на страницу логина.

Теперь дело за реализацией.

Я привожу кусок конфига для Nginx, поскольку я пользуюсь только этим сервером, но, зная идею, Вы самостоятельно можете написать конфигурацию для Apache или другого сервера.

Теперь файл PHP с секретным именем, который будет данную куку устанавливать:

Обратите внимание, что кука устанавливается на 1 месяц, значит, в течение месяца Вы можете заходить в админку даже не запуская этот секретный файл.

Вот и всё. Просто, правда? Разумеется, этот рецепт может быть повторен абсолютно для любого движка, Вам нужно будет только поменять пути и названия файлов.

Что-то непонятно? Спросите в комментариях!


Источник: http://epsiloncool.ru/programmirovanie/php/zashhita-sajta-ot-brutforsa-bez-pravki-koda

Be the first to comment

Leave a Reply

Your email address will not be published.


*