Brute Force атаки — одна из наиболее распространенных угроз для сайтов на WordPress, особенно для страниц входа. Взломщики пытаются подобрать пароль перебором, что может привести к компрометации сайта. Для защиты от подобных атак существует множество решений, и одним из самых эффективных является плагин Limit Login Attempts Reloaded. В этой статье мы подробно рассмотрим, как защитить WordPress от Brute Force атак с помощью этого плагина, а также покажем, как реализовать простую защиту собственными силами через код.
Что такое Brute Force атака и почему она опасна
Brute Force атака — это метод взлома, при котором злоумышленник перебирает возможные комбинации логина и пароля, пытаясь подобрать правильные учетные данные для входа на сайт. В случае WordPress целью обычно является файл wp-login.php или REST API аутентификация.
Опасность таких атак в том, что они могут привести к полной компрометации сайта: получению доступа к административной панели, изменению контента, установке вредоносного кода и даже к потере данных.
Чтобы предотвратить Brute Force атаки, важно ограничить количество попыток входа и блокировать IP-адреса злоумышленников.
Использование плагина Limit Login Attempts Reloaded для защиты входа
Limit Login Attempts Reloaded — бесплатный и простой в настройке плагин, который ограничивает количество попыток входа с одного IP-адреса. После превышения лимита IP блокируется на заданный период времени.
Основные возможности плагина:
- Настраиваемое количество попыток входа;
- Блокировка IP на определенное время;
- Уведомления администратора о заблокированных попытках;
- Белые и черные списки IP;
- Логирование всех попыток входа.
Установка и базовая настройка Limit Login Attempts Reloaded
Для установки плагина выполните следующие шаги:
- Перейдите в админ-панель WordPress в раздел "Плагины" → "Добавить новый".
- В поле поиска введите "Limit Login Attempts Reloaded".
- Найдите плагин и нажмите "Установить", затем "Активировать".
После активации перейдите в Настройки → Limit Login Attempts, где можно задать:
- Количество попыток входа (например, 5);
- Время блокировки IP (например, 20 минут);
- Время блокировки при повторных попытках;
- Настройки уведомлений и белые списки IP.
Как плагин защищает от Brute Force
Когда пользователь вводит неправильный пароль больше заданного количества раз, плагин блокирует IP-адрес на определенное время. Это значительно затрудняет подбор пароля перебором, ведь ботам придется ждать, чтобы продолжить попытки.
Кроме того, плагин ведет журнал попыток, что позволяет администратору отслеживать подозрительную активность.
Дополнительная кастомизация защиты через код
Если по каким-то причинам вы не хотите использовать сторонние плагины или хотите дополнить защиту, можно реализовать ограничение попыток входа на PHP с помощью хуков WordPress.
Ниже пример простого решения с использованием transient API для хранения количества попыток с одного IP:
function wplogin_limit_login_attempts() {
$ip = $_SERVER['REMOTE_ADDR'];
$transient_key = 'wplogin_failed_attempts_' . $ip;
$max_attempts = 5;
$block_time = 15 * MINUTE_IN_SECONDS; // 15 минут
$failed_attempts = get_transient($transient_key);
if ($failed_attempts === false) {
$failed_attempts = 0;
}
if ($failed_attempts >= $max_attempts) {
wp_die('Слишком много неудачных попыток входа. Попробуйте позже.');
}
}
add_action('wp_login_failed', 'wplogin_track_failed_attempts');
add_action('login_form', 'wplogin_limit_login_attempts');
function wplogin_track_failed_attempts() {
$ip = $_SERVER['REMOTE_ADDR'];
$transient_key = 'wplogin_failed_attempts_' . $ip;
$failed_attempts = get_transient($transient_key);
if ($failed_attempts === false) {
$failed_attempts = 1;
} else {
$failed_attempts++;
}
set_transient($transient_key, $failed_attempts, 15 * MINUTE_IN_SECONDS);
}
Здесь мы при каждой неудачной попытке увеличиваем счетчик и блокируем дальнейшие попытки после 5 неудач на 15 минут.
Преимущества и ограничения собственного кода
Такое решение не требует установки плагинов и позволяет гибко настраивать логику под себя. Однако оно не ведет лог и не уведомляет администратора, а также не защищает от распределенных атак с разных IP.
Поэтому для надежной защиты рекомендуется использовать комплексный подход — плагин + кастомный код.
Дополнительные рекомендации по защите страницы входа
Помимо ограничения попыток входа, рекомендуем принять следующие меры:
- Смена URL страницы входа — скрыть стандартный
wp-login.phpс помощью плагинов типа Clearfy Pro; - Включение двухфакторной аутентификации с помощью плагинов, например, WPGPT;
- Ограничение доступа по IP к странице входа через .htaccess или плагины;
- Использование сложных паролей и регулярная их смена.
Выводы
Защита от Brute Force атак — обязательный элемент безопасности любого сайта на WordPress. Плагин Limit Login Attempts Reloaded предоставляет простой и эффективный способ ограничить попытки входа, а дополнение его пользовательским кодом позволит гибко настроить защиту под свои нужды. Не забывайте также про комплексные меры безопасности, чтобы максимально снизить риски взлома.