Несколько лет назад к нам в студию обратился клиент - владелец интернет-магазина на WordPress. Сайт начал жутко тормозить, хостинг присылал предупреждения о нагрузке, а в логах была одна картина: тысячи запросов к wp-login.php за час. Классический брутфорс. Боты методично перебирали password combinations, пытаясь подобрать пароль к административной панели.
Меня зовут Андрей Зенков, я руковожу веб-студией «Мельница». За годы работы с WordPress-проектами я видел brute force attacks разного масштаба - от любительских скриптов до серьёзных ботнетов. Базовая защита your wordpress от брутфорса строится на трёх вещах: плагине для ограничения попыток входа, закрытии xmlrpc.php и сложном пароле с нестандартным логином. Причём первые два пункта делаются за 20-30 минут - достаточно правильно выбрать и настроить плагин.
В этом материале разбираю конкретные инструменты и настройки: какой плагин выбрать, как закрыть xmlrpc.php, зачем нужна двухфакторная аутентификация и как убедиться, что your site действительно защищён. Установку WordPress и общие принципы безопасности не рассматриваю - только защита от перебора паролей.
Почему WordPress уязвим к брутфорсу по умолчанию
Проблема в том, что wordpress core не содержит никакого встроенного механизма ограничения login attempts. Можно вводить неверный пароль хоть тысячу раз подряд - сайт будет отвечать на каждый запрос. Это не баг, это архитектурное решение, которое перекладывает задачу защиты на плагины и настройки сервера.
У brute force атак на wordpress sites есть два основных вектора. Первый - wp-login.php, стандартная страница входа. Её адрес известен всем ботам по умолчанию, поэтому она принимает на себя основной удар. Второй вектор - xmlrpc.php, интерфейс для удалённого управления сайтом. Он опаснее: через один запрос к xmlrpc можно проверить сразу несколько тысяч комбинаций логин/пароль, что делает перебор в разы быстрее.
На практике это выглядит так: после свежей установки WordPress на новый домен боты находят сайт в течение нескольких дней и начинают долбить оба эндпоинта. Настройки безопасности по умолчанию этому никак не препятствуют.
Симптомы, которые я видел у клиентов: резкое падение производительности сайта, рост нагрузки на сервер без видимых причин, иногда - временная недоступность сайта из-за исчерпания лимитов хостинга. В логах сервера при этом - сотни одинаковых POST-запросов к wp-login.php или xmlrpc.php с разных IP-адресов. Если вы видите такую картину - сайт уже атакуют, и без дополнительных мер защиты это будет продолжаться. Без ограничения попыток WordPress будет отвечать на каждый такой запрос.
Плагины для ограничения попыток входа: какой выбрать
Первое, что нужно сделать после обнаружения атаки (или в качестве профилактики) - установить плагин, который будет блокировать IP-адреса после нескольких неудачных попыток входа. Таких плагинов несколько, и они заметно отличаются по функциональности.
Я пробовал разные решения на проектах студии. Для большинства сайтов малого и среднего бизнеса достаточно бесплатного функционала. Вот сравнительная таблица четырёх наиболее популярных вариантов:
| Плагин | Бесплатен | Ограничение попыток | Защита xmlrpc | 2FA | Нагрузка на сервер |
| Limit Login Attempts Reloaded | Да | Да | Да | Нет | Минимальная |
| Wordfence Security | Частично | Да | Да | Да (платно) | Средняя |
| Jetpack | Частично | Да | Да | Да (платно) | Средняя |
| All In One WP Security | Да | Да | Да | Нет (базово) | Низкая |
Мой выбор для большинства проектов - Limit Login Attempts Reloaded. Он занимается одним, но делает это хорошо: блокирует IP после заданного числа неудачных попыток входа, умеет ограничивать force attacks через xmlrpc, не грузит сервер и не тащит за собой кучу ненужных функций. Именно его я устанавливаю первым делом на новые проекты клиентов.
Wordfence - большой комбайн с файрволом, сканером вредоносного кода и многим другим. Хорош для сайтов, где нужна защита сразу по нескольким фронтам. Но у него есть минус: он заметно нагружает сервер, особенно во время сканирования. На дешёвом хостинге это может создавать проблемы. Защита от limit login attempts в нём есть и работает нормально, но если нужен только этот функционал - Wordfence избыточен.
Jetpack требует привязки к аккаунту WordPress.com, что нравится не всем. All In One WP Security - достойная альтернатива с широким набором настроек, но интерфейс перегружен, и новичкам в нём легко запутаться. Для force attacks защиты оба справляются, но я предпочитаю более лаконичные решения.
Главное при выборе: убедитесь, что плагин умеет обрабатывать не только форму входа, но и запросы к xmlrpc.php - именно там боты часто обходят стандартную защиту.
Как настроить ограничение попыток входа через плагин
Выбрали плагин - теперь установите его и правильно настройте. Покажу на примере Limit Login Attempts Reloaded, который рекомендую большинству клиентов.
- Установка. Заходите в панель WordPress: Плагины - Добавить новый. В строке поиска вводите «limit login attempts reloaded», находите плагин, жмёте «Установить» и затем «Активировать». Всё, плагин уже работает с настройками по умолчанию.
- После активации идите в Settings - Limit Login Attempts. Здесь три параметра, которые нужно проверить или скорректировать под свои задачи.
- Параметр Allowed retries - количество попыток до блокировки. Ставьте 3-5. Больше - теряем смысл защиты, меньше - рискуем заблокировать самого себя при случайной ошибке пароля.
- Параметр Minutes lockout - время первой блокировки. Рекомендую 20 минут: login attempts из автоматизированного скрипта остановятся, а легитимный пользователь просто подождёт.
- Параметр Lockouts increase lockout time - блокировка после повторных попыток. Если тот же IP продолжает атаковать после первой паузы, ставьте 24 часа. На практике большинство ботов отваливается уже после первой блокировки.
- Включите уведомления на email - параметр Email on lockout. Так вы сразу узнаете, если your WordPress оказался под атакой, а не обнаружите проблему случайно через неделю в логах хостинга.
Логика простая: IP блокируется после N неудачных попыток, задержка растёт при повторных атаках. Не нужно ставить слишком жёсткий лимит - 2 попытки с блокировкой на сутки создадут больше проблем вам, чем атакующим. Разумный баланс: 4 попытки, 20 минут, потом 24 часа.
Защита xmlrpc.php: отключить или ограничить

