Пару недель назад наши сайты начали массово атаковать брутфорсом. Это начало вызывать перегрузку серверов и хостинг дал предупреждение о том что отключит сайты, если не сбавим нагрузку. И тут же прислал уведомление что обнаружил брутфорс-атаку и заблокировал страницу авторизации WordPress.
Все бы хорошо, но такая защита усложняла входы на сайт. И ладно если только нам, но у нас была одна сеть сайтов где было много клиентов. Понеслись жалобы.
Мы начали поиск решений и вот чего нашли 🙂
1. Блокировка доступа к wp-login.php через .htaccess
Это сделла хостинг reg.ru за нас и выглядело оно как блок в htaccess:
[code]
<Files “wp-login.php”>
AuthType Basic
AuthName “please use your control panel password”
AuthUserFile /var/www/u0072692/data/etc/users
Require valid-user
</Files>
[/code]
При попытке открыть wp-login.php мы получали запрос пароля на стороне веб-сервера, без загрузки сервера приложений.
2. Блокировка при ошибках авторизации
Для этого ставим очень популярный и уважаемый плагин Limit Login Attempts https://wordpress.org/plugins/limit-login-attempts/
3. Включаем сокрытие wp-login.php
Вот это самое интересное. Нашел плагин WPS Hide Login.
У него целый ряд полезных особенностей:
- Совместим с плагином Limit Login Attempts
- Позволяет заменить путь wp-login.php на свой
- Совместим с режимом сети (WP Multisite). Но почему то путь по умолчанию /login/ – не заработал на поддоменах. Пришлось заменить на /signin/
- Отличное работает с защитой через htaccess из п.1 данной статьи.
Результат
- Брутфорсеры ломают себе зубы в попытке обратиться на wp-login.php об htaccess
- Клиенты получают короткий и более удобный адрес входа, например /sign/
- Частично скрываем от любопытных глаз тот факт что используем WordPress. При попыте зайти на wp-admin нас не бросит на страницу авторизации, а выдаст 404 ошибку.
- Хостер не угрожает нам блокировкой сайтов из-за перегрузки сервера
Капчу еще забабахать и будет нормально