wpcodes.ru wordpress WP Codеs

Как защитить WordPress от Brute Force атак: практические решения и примеры кода

Brute Force атаки — одна из самых распространённых угроз для сайтов на WordPress. Злоумышленники пытаются подобрать пароль, перебирая множество вариантов с целью получить доступ к админке. В этой статье подробно разберём, как эффективно защитить WordPress от таких атак, используя плагины, встроенные методы и кастомные решения с примерами кода.

Что такое Brute Force атака и почему она опасна для WordPress

Brute Force атака — это метод взлома, при котором автоматизированные скрипты перебирают логины и пароли для входа на сайт. В WordPress чаще всего целью становятся учётные записи с правами администратора, так как их взлом открывает полный контроль над сайтом.

Опасность заключается не только в потере контроля над ресурсом, но и в дальнейшем использовании сайта для рассылки спама, размещения вредоносного кода или участия в ботнетах. Поэтому важно предпринять меры защиты ещё на этапе разработки и поддержки сайта.

Использование плагинов для защиты от Brute Force

Самый простой и эффективный способ — установить специализированный плагин, который ограничит количество попыток входа, заблокирует IP-адреса или добавит капчу.

Популярные плагины для защиты от Brute Force

  • Loginizer — ограничивает количество попыток входа, блокирует IP, поддерживает белые списки.
  • WP Cerber Security — комплексный плагин с защитой от Brute Force, двухфакторной аутентификацией и мониторингом активности.
  • Wordfence Security — мощный инструмент с файрволом, сканером и защитой от атак.

Например, чтобы настроить Loginizer, достаточно установить и активировать плагин, затем в его настройках задать количество попыток (например, 5) и время блокировки (например, 30 минут).

Для установки плагина через админку WordPress:

function wpcodes_install_loginizer() {
    if ( !function_exists('activate_plugin') ) {
        include_once ABSPATH . 'wp-admin/includes/plugin.php';
    }
    $plugin_slug = 'loginizer/loginizer.php';
    if ( !is_plugin_active( $plugin_slug ) ) {
        activate_plugin( $plugin_slug );
    }
}

Ограничение попыток входа с помощью кода в functions.php

Если вы хотите обойтись без плагинов, можно реализовать защиту самостоятельно. Ниже пример функции, которая ограничивает количество неудачных попыток входа по IP и блокирует дальнейшие попытки на 15 минут.

function wpcodes_limit_login_attempts() {
    $ip = $_SERVER['REMOTE_ADDR'];
    $transient_name = 'wpcodes_login_attempts_' . $ip;
    $attempts = (int) get_transient($transient_name);

    if ( $attempts >= 5 ) {
        wp_die('Вы превысили количество попыток входа. Попробуйте через 15 минут.');
    }
}
add_action('wp_login_failed', 'wpcodes_increment_login_attempts');

function wpcodes_increment_login_attempts() {
    $ip = $_SERVER['REMOTE_ADDR'];
    $transient_name = 'wpcodes_login_attempts_' . $ip;
    $attempts = (int) get_transient($transient_name);
    $attempts++;
    set_transient($transient_name, $attempts, 15 * MINUTE_IN_SECONDS);
}

add_action('login_form', 'wpcodes_limit_login_attempts');

Этот код хранит количество неудачных попыток во временном кеше WordPress. После 5 неудачных попыток с одного IP вход блокируется на 15 минут. Такой подход прост и не требует установки плагинов, но не защищает от атак с разных IP или с прокси.

Добавление капчи на страницу входа

Капча — эффективный способ предотвратить автоматизированные атаки. Один из популярных вариантов — интеграция Google reCAPTCHA.

Для добавления reCAPTCHA вручную можно использовать следующий пример:

function wpcodes_add_recaptcha_to_login() {
    ?>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    <div class="g-recaptcha" data-sitekey="ВАШ_SITE_KEY"></div>
    <?php
}
add_action('login_form', 'wpcodes_add_recaptcha_to_login');

function wpcodes_verify_recaptcha_on_login($user, $username, $password) {
    if ( isset($_POST['g-recaptcha-response']) ) {
        $response = wp_remote_post('https://www.google.com/recaptcha/api/siteverify', [
            'body' => [
                '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_failed', __('<strong>Ошибка:</strong> Пожалуйста, подтвердите, что вы не робот.'));
        }
    } else {
        return new WP_Error('captcha_missing', __('<strong>Ошибка:</strong> Капча не была пройдена.'));
    }
    return $user;
}
add_filter('authenticate', 'wpcodes_verify_recaptcha_on_login', 21, 3);

Для работы нужно зарегистрироваться на Google reCAPTCHA и получить Site Key и Secret Key. Этот код добавит капчу на страницу входа и проверит ответ при аутентификации.

Двухфакторная аутентификация (2FA) как дополнительный уровень защиты

Добавление 2FA значительно усложняет задачу злоумышленнику. Для WordPress существуют плагины, например, WPCommunity, которые поддерживают двухфакторную аутентификацию с помощью Google Authenticator, email или SMS.

Настройка 2FA обычно проста и занимает несколько минут. После активации пользователь при входе вводит не только пароль, но и одноразовый код из приложения на смартфоне.

Дополнительные советы по защите от Brute Force атак

  • Смена стандартного URL входа: Переименуйте страницу входа с /wp-login.php на что-то уникальное с помощью плагинов вроде WPS Hide Login.
  • Использование сложных паролей: Обязательно используйте пароли с высокой энтропией, состоящие из букв, цифр и символов.
  • Ограничение доступа по IP: Если у вас фиксированные IP для администраторов, настройте ограничение доступа через .htaccess или серверные правила.
  • Регулярное обновление: Обновляйте ядро WordPress, темы и плагины, чтобы закрывать уязвимости.

Выводы и рекомендации

Защита WordPress от Brute Force атак — обязательный элемент безопасности любого сайта. Используйте комплексный подход: установите плагин для ограничения попыток, добавьте капчу, рассмотрите двухфакторную аутентификацию и не забывайте про регулярные обновления.

Если хотите быстро и эффективно защитить сайт, обратите внимание на плагин WPCommunity — он сочетает в себе множество функций безопасности, включая 2FA.

×

Создай идеальный сайт – теперь на 15% дешевле!

Подобрать тему →