Как установить и настроить защиту от bruteforce-атак в WordPress без плагинов

Диагностика проблемы bruteforce-атак на WordPress

Bruteforce-атаки — это попытки злоумышленников подобрать логин и пароль методом перебора. Они могут негативно сказаться на производительности сайта, привести к блокировкам хостинга и даже взлому. Основные признаки bruteforce-атак:

  • Многочисленные неудачные попытки входа в админ-панель в короткий промежуток времени.
  • Увеличение нагрузки на сервер, особенно на страницу входа (wp-login.php).
  • Блокировки IP или временные ограничения со стороны хостинга.

Для диагностики можно посмотреть логи сервера или воспользоваться утилитами командной строки, например, grep в access.log:

grep "wp-login.php" /var/log/apache2/access.log | grep "POST" | awk '{print $1}' | sort | uniq -c | sort -nr | head -20

Эта команда покажет IP, с которых приходит максимум попыток POST-запросов на страницу входа.

Пошаговое решение: настройка защиты от bruteforce без плагинов

1. Ограничение количества попыток входа через .htaccess

Метод блокирует IP, которые делают слишком много запросов на wp-login.php и xmlrpc.php.

# Защита от bruteforce на wp-login.php и xmlrpc.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} ^/(wp-login\.php|xmlrpc\.php)$ [NC]
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000$  # Ваш IP, чтобы не заблокировать себя
RewriteCond %{ENV:LIMIT_LOGIN_ATTEMPTS} >5
RewriteRule ^.* - [F,L]
</IfModule>

<IfModule mod_setenvif.c>
SetEnvIf REQUEST_URI "^/(wp-login\.php|xmlrpc\.php)$" LIMIT_LOGIN_ATTEMPTS=0
</IfModule>

# Реализация подсчёта запросов через Fail2ban или аналогичные инструменты предпочтительнее

Однако .htaccess ограничен и лучше дополнить серверными правилами.

2. Использование Fail2ban для блокировки IP с множеством неудачных попытов входа

Fail2ban — это Linux-утилита, которая анализирует логи и блокирует IP.

Пример настройки jail для WordPress (Debian/Ubuntu):

[wordpress]
enabled = true
filter = wordpress
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600

Создайте фильтр /etc/fail2ban/filter.d/wordpress.conf с содержимым:

[Definition]
failregex = .*Failed password for .* from <HOST> port.*
ignoreregex =

Это пример, нужно подстроить под формат логов вашего сервера.

3. Защита wp-login.php через HTTP-авторизацию

Добавьте дополнительный уровень защиты с помощью Basic Auth.

# В .htaccess в папке wp-admin
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /path/to/.htpasswd
Require valid-user

Создайте файл .htpasswd через команду htpasswd -c /path/to/.htpasswd username.

4. Отключение XML-RPC, если не используется

XML-RPC часто используется для bruteforce через сервисы.

add_filter('xmlrpc_enabled', '__return_false');

Добавьте этот код в functions.php вашей темы или в отдельный плагин.

Проверка результата после внедрения защиты

  • Мониторьте логи сервера: количество попыток входа должно значительно снизиться.
  • Проверьте, что ваш IP не заблокирован (если вы добавили исключение).
  • Используйте онлайн-сервисы для проверки доступности wp-login.php с разных IP.
  • Проверьте работоспособность входа в админку через браузер.

Частые ошибки и как их исправить

  • Блокировка собственного IP: всегда добавляйте исключения в .htaccess и Fail2ban для своего IP.
  • Неправильный формат логов в Fail2ban: адаптируйте регулярные выражения под свои логи, иначе защита не сработает.
  • Отключение XML-RPC ломает легитимные сервисы: убедитесь, что вы не используете мобильные приложения или внешние сервисы, которые зависят от XML-RPC.
  • Неправильное расположение .htpasswd: файл должен быть вне публичной директории сайта.

Практические советы по безопасности и производительности

  • Регулярно обновляйте WordPress, темы и плагины — устаревшее ПО часто уязвимо.
  • Используйте сложные пароли и двухфакторную аутентификацию (2FA) для всех администраторов.
  • Минимизируйте число пользователей с правами администратора.
  • Используйте серверные механизмы кеширования и защиты, чтобы снизить нагрузку от bruteforce.
  • Если не хотите возиться с настройками вручную, рассмотрите WPShop плагин Clearfy Pro — он умеет отключать XML-RPC и блокировать подозрительные запросы.
Как удалить по умолчанию скрипты и стили в WooCommerce для ускорения сайта
10.05.2026
Как разделить библиотеку медиаконтента в WordPress по категориям
26.02.2026
Как настроить отложенный запуск задач в WordPress без плагинов
07.01.2026
Оптимизация кода WordPress: как найти и удалить неиспользуемые хуки
24.01.2026
Оптимизация базы данных WordPress: как ускорить сайт и снизить нагрузку
14.11.2025