Что такое Brute Force атаки на WordPress и почему это опасно
Brute Force атаки — это метод подбора пароля, при котором злоумышленник перебирает различные варианты логинов и паролей для доступа к админ-панели вашего сайта на WordPress. Из-за популярности WordPress и часто слабых паролей взломщики активно используют этот метод. Результат может быть критическим: взлом сайта, размещение вредоносного кода, потеря данных или даже полный контроль над сервером.
Важно понимать, что даже сайты с минимальным трафиком подвергаются таким атакам, поскольку боты и скрипты массово сканируют тысячи сайтов в поисках уязвимостей. Поэтому грамотная защита от Brute Force атак — обязательный элемент безопасности WordPress.
В этой статье разберем проверенные способы защиты, включая плагины и кастомные решения с примерами кода, которые помогут снизить риск взлома.
Использование плагинов для защиты от Brute Force атак
Популярные плагины и их возможности
Среди множества плагинов для защиты от Brute Force атак выделяются следующие:
- Wordfence Security — многофункциональный плагин с встроенной защитой от перебора паролей, блокировкой IP, сканированием на вредоносный код.
- Login LockDown — простой и легкий плагин, который блокирует IP после определенного числа неудачных попыток входа.
- Limit Login Attempts Reloaded — расширенная версия с возможностью настройки количества попыток и времени блокировки.
- WP Cerber Security — комплексная защита с антиспамом, ограничением доступа по IP и мониторингом активности.
Использование этих плагинов позволяет быстро и эффективно ограничить попытки несанкционированного входа, а также получать уведомления о подозрительной активности.
Настройка Limit Login Attempts Reloaded
Рассмотрим на примере Limit Login Attempts Reloaded, как настроить плагин для максимальной защиты:
- Установите и активируйте плагин через админ-панель WordPress.
- Перейдите в Настройки > Limit Login Attempts.
- Установите лимит неудачных попыток, например 5 попыток, после чего IP будет заблокирован на 20 минут.
- Включите оповещение на email о блокировках.
- Добавьте белый список IP, если нужно, чтобы определённые адреса не блокировались.
Эти простые настройки значительно усложнят работу злоумышленникам.
Кодовые примеры защиты от Brute Force атак без плагинов
Реализация лимита попыток входа с помощью сессий и transient API
Если вы предпочитаете не использовать плагины, можно реализовать защиту самостоятельно, используя возможности WordPress. Например, ограничим число попыток входа с одного IP адреса.
function wphide_limit_login_attempts() {
if ( isset($_POST['log']) && isset($_POST['pwd']) ) {
$ip = $_SERVER['REMOTE_ADDR'];
$key = 'wphide_login_attempts_'.md5($ip);
$attempts = (int) get_transient($key);
if ($attempts >= 5) {
wp_die('Слишком много попыток входа. Попробуйте через 15 минут.');
exit;
}
}
}
add_action('wp_login_failed', 'wphide_login_failed_increment');
function wphide_login_failed_increment() {
$ip = $_SERVER['REMOTE_ADDR'];
$key = 'wphide_login_attempts_'.md5($ip);
$attempts = (int) get_transient($key);
$attempts++;
set_transient($key, $attempts, 15 * MINUTE_IN_SECONDS);
}
add_action('wp_authenticate', 'wphide_limit_login_attempts');
// Сброс счетчика при успешном входе
add_action('wp_login', 'wphide_login_success_reset', 10, 2);
function wphide_login_success_reset($user_login, $user) {
$ip = $_SERVER['REMOTE_ADDR'];
$key = 'wphide_login_attempts_'.md5($ip);
delete_transient($key);
}Этот код ограничит количество неудачных попыток с одного IP адреса до 5 за 15 минут, блокируя дальнейшие попытки и уведомляя пользователя.
Добавление reCAPTCHA на страницу входа
Ещё один эффективный способ — добавить Google reCAPTCHA, чтобы отсеять автоматические боты. Вот простой пример интеграции reCAPTCHA v2:
- Зарегистрируйтесь на Google reCAPTCHA и получите ключи.
- Добавьте следующий код в functions.php вашей темы или плагина:
function wphide_recaptcha_scripts() {
if ( 'wp-login.php' == $GLOBALS['pagenow'] ) {
wp_enqueue_script('google-recaptcha', 'https://www.google.com/recaptcha/api.js');
}
}
add_action('login_enqueue_scripts', 'wphide_recaptcha_scripts');
function wphide_custom_login_form() {
echo '<div class="g-recaptcha" data-sitekey="ВАШ_SITE_KEY"></div>';
}
add_action('login_form', 'wphide_custom_login_form');
function wphide_verify_recaptcha($user, $password) {
if ( isset($_POST['g-recaptcha-response']) ) {
$response = wp_remote_post('https://www.google.com/recaptcha/api/siteverify', array(
'body' => array(
'secret' => 'ВАШ_SECRET_KEY',
'response' => $_POST['g-recaptcha-response'],
'remoteip' => $_SERVER['REMOTE_ADDR']
)
));
$response_body = wp_remote_retrieve_body($response);
$result = json_decode($response_body, true);
if ( empty($result['success']) || !$result['success'] ) {
return new WP_Error('captcha_invalid', 'Ошибка: подтвердите, что вы не робот.');
}
} else {
return new WP_Error('captcha_missing', 'Ошибка: подтверждение reCAPTCHA обязательно.');
}
return $user;
}
add_filter('authenticate', 'wphide_verify_recaptcha', 21, 2);Не забудьте заменить ВАШ_SITE_KEY и ВАШ_SECRET_KEY на реальные ключи из Google. После этого на странице входа появится reCAPTCHA, и ботам будет сложнее подобрать пароль.
Дополнительные советы по защите от Brute Force атак на WordPress
Смена стандартного URL страницы входа
Хотя у вас уже есть статья по изменению URL страницы входа, стоит напомнить, что это снижает вероятность попадания под массовые атаки по умолчанию на wp-login.php. Используйте плагины вроде WPS Hide Login, чтобы легко изменить URL.
Ограничение доступа по IP
Если администрация сайта ведется с фиксированных IP-адресов, можно ограничить доступ к странице входа только для них. Например, добавьте в .htaccess:
<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from 123.45.67.89
Allow from 98.76.54.32
</Files><Это значительно повысит безопасность, но подойдет не для всех случаев, особенно если IP динамические.
Использование двухфакторной аутентификации (2FA)
Двухфакторная аутентификация — один из самых надежных способов защитить вход. Плагины вроде Google Authenticator или Two Factor добавляют обязательный второй шаг проверки, что резко снижает риск взлома даже при скомпрометированном пароле.
Рекомендуется использовать 2FA в комплексе с ограничением попыток входа и reCAPTCHA.
Мониторинг и логирование попыток входа
Для своевременного обнаружения атак полезно вести логи попыток входа. Плагин WP Security Audit Log позволяет отслеживать активность пользователей и уведомлять администратора о подозрительных событиях.
Также можно настроить отправку email при превышении лимита попыток, чтобы оперативно реагировать на угрозы.