Bruteforce-атаки по-прежнему остаются одной из главных угроз для сайтов на WordPress. Злоумышленники пытаются подобрать пароль с помощью перебора различных комбинаций, что может привести к блокировке администратора, снижению производительности сайта и даже компрометации безопасности. В этой статье я расскажу, как эффективно защитить WordPress от bruteforce-атак, используя популярные плагины и собственные решения на PHP.
Почему bruteforce-атаки опасны для WordPress
Bruteforce-атака – это попытка подобрать правильный логин и пароль путём перебора множества вариантов. В случае успешной атаки злоумышленник получает полный доступ к сайту и может навредить вашему проекту.
Частые попытки входа создают дополнительную нагрузку на сервер, что может замедлить работу сайта или привести к отказу в обслуживании.
Поэтому важно не только ограничить количество попыток авторизации, но и внедрить дополнительные уровни защиты.
Использование плагинов для защиты от bruteforce-атак
Самый простой способ защитить сайт – установить специализированный плагин. Рассмотрим несколько популярных решений.
1. Limit Login Attempts Reloaded
Этот плагин позволяет ограничить количество попыток входа с одного IP-адреса, блокируя пользователя на определённое время после превышения лимита.
- Поддержка блокировки по IP и Cookie
- Отправка уведомлений на email при блокировке
- Логирование попыток входа
Для установки достаточно перейти в админку WordPress, найти плагин по названию и активировать его.
2. WP Cerber Security
Мощный плагин для защиты от bruteforce, а также от спама и других видов атак. Позволяет настроить белые и чёрные списки IP, ограничить количество попыток входа, использовать reCAPTCHA.
Особенность – возможность интеграции с другими сервисами и расширенный аудит безопасности.
3. Loginizer
Простой и эффективный плагин для ограничения попыток входа. Позволяет блокировать IP, добавлять белые списки и настраивать время блокировки.
Дополнительные методы защиты с помощью кода
Плагины — отличный выбор, но иногда хочется иметь более гибкий и лёгкий способ защиты без лишних зависимостей. Рассмотрим пример собственного кода, который ограничит количество попыток входа с одного IP.
Пример: Ограничение попыток входа с использованием transient API
function wpfreecourses_limit_login_attempts() {
$ip = $_SERVER['REMOTE_ADDR'];
$transient_key = 'wpfreecourses_login_attempts_' . $ip;
$attempts = (int) get_transient($transient_key);
if ($attempts >= 5) {
wp_die('Вы превысили число попыток входа. Попробуйте позже.');
}
}
add_action('wp_authenticate', 'wpfreecourses_limit_login_attempts', 1);
function wpfreecourses_increment_login_attempts($user, $username, $password) {
if (is_wp_error($user)) {
$ip = $_SERVER['REMOTE_ADDR'];
$transient_key = 'wpfreecourses_login_attempts_' . $ip;
$attempts = (int) get_transient($transient_key);
$attempts++;
set_transient($transient_key, $attempts, 15 * MINUTE_IN_SECONDS);
} else {
// При успешном входе удаляем счетчик
$ip = $_SERVER['REMOTE_ADDR'];
$transient_key = 'wpfreecourses_login_attempts_' . $ip;
delete_transient($transient_key);
}
}
add_filter('authenticate', 'wpfreecourses_increment_login_attempts', 30, 3);
В этом коде мы создаём ограничение на 5 попыток входа с одного IP в течение 15 минут. Если лимит превышен, выводим сообщение об ошибке.
Реализация дополнительной защиты с помощью reCAPTCHA
Для повышения безопасности стоит добавить проверку reCAPTCHA на страницу входа. Это значительно снижает риск автоматических атак.
Можно использовать бесплатный плагин Google Captcha (reCAPTCHA) by BestWebSoft или интегрировать reCAPTCHA вручную.
Пример добавления reCAPTCHA вручную
1. Зарегистрируйтесь на Google reCAPTCHA и получите ключи.
2. Добавьте следующий код в functions.php вашей темы или в плагин:
function wpfreecourses_add_recaptcha_to_login() {
?>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<div class="g-recaptcha" data-sitekey="ВАШ_КЛЮЧ_САЙТА"></div>
<?php
}
add_action('login_form', 'wpfreecourses_add_recaptcha_to_login');
function wpfreecourses_verify_recaptcha_on_login($user, $username, $password) {
if (isset($_POST['g-recaptcha-response'])) {
$response = wp_remote_post('https://www.google.com/recaptcha/api/siteverify', array(
'body' => array(
'secret' => 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ',
'response' => $_POST['g-recaptcha-response'],
'remoteip' => $_SERVER['REMOTE_ADDR']
)
));
$response_body = wp_remote_retrieve_body($response);
$result = json_decode($response_body, true);
if (!$result['success']) {
return new WP_Error('captcha_invalid', __('<strong>Ошибка:</strong> Пожалуйста, подтвердите, что вы не робот.'));
}
} else {
return new WP_Error('captcha_missing', __('<strong>Ошибка:</strong> Пожалуйста, подтвердите reCAPTCHA.'));
}
return $user;
}
add_filter('authenticate', 'wpfreecourses_verify_recaptcha_on_login', 21, 3);
Этот код добавит reCAPTCHA на форму входа и проверит её перед авторизацией пользователя.
Рекомендации для комплексной защиты от bruteforce-атак
- Используйте надёжные пароли и меняйте их регулярно.
- Ограничивайте количество попыток авторизации с помощью плагинов или собственного кода.
- Добавляйте капчу на страницы входа.
- Активируйте двухфакторную аутентификацию (например, плагин WPGPT поддерживает интеграцию с 2FA).
- Мониторьте логи попыток входа и блокируйте подозрительные IP.
- Регулярно обновляйте WordPress, темы и плагины для устранения уязвимостей.
Защита от bruteforce-атак — это комплекс мер, и лучше сочетать несколько методов для максимальной безопасности сайта.