22 октября 2026 г. · by Alex M.
Атаки Brute Force и эксплуатация endpoint-а XML-RPC в WordPress — одни из самых распространённых активных угроз, с которыми сталкиваются администраторы серверов в 2024 году. Если у вас есть VPS NVMe или выделенный сервер, умение блокировать эти атаки критически важно для безопасности веб-приложений.
В этом руководстве мы шаг за шагом рассмотрим проверенные методы блокировки Brute Force (SSH, панель администратора, формы входа) и XML-RPC с помощью инструментов с открытым исходным кодом, доступных на любом дистрибутиве Linux.
Атака Brute Force — это автоматический перебор тысяч или миллионов комбинаций логин + пароль до нахождения правильной. Злоумышленники используют распределённые бот-сети, что затрудняет простую блокировку по IP.
Основные цели:
Последствия успешной атаки:
XML-RPC — протокол удалённой связи для WordPress, включённый по умолчанию и доступный по адресу /xmlrpc.php. Несмотря на полезность для мобильных приложений и внешних интеграций, сегодня он активно эксплуатируется для:
system.multicall/xmlrpc.php⚠️ Если вы не используете функциональность, требующую XML-RPC (Jetpack, мобильные приложения WordPress), отключите его немедленно.
Отредактируйте конфигурацию SSH:
nano /etc/ssh/sshd_config
Измените строку:
Port 2222
Затем перезапустите сервис:
systemctl restart sshd
Не забудьте добавить правило в файрвол перед перезапуском!
В том же файле /etc/ssh/sshd_config:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
Один этот шаг устраняет практически 99% SSH Brute Force атак. Если вы ещё не настроили аутентификацию по ключам, ознакомьтесь с нашими материалами на блоге CLIQHOST.
AllowUsers adminuser
Fail2Ban отслеживает логи и автоматически блокирует IP-адреса с подозрительной активностью. Установка на Ubuntu/Debian:
apt update && apt install fail2ban -y
Создайте файл /etc/fail2ban/jail.local:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[sshd]
enabled = true
port = 2222
logpath = /var/log/auth.log
maxretry = 3
[nginx-wp-login]
enabled = true
port = http,https
filter = nginx-wp-login
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 86400
Создайте фильтр /etc/fail2ban/filter.d/nginx-wp-login.conf:
[Definition]
failregex = ^<HOST> .* "POST /wp-login.php
ignoreregex =
[nginx-xmlrpc]
enabled = true
port = http,https
filter = nginx-xmlrpc
logpath = /var/log/nginx/access.log
maxretry = 2
bantime = 86400
Фильтр /etc/fail2ban/filter.d/nginx-xmlrpc.conf:
[Definition]
failregex = ^<HOST> .* "POST /xmlrpc.php
ignoreregex =
Перезапустите Fail2Ban:
systemctl restart fail2ban
fail2ban-client status
Для VPS SSD или выделенного сервера эти конфигурации обеспечивают надёжную защиту при умеренно высоком трафике.
Добавьте в блок server {} вашего сайта WordPress:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
return 444;
}
Код 444 заставляет Nginx закрыть соединение без ответа — идеально для экономии ресурсов.
nginx -t && systemctl reload nginx
Добавьте в .htaccess или VirtualHost:
<Files xmlrpc.php>
Require all denied
</Files>
Или с использованием mod_rewrite:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^xmlrpc\.php$ - [F,L]
</IfModule>
Если у вас статический IP-адрес:
location = /wp-login.php {
allow 193.168.1.100; # Ваш IP
deny all;
}
Создайте файл паролей:
apt install apache2-utils -y
htpasswd -c /etc/nginx/.htpasswd adminuser
Добавьте в блок server {}:
location = /wp-login.php {
auth_basic "Ограниченный доступ";
auth_basic_user_file /etc/nginx/.htpasswd;
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
<Files wp-login.php>
AuthType Basic
AuthName "Ограниченный доступ"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Files>
Добавьте в functions.php активной темы:
// Полное отключение XML-RPC
add_filter('xmlrpc_enabled', '__return_false');
// Удаление заголовка X-Pingback
add_filter('wp_headers', function($headers) {
unset($headers['X-Pingback']);
return $headers;
});
// Отключение pingback
add_action('pre_ping', function(&$links) {
$links = [];
});
Плагин Disable XML-RPC (бесплатно на WordPress.org) делает всё это в один клик — рекомендуется пользователям без доступа к коду.
http {
limit_req_zone $binary_remote_addr zone=wplogin:10m rate=5r/m;
limit_req_zone $binary_remote_addr zone=xmlrpc:10m rate=1r/m;
}
server {
location = /wp-login.php {
limit_req zone=wplogin burst=3 nodelay;
# ... остальная конфигурация
}
location = /xmlrpc.php {
limit_req zone=xmlrpc burst=1 nodelay;
deny all;
}
}
Rate limiting работает даже если атакующий меняет IP-адреса — это делает его незаменимым инструментом защиты для любого хостинга WordPress.
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp # SSH на новом порту
ufw allow 80/tcp
ufw allow 443tcp
ufw enable
Для управляемых выделенных серверов наша команда может взять на себя полную настройку файрвола и комплексную защиту сервера.
journalctl -u ssh --since "1 hour ago" | grep "Failed"
fail2ban-client status sshd
fail2ban-client status nginx-xmlrpc
apt install logwatch -y
logwatch --output mail --mailto [email protected] --detail high
Всегда используйте HTTPS. Без шифрования даже самые сложные пароли могут быть перехвачены. Получить SSL-сертификат можно напрямую через CLIQHOST.
Установите плагин WP 2FA или Google Authenticator — даже если злоумышленник получит пароль, без второго фактора доступ будет закрыт.
apt update && apt upgrade -y
Не забывайте обновлять WordPress, темы и плагины — большинство активных уязвимостей эксплуатируют устаревшее ПО.
| Мера | Статус |
|---|---|
| Порт SSH изменён | ✅ |
| SSH-аутентификация по ключам | ✅ |
| Fail2Ban активен (SSH + WP) | ✅ |
| XML-RPC заблокирован в Nginx/Apache | ✅ |
| XML-RPC отключён в WordPress | ✅ |
| Rate limiting активирован | ✅ |
| wp-login.php защищён HTTP Basic | ✅ |
| UFW Firewall активен | ✅ |
| SSL-сертификат установлен | ✅ |
| 2FA включена для WordPress | ✅ |
Атаки Brute Force и эксплуатация XML-RPC происходят ежедневно на тысячах серверов по всему миру. Внедрив меры из этого руководства — от Fail2Ban и блокировки в Nginx до полного отключения XML-RPC — вы значительно сократите поверхность атаки и защитите ваши данные и данные ваших клиентов.
Если вы предпочитаете управляемое решение, команда CLIQHOST предлагает полный спектр услуг по администрированию серверов, включая аудит безопасности и проактивную настройку. Ознакомьтесь также с нашими VPS NVMe — мощными и защищёнными решениями для ваших проектов.
Real reviews from customers who trust CLIQHOST for performance, reliability and expert technical support.
"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."
"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."
"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."