На сайте WordPress, оставленном с настройками по умолчанию, страница входа, вероятно, является самым запрашиваемым ресурсом сервера — не реальными посетителями, а ботами, которые непрерывно перебирают комбинации учётных данных. Эта активность, называемая атакой методом перебора, использует тот факт, что URL входа одинаков на миллионах установок WordPress по всему миру. Хорошая новость в том, что нескольких простых мер достаточно, чтобы отсеять подавляющее большинство таких попыток, не требуя продвинутых навыков.
Почему эта угроза так сильно затрагивает WordPress
WordPress обеспечивает работу очень значительной доли сайтов в мире, что делает его излюбленной целью для автоматизированных скриптов, которые нацелены не на конкретный сайт, а сканируют весь интернет в поисках плохо защищённых установок. Значительная часть этих попыток входа использует пароли, уже скомпрометированные при утечках данных в других местах в интернете, что делает повторное использование одного пароля для нескольких сервисов особенно рискованным для учётной записи администратора.
Смена имени пользователя admin
Если ваша основная учётная запись администратора всё ещё называется admin, половина работы злоумышленника уже сделана: ему остаётся только подобрать пароль. WordPress не позволяет переименовать существующее имя пользователя, но можно легко создать нового пользователя с отдельным именем и правами администратора, перенести на него существующий контент, а затем удалить старую учётную запись admin.
Ограничение числа попыток входа
Без ограничений бот может перебирать несколько тысяч комбинаций в минуту. Плагин ограничения попыток, такой как Limit Login Attempts Reloaded, или аналогичные функции в составе более широких пакетов безопасности, временно блокирует IP-адрес после определённого числа неудачных попыток, обычно пяти, с последующей блокировкой от нескольких минут до нескольких часов. Одной этой меры достаточно, чтобы сделать автоматизированную атаку слишком медленной и невыгодной.
Добавление двухфакторной аутентификации
WordPress не предлагает двухфакторную аутентификацию нативно в своём ядре, эту функцию нужно добавлять через отдельный плагин. После активации она требует, помимо пароля, временный код, генерируемый приложением на смартфоне, что делает украденный пароль сам по себе бесполезным для злоумышленника. Эта защита должна быть обязательной для всех учётных записей с правами администратора или редактора, а не только для основной учётной записи.
Смена URL входа
Боты систематически нацелены на адреса по умолчанию — wp-login.php и wp-admin. Плагин вроде WPS Hide Login позволяет заменить этот адрес на индивидуальный URL, известный только вам. Эта мера не заменяет предыдущие защиты, но значительно снижает объём автоматизированных попыток, реально достигающих вашего сервера, поскольку большинство ботов никогда не станут искать дальше отсутствующего адреса по умолчанию.
Отключение XML-RPC, если он не используется
Этот файл, присутствующий по умолчанию в WordPress, обеспечивает удалённые подключения, используемые некоторыми мобильными приложениями или внешними инструментами публикации. Он также представляет собой дополнительный вектор атаки, в частности для групповых попыток входа, которые иногда обходят стандартные ограничения. Если ни один инструмент вашего бизнеса от него не зависит, отключение на уровне сервера или через плагин закрывает эту дверь без какой-либо потери функциональности.
Опора на хостинг-провайдера
Многие управляемые хостинг-провайдеры уже предлагают файрвол веб-приложений и фильтрацию подозрительных попыток на уровне сети, ещё до того, как запрос достигнет WordPress. Проверка того, что реально предлагает ваш текущий хостинг, иногда показывает, что часть защиты уже реализована, и что усилия на стороне сайта сводятся к описанным здесь дополнительным мерам.
Что стоит проверить перед публикацией: подтвердить, что упомянутые плагины (Limit Login Attempts Reloaded, WPS Hide Login) по-прежнему поддерживаются и доступны в официальном каталоге WordPress на момент публикации, и проверить, что отсутствие нативной двухфакторной аутентификации в ядре WordPress остаётся актуальным на эту дату.