Как установить защиту от brute force атак в WordPress с помощью .htaccess

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

Почему важно защищать WordPress от brute force атак

Brute force атаки — это автоматические попытки подобрать правильные логин и пароль путём перебора. Если не ограничивать такие попытки, это может привести к:

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

Выявить и заблокировать такие атаки можно на ранней стадии, используя настройки .htaccess — мощного конфигурационного файла веб-сервера Apache.

Настройка .htaccess для защиты от brute force атак

Блокировка доступа к wp-login.php по IP

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

# Ограничение доступа к wp-login.php
<Files wp-login.php>
    Order Deny,Allow
    Deny from all
    Allow from 123.45.67.89
    Allow from 98.76.54.32
</Files>

Замените 123.45.67.89 и 98.76.54.32 на ваши реальные IP-адреса. Таким образом попытки входа с других адресов будут блокироваться на уровне сервера.

Ограничение количества запросов через mod_evasive

Если у вас есть доступ к настройкам сервера и модуль mod_evasive активирован, можно ограничить количество запросов к wp-login.php. Это предотвратит попытки перебора с одного IP за короткий промежуток времени.

Пример конфигурации для mod_evasive:

 DOSHashTableSize 3097
 DOSPageCount 2
 DOSSiteCount 50
 DOSPageInterval 1
 DOSSiteInterval 1
 DOSBlockingPeriod 10

Однако эта настройка выходит за рамки файла .htaccess и требует доступа к конфигу Apache.

Защита через Basic Auth для wp-login.php

Альтернативный способ — добавить дополнительную защиту с помощью HTTP-аутентификации. В .htaccess добавьте:

# Дополнительная защита для wp-login.php
<Files wp-login.php>
    AuthType Basic
    AuthName "Restricted Area"
    AuthUserFile /full/path/to/.htpasswd
    Require valid-user
</Files>

Файл .htpasswd содержит логины и пароли в зашифрованном виде и должен находиться в защищённом каталоге. Этот метод эффективен, если вы хотите добавить второй уровень защиты без изменения кода сайта.

Автоматическое блокирование IP с помощью .htaccess и fail2ban

Для более продвинутой защиты рекомендуется использовать связку fail2ban и .htaccess. Fail2ban анализирует логи сервера и блокирует IP, с которых происходят подозрительные попытки входа.

В .htaccess можно добавить правила для логирования неудачных попыток, а затем настроить fail2ban для мониторинга этих логов. Например, логировать 403 ошибки — отказ в доступе при неправильном IP для wp-login.php.

Пример функции wphostProtectBruteforce для дополнительной защиты WordPress

Если хотите автоматизировать защиту на уровне WordPress, можно добавить функцию, которая ограничивает количество попыток входа. Вот пример кода для functions.php вашей темы или плагина:

function wphostProtectBruteforce_limit_login_attempts() {
    $max_attempts = 5;
    $lockout_time = 60 * 15; // 15 минут
    $ip = $_SERVER['REMOTE_ADDR'];

    if (!session_id()) {
        session_start();
    }

    if (!isset($_SESSION['login_attempts'])) {
        $_SESSION['login_attempts'] = [];
    }

    $now = time();

    // Очистка устаревших попыток
    $_SESSION['login_attempts'] = array_filter($_SESSION['login_attempts'], function($timestamp) use ($now, $lockout_time) {
        return ($now - $timestamp) < $lockout_time;
    });

    if (count($_SESSION['login_attempts']) >= $max_attempts) {
        wp_die('Слишком много попыток входа. Попробуйте позже.');
    }

    if (isset($_POST['log']) && isset($_POST['pwd'])) {
        add_action('wp_login_failed', function() use (&$_SESSION, $now) {
            $_SESSION['login_attempts'][] = $now;
        });
    }
}
add_action('init', 'wphostProtectBruteforce_limit_login_attempts');

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

Плагины для защиты от brute force атак

Если вы предпочитаете готовые решения, обратите внимание на плагины с хорошими отзывами:

  • Wordfence Security — мощный комплексный плагин с защитой от brute force, firewall и сканером.
  • Login LockDown — простой плагин, ограничивающий количество попыток входа с одного IP.
  • Limit Login Attempts Reloaded — популярный и лёгкий плагин для ограничения попыток авторизации.

Все эти плагины можно найти и установить через административную панель WordPress. Например, на WPShop вы найдёте множество полезных решений для защиты и оптимизации сайта.

Дополнительные рекомендации по защите WordPress

Помимо настройки .htaccess и ограничения попыток входа, рекомендуем:

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

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

Автоматическое изменение стоимости товаров в WooCommerce по заданным условиям
29.05.2026
Как установить ограничение на загрузку файлов в WordPress
02.02.2026
Как удалить сложный кеш WooCommerce без плагинов
06.06.2026
Как создать автоматическое удаление старых записей в WordPress по дате
24.01.2026
Как использовать REST API WordPress для создания приложений
30.11.2025