После того как разобрались с формой входа, нужно закрыть второй вектор - xmlrpc.php. Этот файл позволяет управлять WordPress через XML-запросы, и именно через него проходит значительная часть brute force attack. Посмотрите логи хостинга: если видите сотни POST-запросов к xmlrpc.php - это уже идёт атака.
Есть три подхода, выбор зависит от вашей инфраструктуры:
- Полное отключение через functions.php. Самый простой способ, если не используете мобильное приложение WordPress, JetPack или сторонние интеграции. Добавляете одну строку в файл
functions.phpактивной (дочерней) темы:
add_filter('xmlrpc_enabled', '__return_false'); Файл functions.php редактируете через файловый менеджер хостинг-панели или по FTP. После этого xmlrpc.php перестаёт отвечать на любые запросы.
- Блокировка на уровне сервера. Надёжнее - запрос вообще не доходит до PHP. Для Apache добавляете в .htaccess:
<Files xmlrpc.php>
order allow,deny
deny from all
</Files> Для nginx добавьте в конфиг блок location = /xmlrpc.php { deny all; }. Your server будет возвращать 403 до того, как WordPress вообще загрузится - это снижает нагрузку при массовых force attacks.
- Частичное ограничение. Если JetPack или другие сервисы требуют xmlrpc - установите плагин «Disable XML-RPC Pingback». Он отключает только функцию pingback, которую чаще всего используют для атак, оставляя нужные вам возможности работать.
Как проверить результат: откройте логи хостинга через панель управления и убедитесь, что POST-запросы к xmlrpc.php либо исчезли, либо получают статус 403. Если запросы идут и возвращают 200 - защита не работает, проверьте порядок правил в .htaccess.
Сложные пароли и смена стандартного логина admin
После того как настроили ограничение попыток входа и закрыли xmlrpc, следующий шаг - разобраться с логином и паролем. Это кажется очевидным, но именно здесь чаще всего остаётся дыра.
Логин admin - первое, что проверяет любой брутфорс-бот. Он встречается на большинстве сайтов по умолчанию, и боты об этом прекрасно знают. Если у вас ещё стоит такой логин, панель WordPress фактически открыта наполовину - боту остаётся только подобрать пароль.
Как сменить логин правильно:
- Создайте нового пользователя с правами администратора и нестандартным логином - например, ваше имя плюс несколько цифр.
- Войдите под новым аккаунтом.
- Удалите старого пользователя admin - при удалении WordPress предложит переназначить его записи и страницы на нового администратора. Выберите нового пользователя и подтвердите.
Теперь о пароле. Чтобы защититься от атак с перебором password combinations, пароль должен быть непредсказуемым: минимум 12 символов, микс строчных и заглавных букв, цифры и спецсимволы. WordPress сам генерирует надёжные пароли при создании пользователя - используйте эту функцию, не придумывайте вручную.
Чтобы требования к паролю распространялись на всех пользователей сайта, можно enforce strong passwords через плагины Wordfence или All In One WP Security. В Wordfence это делается в разделе Login Security - включаете опцию принудительной смены слабых паролей. Это важно для your site, если над ним работают несколько авторов или редакторов: сложные пароли должны стоять у всех, а не только у администратора.
И ещё один момент, про который часто забывают: перед любыми изменениями в настройках безопасности делайте резервное копирование. Риск взлома - это одно, но случайно заблокировать себе доступ к сайту при редактировании настроек - тоже неприятная ситуация. Бэкап перед изменениями - правило, которое я соблюдаю на всех проектах студии.
Дополнительные меры: двухфакторка, Cloudflare, резервное копирование
Плагин ограничения входа, закрытый xmlrpc, сложный пароль и смена логина - это уже хороший базовый уровень. Но для серьёзных проектов с реальным трафиком и коммерческими данными этого бывает недостаточно. Расскажу про меры, которые несложно добавить, а защита вырастает существенно.
Двухфакторная аутентификация. Даже если злоумышленник каким-то образом получил логин и пароль, двухфакторка его остановит. Плагин Two-Factor или плагин от Wordfence позволяет добавить подтверждение через Google Authenticator - при каждом входе нужно вводить одноразовый код с телефона. На проектах клиентов, где в панели работает несколько человек, я рекомендую включать 2FA хотя бы для администраторов.
Cloudflare WAF - это фильтрация трафика ещё до того, как запросы дошли до вашего хостинга и сервера. Бесплатный план даёт базовую защиту от известных brute force attack паттернов и автоматически блокирует часть вредоносных ботов. Для wordpress sites с посещаемостью от нескольких сотен человек в день - однозначно стоит подключить. Настройка занимает около получаса: меняете NS-записи домена на Cloudflare, включаете проксирование.
Смена URL страницы входа через плагин WPS Hide Login - простая, но рабочая мера. Боты атакуют стандартный адрес /wp-login.php, и если его не существует - автоматические атаки просто проходят мимо your site. Адрес входа знаете только вы.
Резервное копирование - последний рубеж на случай, если всё остальное не сработало. UpdraftPlus позволяет настроить автоматические бэкапы на внешнее хранилище: Google Drive, Dropbox или SFTP на отдельный сервер хостинга. Расписание - раз в сутки для активных проектов. Без внешнего хранилища резервное копирование теряет смысл: если сломали сервер, бэкап на том же сервере вам не поможет.
Как убедиться, что защита работает: чеклист

