WordPress автоматическая блокировка подозрительных входов: настройка и примеры кода

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

Почему важна автоматическая блокировка подозрительных попыток входа

Частые неудачные попытки входа могут привести к нескольким проблемам:

  • Высокая нагрузка на сервер из-за множества запросов;
  • Повышенный риск взлома админ-панели;
  • Утрата контроля над сайтом и возможные последствия в виде компрометации данных.

Чтобы минимизировать эти риски, стоит использовать автоматическую блокировку IP-адресов или пользователей, совершающих подозрительные действия.

Популярные плагины для автоматической блокировки

1. Wordfence Security

Wordfence — один из самых популярных и мощных плагинов безопасности. Он включает в себя возможность блокировки IP после заданного количества неудачных попыток входа.

Для настройки:

  1. Установите и активируйте Wordfence.
  2. Перейдите в Wordfence > Firewall > Brute Force Protection.
  3. Настройте параметры блокировки, например, время блокировки и количество попыток.

Wordfence также поддерживает уведомления о блокировках и статистику.

2. Limit Login Attempts Reloaded

Легковесный и простой плагин, который позволяет ограничить количество попыток входа с одного IP.

Основные настройки:

  • Количество попыток до блокировки;
  • Время блокировки;
  • Белый список IP.

Плагин подходит для сайтов, где не требуется сложная система защиты.

Реализация автоматической блокировки через код (без плагинов)

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

function wpauth_check_login_attempts() {
    $ip = $_SERVER['REMOTE_ADDR'];
    $transient_name = 'wpauth_login_attempts_' . $ip;
    $attempts = get_transient($transient_name);
    if (!$attempts) {
        $attempts = 0;
    }

    if ($attempts >= 5) {
        wp_die('Доступ с вашего IP временно заблокирован из-за слишком большого количества неудачных попыток входа. Попробуйте позже.');
    }
}
add_action('wp_login_failed', 'wpauth_increment_login_attempts');
add_action('login_init', 'wpauth_check_login_attempts');

function wpauth_increment_login_attempts() {
    $ip = $_SERVER['REMOTE_ADDR'];
    $transient_name = 'wpauth_login_attempts_' . $ip;
    $attempts = get_transient($transient_name);
    if (!$attempts) {
        $attempts = 0;
    }
    $attempts++;
    set_transient($transient_name, $attempts, 15 * MINUTE_IN_SECONDS); // блокировка на 15 минут
}

function wpauth_clear_login_attempts($user_login, $user) {
    $ip = $_SERVER['REMOTE_ADDR'];
    $transient_name = 'wpauth_login_attempts_' . $ip;
    delete_transient($transient_name);
}
add_action('wp_login', 'wpauth_clear_login_attempts', 10, 2);

В этом коде мы используем WordPress Transients API для хранения количества неудачных попыток входа с каждого IP. Если попыток больше или равно 5, происходит блокировка с выводом сообщения.

Улучшение кастомной блокировки: добавление белого и черного списка

Для повышения гибкости можно добавить возможность исключать IP из проверки или наоборот — блокировать заранее известные вредоносные адреса.

function wpauth_check_login_attempts() {
    $ip = $_SERVER['REMOTE_ADDR'];
    $whitelist = ['123.45.67.89']; // пример белого списка
    $blacklist = ['111.222.333.444']; // пример черного списка

    if (in_array($ip, $whitelist)) {
        return; // пропускаем проверку для белого списка
    }

    if (in_array($ip, $blacklist)) {
        wp_die('Доступ заблокирован.');
    }

    $transient_name = 'wpauth_login_attempts_' . $ip;
    $attempts = get_transient($transient_name);
    if (!$attempts) {
        $attempts = 0;
    }

    if ($attempts >= 5) {
        wp_die('Доступ с вашего IP временно заблокирован из-за слишком большого количества неудачных попыток входа. Попробуйте позже.');
    }
}

Такой подход позволяет исключить из блокировки, например, IP администраторов или надежных сервисов, а также сразу блокировать известные угрозы.

Интеграция с плагином Clearfy Pro для улучшенной защиты

Если вы используете Clearfy Pro, вы можете дополнительно настроить защиту входа через встроенные модули:

  • Ограничение количества попыток входа;
  • Автоматический бан IP;
  • Уведомления о подозрительных действиях;
  • Настраиваемые временные интервалы блокировок.

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

Рекомендации по дополнительным мерам безопасности

Помимо автоматической блокировки, рекомендуем:

  • Использовать двухфакторную аутентификацию (2FA) для администраторов;
  • Регулярно обновлять WordPress, темы и плагины;
  • Использовать сложные пароли и уникальные логины;
  • Ограничивать доступ по IP для административной панели, если это возможно;
  • Использовать HTTPS на сайте.

Комплексный подход к безопасности значительно снизит риск взлома и обеспечит стабильную работу вашего сайта.

WordPress авторизация через LDAP: настройка и примеры кода
07.03.2026
WordPress авторизация по IP адресу: настройка и примеры кода
21.01.2026
Безопасность WordPress: защита от brute force атак
05.11.2025
Как защитить REST API WordPress от неавторизованных запросов
16.02.2026
WordPress авторизация без cookie: решение проблем и примеры кода
06.02.2026