Виртуализация и хост-ноды

Абьюз на хост-ноде KVM/Proxmox: поиск VPS с атаками, спамом и сканированием портов

6 шагов 15 мин чтения 68 просмотров 0
Содержание

На хост-ноде один VPS клиента может поставить под угрозу весь бизнес. VPS, который сканирует интернет, рассылает спам или участвует в DDoS-атаках, порождает абьюз-жалобы, приводит к попаданию ваших IP в блэклисты вроде Spamhaus и может обернуться фильтрацией всего блока IP. В статье показано, как быстро найти виновный VPS на хосте KVM (Proxmox VE или любая схема с Linux bridge), определить тип абьюза, остановить его, не затронув других клиентов, и предотвратить самые частые случаи.

Действуйте быстро, но сохраняйте доказательства. Прежде чем останавливать VPS, сохраните вывод команд (счётчики трафика, дампы tcpdump, списки соединений). Он понадобится, чтобы ответить на абьюз-жалобу, поговорить с клиентом и при необходимости обосновать приостановку услуги по вашим условиям обслуживания.

Типичные признаки

  • Абьюз-жалоба от провайдера или оператора блэклиста с указанием одного или нескольких ваших IP.
  • Исходящий трафик или число пакетов в секунду на хосте намного выше обычного, особенно много мелких пакетов.
  • Таблица conntrack на хосте переполняется, или хост тормозит, хотя ни один VPS не нагружает CPU.
  • Почту с ваших IP отклоняют, или ваши IP появляются в RBL-списках (см. проверка IP по блэклистам).

Шаг 1: Найдите VPS, который генерирует трафик

У каждого KVM VPS на хосте есть собственный tap-интерфейс (в Proxmox VE — tap101i0 для VM 101). Счётчики tap-интерфейса отражают взгляд со стороны хоста, поэтому rx — это то, что VPS отправляет наружу, а tx — то, что он получает.

# Packets and bytes each VPS sent in the last 10 seconds (rx on the tap = outbound from the VPS)
for t in /sys/class/net/tap*; do n=$(basename $t); echo "$n $(cat $t/statistics/rx_packets) $(cat $t/statistics/rx_bytes)"; done > /tmp/a
sleep 10
for t in /sys/class/net/tap*; do n=$(basename $t); echo "$n $(cat $t/statistics/rx_packets) $(cat $t/statistics/rx_bytes)"; done > /tmp/b
join /tmp/a /tmp/b | awk '{printf "%-12s %8d pps %8.1f Mbps\n", $1, ($4-$2)/10, ($5-$3)*8/10/1000000}' | sort -k2 -nr | head

# Live view of who talks to whom on the bridge
iftop -i vmbr0 -nNP

VPS, отправляющий десятки тысяч пакетов в секунду при скромных Мбит/с, обычно флудит или сканирует; постоянный поток соединений на порт 25 обычно означает спам.

Шаг 2: Определите тип абьюза

# Sample the traffic of one VPS (replace tap101i0)
tcpdump -ni tap101i0 -c 300 -w /root/evidence-vps101-$(date +%F-%H%M).pcap
tcpdump -nr /root/evidence-vps101-*.pcap | head -50

# Outgoing SMTP connections (spam)
tcpdump -ni tap101i0 'tcp dst port 25 and tcp[tcpflags] & tcp-syn != 0' -c 50

# Connections tracked for the VPS's IP (apt install conntrack)
conntrack -L -s 203.0.113.11 2>/dev/null | wc -l
conntrack -L -s 203.0.113.11 2>/dev/null | awk '{print $5}' | sort | uniq -c | sort -nr | head
Что вы видитеВероятная причина
SYN-пакеты на множество разных IP на один и тот же порт (22, 23, 3389, 80)Сканирование портов или брутфорс, часто со взломанного VPS
Много соединений на порт 25 к разным почтовым серверамСпам или взломанный почтовый скрипт
Очень высокая частота UDP- или SYN-пакетов к одному или нескольким адресатамУчастие в DDoS
Постоянные соединения на порты вроде 3333 или 4444Майнинг криптовалюты (по трафику обычно допустим, но может нарушать ваши условия)

Шаг 3: Остановите абьюз

Выбирайте самую мягкую меру, которая решает проблему, и ужесточайте её, если абьюз продолжается.

# Throttle the VPS immediately to about 8 Mbps (rate is in MB/s; keep the NIC's MAC from "qm config")
qm set 101 --net0 virtio=BC:24:11:AA:BB:CC,bridge=vmbr0,firewall=1,rate=1

# Block outbound SMTP for this VPS with the Proxmox firewall
cat >> /etc/pve/firewall/101.fw <<'EOF2'

[RULES]
OUT DROP -p tcp -dport 25 -log nolog
EOF2

# Pause the VPS (keeps memory state for investigation) or shut it down
qm suspend 101
qm shutdown 101

Если секция [RULES] в файле уже есть, добавьте правило в неё, а не дописывайте вторую секцию. Затем сообщите клиенту, что вы обнаружили, приложите доказательства и укажите, что ему нужно исправить; взломанный VPS обычно требует переустановки и смены паролей (см. поиск и удаление вредоносного ПО в Linux).

Шаг 4: Ответьте на абьюз-жалобу

Оперативно ответьте на жалобу: укажите затронутый IP, время, когда был найден источник, принятые меры (ограничение скорости, блокировка порта 25, приостановка VPS) и то, что с клиентом уже связались. Именно быстрые и понятные ответы сохраняют хорошую репутацию блока IP у вышестоящих сетей и операторов блэклистов.

Шаг 5: Предотвращение типичных случаев

  • Блокируйте исходящий порт 25 по умолчанию для новых VPS с помощью security group Proxmox и открывайте его только тем клиентам, которые об этом просят и чьей почтовой настройке вы доверяете.
  • Включите фильтрацию IP, чтобы VPS мог использовать только свои адреса (см. продажа VPS на хост-ноде Proxmox).
  • Задайте разумные лимиты полосы и пакетов для каждого тарифа, чтобы один VPS не мог забить аплинк.
  • Ведите постоянный мониторинг: собирайте трафик по каждому VPS через vnStat на tap-интерфейсах или инструментом вроде Netdata и настройте оповещения о необычной частоте пакетов.
  • Знайте своих клиентов: проверяйте новые регистрации и следите за рискованными заказами — большая часть абьюза исходит от небольшого числа аккаунтов.
# Datacenter-wide security group in /etc/pve/firewall/cluster.fw
[group no-smtp]
OUT DROP -p tcp -dport 25 -log nolog

# Use it in each VPS file, e.g. /etc/pve/firewall/101.fw
[RULES]
GROUP no-smtp

Частые вопросы

VPS почти не использует канал, но жалоба всё равно пришла

Сканирование и попытки брутфорса потребляют очень мало трафика. Смотрите на частоту пакетов и число соединений (шаги 1 и 2), а не только на Мбит/с.

Как найти VPS, если в жалобе указан только IP?

Поищите в панели или в конфигурациях VM: grep -r 203.0.113.11 /etc/pve/qemu-server/ /etc/pve/firewall/ покажет, какая VM использует этот IP.

Что будет, если не реагировать на абьюз?

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

Если проблема не решена, создайте тикет — техническая поддержка IMIDC работает 24/7. Укажите IP хост-сервера, затронутые IP-адреса, номер абьюз-жалобы и вывод приведённых выше команд, чтобы мы быстрее нашли причину.

Помог ли вам данный ответ?

Похожие руководства