После того как все настройки сделаны, важно убедиться, что защита реально работает, а не просто установлена. Открой панель плагина Limit Login Attempts Reloaded - там есть раздел с логами заблокированных IP. Если видишь там записи - это хороший знак: плагин фиксирует brute force атаки и блокирует подозрительные login attempts. Пустые логи на активном сайте скорее говорят о том, что что-то настроено неправильно.
Вот чеклист, который я сам прохожу при аудите защиты на проектах студии. Пройди по каждому пункту и отметь, что уже сделано:
- Нестандартный логин администратора - логин «admin» удалён или переименован, вход по нему невозможен.
- Сложный пароль - минимум 16 символов, буквы разного регистра, цифры, спецсимволы. Пароль не используется на других сайтах.
- Ограничение попыток установить и активировать - плагин Limit Login Attempts Reloaded включён, лимит попыток выставлен (рекомендую 3-5 попыток до временной блокировки).
- xmlrpc.php закрыт - проверь через браузер или сервис типа xmlrpc.php checker: файл должен возвращать 403 или быть недоступен.
- Двухфакторная аутентификация включена - плагин 2FA активен, вход через приложение-аутентификатор работает.
- Резервное копирование настроено - UpdraftPlus или аналог делает автоматические бэкапы, последний бэкап успешно завершился.
- Cloudflare или WAF подключён - your site проходит через проксирование, правило защиты страницы входа активно.
Теперь про типичные проблемы. Самая частая - самоблокировка: ты сам вводишь пароль несколько раз неправильно и your wordpress блокирует твой собственный IP. Решается двумя способами: через панель плагина (раздел разблокировки IP) или через phpMyAdmin. Перед любыми правками в phpMyAdmin сделайте резервную копию базы данных. Далее: находишь таблицу wp_options, ищешь запись limit_login_lockouts и удаляешь её. Также помогает хостинг-панель: заходишь через неё в файловый менеджер и временно деактивируешь плагин, переименовав папку в /wp-content/plugins/.
Вторая типичная проблема - конфликты плагинов. Если после установки защиты перестала работать форма входа или возникают ошибки, поочерёдно деактивируй недавно установленные плагины и проверяй, исчезла ли проблема. Чаще всего конфликтуют плагины кэширования - они иногда кэшируют страницу входа и нарушают работу счётчика попыток.
Начни с установки Limit Login Attempts Reloaded - это займёт не больше 10 минут и закроет основной вектор атаки. После этого пройди чеклист сверху вниз и закрой оставшиеся пункты по одному. Полная защита занимает не больше часа работы.
Эта статья основана на личном опыте автора и актуальна на момент публикации. Интерфейсы сервисов и алгоритмы поисковых систем регулярно меняются, рекомендую проверять актуальность инструкций на официальных ресурсах. Если у вас остались вопросы - задайте их в комментариях.
Список литературы
- WordPress Contributors - Brute Force Attacks // WordPress Advanced Administration Handbook (developer.wordpress.org), обновлено 2026
- WordPress.com Support - Prevent unwanted login attempts (Brute Force Attack Protection) // WordPress.com, обновлено 2026
- WPChef - Limit Login Attempts Security (Limit Login Attempts Reloaded) // WordPress.org Plugin Repository, обновлено 2026
- awaik (Alex Awaikin) - И опять атака на сайты WordPress - перебор + XMLRPC // Habr, 2014







