Что такое bruteforce-атаки и почему они опасны для WordPress
Bruteforce-атаки – это способ взлома сайта путем перебора большого количества вариантов паролей для входа в административную панель. Для WordPress, как самой популярной CMS, это одна из самых распространенных угроз. Злоумышленники используют автоматические скрипты, чтобы перебрать логины и пароли, что может привести к компрометации сайта, потере данных и нарушению работы.
Основная опасность в том, что если пароль слишком простой или не используются дополнительные меры защиты, сайт становится уязвимым. Кроме того, большое количество неудачных попыток входа может замедлить сервер или привести к блокировке IP-адресов легитимных пользователей.
В этой статье рассмотрим, как минимизировать риски bruteforce-атак на WordPress, используя проверенные плагины, настройки сервера и собственный код.
Использование плагинов для защиты от bruteforce
Самый простой и эффективный способ защитить вход в WordPress — это установить специальные плагины, которые ограничивают количество попыток входа и блокируют подозрительные IP.
1. Limit Login Attempts Reloaded
Этот плагин позволяет ограничить число попыток входа с одного IP-адреса. Он блокирует IP на заданный период после превышения лимита. Плагин прост в настройке и бесплатно доступен в официальном репозитории.
Основные функции:
- Ограничение количества попыток входа
- Блокировка IP-адресов на определенное время
- Отправка уведомлений администратору
- Белый список IP
2. WP Cerber Security
Более продвинутый плагин, который не только ограничивает попытки входа, но и защищает от спама, ботов и других видов атак. Имеет встроенный firewall и антиспам-модуль.
Преимущества:
- Гибкая настройка лимитов
- Мониторинг активности пользователей
- Защита REST API и XML-RPC
- Интеграция с Google reCAPTCHA
Оба плагина можно скачать с WPSHOP с удобной установкой и поддержкой.
Ограничение попыток входа через .htaccess и nginx
Кроме плагинов, можно защитить сайт на уровне сервера. Для Apache в файле .htaccess добавим правила, которые запретят доступ к странице входа после нескольких попыток с одного IP.
Пример настройки для Apache (.htaccess)
# Ограничение доступа к wp-login.php после 3 попыток за 5 минут
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-login.php$
RewriteCond %{REMOTE_ADDR} !^123\.45\.67\.89$
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$
RewriteCond %{ENV:LIMIT_BRUTEFORCE} ^$
RewriteRule ^ - [E=LIMIT_BRUTEFORCE:1]
RewriteCond %{ENV:LIMIT_BRUTEFORCE} ^1$
RewriteRule ^ - [F]
</IfModule>Здесь можно дополнительно настроить логику для блокировки по IP. Для nginx можно использовать модуль limit_req для ограничения количества запросов к /wp-login.php.
Пример настройки для nginx
limit_req_zone $binary_remote_addr zone=login:10m rate=3r/m;
server {
location = /wp-login.php {
limit_req zone=login burst=3 nodelay;
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
}Это позволит ограничить количество запросов к странице входа до 3 в минуту с одного IP.
Использование кода для ограничения попыток входа в WordPress
Если вы хотите реализовать ограничение попыток входа без плагинов, можно добавить простой код в файл functions.php вашей темы или создать небольшой плагин. Ниже пример функции с префиксом wpmarket_ для подсчета и блокировки попыток.
function wpmarket_limit_login_attempts() {
session_start();
$max_attempts = 5;
$lockout_time = 15 * 60; // 15 минут
if (!isset($_SESSION['wpmarket_login_attempts'])) {
$_SESSION['wpmarket_login_attempts'] = 0;
$_SESSION['wpmarket_last_attempt'] = time();
}
if (time() - $_SESSION['wpmarket_last_attempt'] > $lockout_time) {
$_SESSION['wpmarket_login_attempts'] = 0;
}
if ($_SESSION['wpmarket_login_attempts'] >= $max_attempts) {
wp_die('Слишком много попыток входа. Попробуйте позже.');
}
}
add_action('wp_login_failed', function() {
session_start();
$_SESSION['wpmarket_login_attempts']++;
$_SESSION['wpmarket_last_attempt'] = time();
});
add_action('login_form', 'wpmarket_limit_login_attempts');Этот код хранит количество попыток в сессии. При превышении лимита пользователь получит сообщение о блокировке. Такой способ подходит для небольших сайтов без большого числа пользователей.
Дополнительные рекомендации по защите входа
Использование двухфакторной аутентификации (2FA)
Двухфакторная аутентификация значительно повышает безопасность, требуя кроме пароля еще и код из приложения на телефоне. Популярные плагины для 2FA: Google Authenticator, Two Factor.
Отключение XML-RPC, если не используется
XML-RPC часто используют для атак bruteforce и DDoS. Если вы не используете удаленный доступ, отключите его с помощью плагина или через functions.php:
add_filter('xmlrpc_enabled', '__return_false');Изменение URL входа
Смена стандартного URL /wp-login.php на кастомный затрудняет подбор паролей. Плагин WPS Hide Login поможет быстро изменить адрес входа.
Заключение
Защита WordPress от bruteforce-атак требует комплексного подхода: использование плагинов для ограничения попыток, настройка сервера и при необходимости внедрение собственного кода. Применение двухфакторной аутентификации и изменение URL входа существенно повышают безопасность сайта. Не забывайте регулярно обновлять WordPress и плагины, чтобы минимизировать риски.
Все рассмотренные плагины и инструменты можно найти на WPSHOP с удобной поддержкой и инструкциями.