На хост-ноде один VPS клиента может поставить под угрозу весь бизнес. VPS, который сканирует интернет, рассылает спам или участвует в DDoS-атаках, порождает абьюз-жалобы, приводит к попаданию ваших IP в блэклисты вроде Spamhaus и может обернуться фильтрацией всего блока IP. В статье показано, как быстро найти виновный VPS на хосте KVM (Proxmox VE или любая схема с Linux bridge), определить тип абьюза, остановить его, не затронув других клиентов, и предотвратить самые частые случаи.
У каждого 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 обычно означает спам.
# 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 | Майнинг криптовалюты (по трафику обычно допустим, но может нарушать ваши условия) |
Выбирайте самую мягкую меру, которая решает проблему, и ужесточайте её, если абьюз продолжается.
# 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).
Оперативно ответьте на жалобу: укажите затронутый IP, время, когда был найден источник, принятые меры (ограничение скорости, блокировка порта 25, приостановка VPS) и то, что с клиентом уже связались. Именно быстрые и понятные ответы сохраняют хорошую репутацию блока IP у вышестоящих сетей и операторов блэклистов.
# 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
Сканирование и попытки брутфорса потребляют очень мало трафика. Смотрите на частоту пакетов и число соединений (шаги 1 и 2), а не только на Мбит/с.
Поищите в панели или в конфигурациях VM: grep -r 203.0.113.11 /etc/pve/qemu-server/ /etc/pve/firewall/ покажет, какая VM использует этот IP.
Повторяющийся или оставленный без ответа абьюз приводит к попаданию IP в блэклисты и может вынудить вышестоящего провайдера фильтровать затронутые адреса, чтобы защитить свою сеть. Быстрые действия по шагам выше и ответ на жалобу с описанием принятых мер ограничивают последствия только проблемным VPS.
Если проблема не решена, создайте тикет — техническая поддержка IMIDC работает 24/7. Укажите IP хост-сервера, затронутые IP-адреса, номер абьюз-жалобы и вывод приведённых выше команд, чтобы мы быстрее нашли причину.