Как защитить WordPress от брутфорса: ограничение попыток входа и базовые меры безопасности
Если в логах видно десятки или сотни попыток входа в админку, сайт уже проверяют перебором паролей. Самый рабочий подход здесь не один, а набор мер: ограничить число неудачных входов, убрать лишние точки атаки и сделать так, чтобы даже при утечке пароля злоумышленнику было сложнее попасть в панель.
Для WordPress это не требует сложной инфраструктуры. В большинстве случаев достаточно настроить защиту на уровне плагина, хостинга и самой админки. Ниже — только те шаги, которые реально помогают в обычной эксплуатации сайта.
С чего начать: что именно нужно закрыть
Брутфорс в WordPress почти всегда бьёт по стандартной форме входа и по учётным данным администратора. Если оставить всё как есть, атакующий может бесконечно подбирать пароль, особенно если у него есть список популярных комбинаций или утекших логинов.
Поэтому базовая защита строится вокруг трёх задач:
- ограничить количество неудачных попыток входа;
- сделать пароль и сам аккаунт администратора менее уязвимыми;
- снизить видимость и доступность точки входа для автоматических скриптов.
Если сайт уже под атакой, сначала включайте ограничение попыток входа. Остальные меры можно внедрять сразу после этого.
Ограничение попыток входа: самый практичный первый шаг
WordPress сам по себе не блокирует перебор паролей. Это нормально для ядра, но для публичного сайта почти всегда недостаточно. Самый простой способ закрыть проблему — поставить плагин, который временно блокирует IP после нескольких неудачных входов.
Из распространённых решений подойдут плагины класса limit login attempts. Логика у них одинаковая: задаёте число ошибок, время блокировки и, при необходимости, более жёсткую блокировку после серии повторных попыток.
При настройке ориентируйтесь на разумный баланс:
- не ставьте слишком маленький лимит, иначе можно заблокировать обычного пользователя, который ошибся пару раз;
- не делайте блокировку слишком короткой — тогда перебор просто продолжится через минуту;
- если на сайте несколько администраторов или редакторов, предупредите их о защите, чтобы не создавать лишние обращения в поддержку.
Если плагин позволяет, включите уведомления о блокировках. Это помогает быстро заметить всплеск атак и понять, что защита реально срабатывает.
На что смотреть в настройках
У разных плагинов названия пунктов отличаются, но обычно нужны такие параметры:
- количество попыток до блокировки;
- длительность первой блокировки;
- длительность повторной блокировки;
- срок, после которого счётчик ошибок сбрасывается;
- уведомления на почту администратора.
Если хостинг использует кеширование или прокси, проверьте, что плагин корректно видит реальный IP посетителя. Иначе блокировка может затронуть не того адресата или работать нестабильно.
Сильный пароль и уникальный логин администратора
Ограничение попыток входа снижает риск, но не отменяет слабые учётные данные. Если у администратора пароль вроде qwerty123 или логин совпадает с типовым admin, перебор становится заметно проще.
Что стоит сделать сразу:
- сменить логин администратора, если он слишком очевидный;
- использовать длинный уникальный пароль, а не «сложный, но короткий»;
- не использовать один и тот же пароль на нескольких сайтах;
- хранить пароль в менеджере паролей, а не в заметках или браузере без защиты.
Если на сайте уже есть пользователь с ролью администратора и логином admin, лучше создать нового администратора с безопасным логином, перенести права и затем удалить старую учётную запись или по крайней мере изменить её роль. Просто переименовать отображаемое имя недостаточно: атакующий всё равно может ориентироваться на исходный логин.
Двухфакторная аутентификация: полезное усиление, а не замена ограничениям
Если сайт важный, добавьте двухфакторную аутентификацию для администраторов. Тогда одного пароля уже недостаточно: после ввода логина и пароля нужен второй фактор, обычно код из приложения-аутентификатора.
Это особенно полезно, когда:
- к админке имеют доступ несколько человек;
- сайт часто атакуют перебором;
- пароль мог быть скомпрометирован в другом сервисе;
- на сайте есть доступ к заказам, персональным данным или другим чувствительным данным.
Но 2FA не заменяет ограничение попыток входа. Без лимитов атакующий всё равно будет нагружать форму входа и логин-эндпоинт, даже если пароль подобрать не сможет.
Спрячьте лишнее: уменьшите число точек входа
Чем меньше автоматических сценариев видят стандартные пути входа, тем меньше мусорного трафика и попыток перебора. Здесь не нужно изобретать сложные схемы, достаточно убрать очевидные цели.
Практически это означает следующее:
- не оставлять без необходимости стандартные тестовые аккаунты;
- не использовать одинаковые логины у всех администраторов;
- не держать открытыми старые учётные записи после увольнения сотрудников или завершения работы подрядчика;
- не публиковать логины в открытом виде там, где их легко собрать ботами.
Если на сайте есть форма регистрации, проверьте, действительно ли она нужна. Открытая регистрация без контроля часто привлекает не только спам, но и попытки массового подбора паролей к только что созданным аккаунтам.
Базовая защита на уровне хостинга и сервера
Часть защиты лучше делать не в WordPress, а на стороне хостинга. Это особенно полезно, если атака идёт массово и плагин уже получает слишком много запросов.
Что может помочь:
- веб-фаервол или WAF у хостера;
- ограничение частоты запросов к странице входа на уровне сервера или CDN;
- защита от ботов и подозрительного трафика в панели хостинга;
- корректная работа HTTPS, чтобы данные входа не передавались в открытом виде.
Если у вас Cloudflare или другой CDN, можно добавить правило, которое сильнее фильтрует запросы к странице входа. Но здесь важно не переборщить: слишком жёсткие правила могут мешать легитимным пользователям, особенно если они заходят из корпоративной сети или через VPN.
Что проверить после настройки
После внедрения защиты не ограничивайтесь тем, что плагин включён. Нужно убедиться, что он действительно работает и не ломает обычный вход.
Проверьте по шагам:
- Войдите в админку с правильным паролем и убедитесь, что доступ не изменился.
- Сделайте несколько ошибочных попыток входа с тестового аккаунта или в приватном окне.
- Посмотрите, появляется ли блокировка после заданного числа ошибок.
- Убедитесь, что уведомления приходят, если вы их включили.
- Проверьте, не блокируются ли случайно ваши собственные IP-адреса или адреса сотрудников.
Если блокировка не срабатывает, сначала проверьте кэш, прокси и определение реального IP. Это частая причина, когда плагин видит не посетителя, а адрес промежуточного сервиса.
Когда одного плагина недостаточно
Плагин для ограничения попыток входа закрывает основную дыру, но не решает всё. Если сайт уже скомпрометирован, есть подозрительные администраторы, неизвестные плагины или менялись файлы ядра, одной блокировки мало.
В такой ситуации нужно дополнительно:
- проверить список пользователей с правами администратора;
- обновить WordPress, темы и плагины до актуальных версий;
- сменить пароли у всех администраторов;
- проверить сайт на вредоносный код и подозрительные изменения файлов;
- сделать резервную копию перед любыми ручными правками.
Если вы не уверены, что именно уже затронуто, лучше сначала сохранить копию сайта и базы данных, а потом разбирать инцидент. Иначе можно потерять следы атаки или случайно удалить нужные данные.
Для обычного сайта минимально достаточная схема выглядит так: ограничение попыток входа, уникальный сильный пароль администратора, по возможности двухфакторная аутентификация и базовая фильтрация на стороне хостинга. Этого уже хватает, чтобы заметно снизить риск брутфорса и не превращать защиту в сложный проект.