Краткий ответ: Ограничьте попытки входа (плагин), включите 2FA для всех админов, заблокируйте или ограничьте xmlrpc.php и добавьте серверный rate limiting через fail2ban, читающий лог аутентификации WordPress. Вместе это превращает бесконечный ботовый подбор паролей из угрозы в фоновый шум.

Обзор

Каждый публичный сайт на WordPress ежедневно брутфорсят — боты круглосуточно долбят wp-login.php и xmlrpc.php. Риск не только в угаданном пароле: незадушенный поток логинов также жжёт CPU. Защита имеет уровень приложения (лимиты, 2FA) и уровень сервера (fail2ban, правила веб-сервера) — используйте оба.

Что нужно иметь

  • Админ-доступ к wp-admin и SSH.
  • Уже активный файрвол (гайд по UFW) — fail2ban встраивается в него.

Пошаговая инструкция

  1. Лимит попыток: поставьте «Limit Login Attempts Reloaded» (или встроенный лимитер Wordfence): блокировка после 4–5 неудач с растущим временем блокировки.
  2. 2FA: добавьте TOTP-плагин (WP 2FA, Two-Factor) и сделайте его обязательным для ролей администратора и редактора.
  3. xmlrpc.php: если не пользуетесь мобильным приложением/Jetpack — запретите на веб-сервере (см. server block для Nginx); иначе ограничьте по IP.
  4. fail2ban: установите плагин «WP fail2ban» (логирует события аутентификации в syslog), затем:
    sudo apt install fail2ban
    # /etc/fail2ban/jail.d/wordpress.conf
    [wordpress-hard]
    enabled = true
    filter = wordpress-hard
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 3600
    port = http,https
    Плагин поставляет соответствующие filter-файлы; скопируйте их в /etc/fail2ban/filter.d/ и перезапустите fail2ban.
  5. Проверка: сделайте несколько неудачных логинов с VPN-IP и посмотрите sudo fail2ban-client status wordpress-hard.

Типичные проблемы

  • Заблокировали сами себя: добавьте свой IP в белый список лимитера и в ignoreip fail2ban.
  • Атаки продолжаются через xmlrpc: лимитеры логина часто его не покрывают — именно поэтому важен явный блок.
  • Переименование wp-login ломает интеграции: прятать страницу входа — косметика; настоящая защита это rate limiting + 2FA.

Когда обращаться в поддержку

Если поток логинов насыщает сервер несмотря на баны (нетипично), откройте тикет с временными метками и примерами IP — события масштаба DDoS оцениваются на уровне сети, а DDoS-защита доступна как опция услуги.

Частые вопросы

Достаточно ли переименовать страницу входа, чтобы остановить brute force?

Нет — это лишь прячет wp-login.php от ленивых ботов и ломает некоторые интеграции. Лимит попыток, 2FA и fail2ban останавливают атаки независимо от того, известен ли адрес входа.

Почему атакуют именно xmlrpc.php?

xmlrpc.php принимает аутентификацию и пакует много попыток пароля в один запрос, обходя простые лимитеры — блокируйте его полностью, если не пользуетесь удалённой публикацией или Jetpack.

Что даёт fail2ban сверх плагина-лимитера входа?

fail2ban банит агрессивные IP на файрволе, так что рецидивисты вообще не доходят до PHP — это экономит CPU во время потоков атак и тем же механизмом покрывает SSH и другие сервисы.

Похожие статьи

Нужна помощь? Связаться с поддержкой Cloud2Y →

Помог ли вам данный ответ? 0 Пользователи нашли это полезным (0 голосов)