Bruteforce-атаки — одна из самых частых угроз для сайтов на WordPress. Злоумышленники пытаются подобрать логин и пароль к админке перебором вариантов, что может привести к взлому и потере контроля над сайтом. В этой статье разберём, как эффективно защитить WordPress от bruteforce-атак, используя как готовые плагины, так и собственные решения с примерами кода.
Почему bruteforce-атаки опасны для WordPress
Bruteforce-атаки представляют собой автоматический перебор логинов и паролей с целью получить доступ к административной панели. Особенность WordPress — большое количество сайтов, что делает его привлекательной целью для злоумышленников. Если атака прошла успешно, хакеры могут изменить контент, установить вредоносное ПО или использовать сайт для рассылки спама.
Кроме прямой угрозы безопасности, такие атаки создают высокую нагрузку на сервер, что замедляет работу сайта и может привести к его временному недоступности.
Поэтому задача — сделать так, чтобы атака была либо невозможной, либо неэффективной.
Основные методы защиты от bruteforce-атак в WordPress
1. Ограничение количества попыток входа
Самый простой и эффективный способ — запретить большее количество попыток входа за короткий промежуток времени. Например, после 3 неудачных попыток заблокировать IP на 15 минут.
Для этого отлично подходит плагин Clearfy Pro. Он имеет встроенную функцию ограничения попыток входа с гибкими настройками.
Если хочется обойтись без плагинов, можно добавить в functions.php следующий код:
function wpsource_limit_login_attempts() {
$max_attempts = 3;
$lockout_time = 15 * 60; // 15 минут
$ip = $_SERVER['REMOTE_ADDR'];
$transient_name = 'wpsource_login_attempts_' . md5($ip);
$attempts = (int) get_transient($transient_name);
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['log'])) {
if ($attempts >= $max_attempts) {
wp_die('Слишком много попыток входа. Попробуйте через 15 минут.');
}
}
}
add_action('wp_login_failed', 'wpsource_limit_login_attempts');
function wpsource_increase_login_attempts() {
$ip = $_SERVER['REMOTE_ADDR'];
$transient_name = 'wpsource_login_attempts_' . md5($ip);
$attempts = (int) get_transient($transient_name);
$attempts++;
set_transient($transient_name, $attempts, 15 * 60);
}
add_action('wp_login_failed', 'wpsource_increase_login_attempts');
function wpsource_clear_login_attempts() {
$ip = $_SERVER['REMOTE_ADDR'];
$transient_name = 'wpsource_login_attempts_' . md5($ip);
delete_transient($transient_name);
}
add_action('wp_login', 'wpsource_clear_login_attempts');
Этот код считает попытки неудачного входа с одного IP и блокирует повторы.
2. Использование двухфакторной аутентификации (2FA)
Добавление второго шага проверки входа значительно повышает безопасность. Даже если пароль скомпрометирован, без второго фактора злоумышленник не сможет войти.
Для реализации 2FA можно использовать плагин WPCommunity с расширением для 2FA или популярные бесплатные плагины, например, «Two Factor Authentication».
Настройка 2FA обычно включает привязку мобильного приложения (Google Authenticator, Authy) или отправку кода по email.
3. Смена стандартного URL входа
По умолчанию страница входа в WordPress доступна по адресу /wp-login.php или /wp-admin. Злоумышленники знают это и направляют атаки именно туда.
Изменение URL входа затруднит автоматизированные атаки. Для этого можно использовать плагин Clearfy Pro или My Popup с опцией редиректа входа.
Пример собственного решения с использованием фильтра site_url:
function wpsource_custom_login_url( $url, $path, $orig_scheme, $blog_id ) {
if ( $path === 'wp-login.php' || $path === 'wp-admin' ) {
return home_url( '/custom-login/' );
}
return $url;
}
add_filter( 'site_url', 'wpsource_custom_login_url', 10, 4 );
Далее создайте страницу с адресом /custom-login/ и настройте редиректы, чтобы обработать вход.
Дополнительные методы усиления безопасности
Использование .htaccess для ограничения доступа по IP
Если у вас фиксированный IP для администраторов, можно ограничить доступ к wp-login.php или директории wp-admin только этим IP. Для этого в .htaccess добавьте:
<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from 123.456.789.000
</Files>
Это полностью блокирует попытки входа с других адресов.
Блокировка ботов через robots.txt и файрвол
Добавьте защиту на уровне сервера или CDN (например, Cloudflare), чтобы фильтровать подозрительный трафик и ботов, которые пытаются делать bruteforce.
Использование капчи на странице входа
Добавьте капчу (reCAPTCHA, hCaptcha) чтобы предотвратить автоматические попытки входа. Плагины, например, Expert Review, поддерживают интеграцию капчи.
Пример комплексной настройки защиты bruteforce для WordPress
Для максимальной безопасности рекомендуем использовать комплексный подход:
- Установить и настроить Clearfy Pro для ограничения попыток входа и смены URL.
- Активировать двухфакторную аутентификацию с помощью WPCommunity.
- Добавить капчу на форму входа.
- Если возможно, ограничить доступ по IP через .htaccess.
- Подключить веб-фаервол на уровне хостинга или CDN.
Такой подход не только защитит сайт от bruteforce-атак, но и значительно снизит нагрузку от несанкционированных запросов.