// Активные уязвимости

Как защитить VPS Linux от атак Brute Force и XML-RPC: полное руководство — CLIQHOST

22 октября 2026 г. · by Alex M.

Как защитить VPS Linux от атак Brute Force и XML-RPC: полное руководство — CLIQHOST

Атаки Brute Force и эксплуатация endpoint-а XML-RPC в WordPress — одни из самых распространённых активных угроз, с которыми сталкиваются администраторы серверов в 2024 году. Если у вас есть VPS NVMe или выделенный сервер, умение блокировать эти атаки критически важно для безопасности веб-приложений.

В этом руководстве мы шаг за шагом рассмотрим проверенные методы блокировки Brute Force (SSH, панель администратора, формы входа) и XML-RPC с помощью инструментов с открытым исходным кодом, доступных на любом дистрибутиве Linux.


Что такое атаки Brute Force и чем они опасны?

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

Основные цели:

  • SSH (порт 22) — прямой доступ к серверу
  • wp-login.php — панель администратора WordPress
  • phpMyAdmin, cPanel, Plesk — интерфейсы управления базами данных и хостингом
  • Формы аутентификации любых веб-приложений

Последствия успешной атаки:

  • Полный захват сервера
  • Заражение вредоносным ПО или программами-вымогателями
  • Включение сервера в ботнет
  • Утечка данных клиентов

Что такое XML-RPC и почему он уязвим?

XML-RPC — протокол удалённой связи для WordPress, включённый по умолчанию и доступный по адресу /xmlrpc.php. Несмотря на полезность для мобильных приложений и внешних интеграций, сегодня он активно эксплуатируется для:

  1. Усиления Brute Force — один XML-RPC запрос может тестировать сотни паролей одновременно через метод system.multicall
  2. DDoS — флудинг запросами /xmlrpc.php
  3. Pingback-атак — использование вашего WordPress как отражателя в DDoS-атаках

⚠️ Если вы не используете функциональность, требующую XML-RPC (Jetpack, мобильные приложения WordPress), отключите его немедленно.


Шаг 1: Защита SSH от Brute Force

1.1 Смените стандартный порт SSH

Отредактируйте конфигурацию SSH:

nano /etc/ssh/sshd_config

Измените строку:

Port 2222

Затем перезапустите сервис:

systemctl restart sshd

Не забудьте добавить правило в файрвол перед перезапуском!

1.2 Отключите аутентификацию по паролю (используйте SSH-ключи)

В том же файле /etc/ssh/sshd_config:

PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes

Один этот шаг устраняет практически 99% SSH Brute Force атак. Если вы ещё не настроили аутентификацию по ключам, ознакомьтесь с нашими материалами на блоге CLIQHOST.

1.3 Ограничьте доступ SSH через AllowUsers

AllowUsers adminuser

Шаг 2: Настройка Fail2Ban для SSH, Nginx и Apache

Fail2Ban отслеживает логи и автоматически блокирует IP-адреса с подозрительной активностью. Установка на Ubuntu/Debian:

apt update && apt install fail2ban -y

2.1 Jail для SSH

Создайте файл /etc/fail2ban/jail.local:

[DEFAULT]
bantime  = 3600
findtime = 600
maxretry = 5

[sshd]
enabled  = true
port     = 2222
logpath  = /var/log/auth.log
maxretry = 3

2.2 Jail для wp-login.php (Nginx)

[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 =

2.3 Jail для xmlrpc.php

[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 или выделенного сервера эти конфигурации обеспечивают надёжную защиту при умеренно высоком трафике.


Шаг 3: Блокировка XML-RPC на уровне веб-сервера

3.1 Блокировка в Nginx

Добавьте в блок server {} вашего сайта WordPress:

location = /xmlrpc.php {
    deny all;
    access_log off;
    log_not_found off;
    return 444;
}

Код 444 заставляет Nginx закрыть соединение без ответа — идеально для экономии ресурсов.

nginx -t && systemctl reload nginx

3.2 Блокировка в Apache

Добавьте в .htaccess или VirtualHost:

<Files xmlrpc.php>
    Require all denied
</Files>

Или с использованием mod_rewrite:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^xmlrpc\.php$ - [F,L]
</IfModule>

Шаг 4: Защита wp-login.php с ограничением по IP или HTTP-аутентификацией

4.1 Ограничение по IP (Nginx)

Если у вас статический IP-адрес:

location = /wp-login.php {
    allow 193.168.1.100;  # Ваш IP
    deny all;
}

4.2 HTTP Basic аутентификация (Nginx)

Создайте файл паролей:

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;
}

4.3 HTTP Basic аутентификация (Apache)

<Files wp-login.php>
    AuthType Basic
    AuthName "Ограниченный доступ"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Files>

Шаг 5: Отключение XML-RPC в WordPress

5.1 Через functions.php

Добавьте в 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 = [];
});

5.2 Через плагин

Плагин Disable XML-RPC (бесплатно на WordPress.org) делает всё это в один клик — рекомендуется пользователям без доступа к коду.


Шаг 6: Rate Limiting в Nginx для предотвращения массовых атак

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.


Шаг 7: Настройка UFW Firewall для дополнительной защиты

ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp   # SSH на новом порту
ufw allow 80/tcp
ufw allow 443tcp
ufw enable

Для управляемых выделенных серверов наша команда может взять на себя полную настройку файрвола и комплексную защиту сервера.


Шаг 8: Мониторинг и оповещения

Проверка логов SSH-аутентификации

journalctl -u ssh --since "1 hour ago" | grep "Failed"

Проверка активных банов Fail2Ban

fail2ban-client status sshd
fail2ban-client status nginx-xmlrpc

Установка logwatch для ежедневных отчётов

apt install logwatch -y
logwatch --output mail --mailto [email protected] --detail high

Дополнительные меры безопасности

SSL/TLS сертификаты

Всегда используйте HTTPS. Без шифрования даже самые сложные пароли могут быть перехвачены. Получить SSL-сертификат можно напрямую через CLIQHOST.

Двухфакторная аутентификация для WordPress

Установите плагин 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 — мощными и защищёнными решениями для ваших проектов.

SHARE
// what clients say

What Our Clients Say

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."

AM
Andrei M.
eCommerce owner · Chișinău
★★★★★

"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."

EV
Elena V.
Web agency · Bălți
★★★★★

"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."

DC
Dmitri C.
SaaS founder · Chișinău