在母鸡上,一个客户的小鸡就可能让整个业务陷入风险。一台对外扫描、发送垃圾邮件或参与 DDoS 攻击的 VPS 会招来 abuse 投诉,让你的 IP 被 Spamhaus 等黑名单收录,甚至导致整个 IP 段被过滤。本文介绍如何在 KVM 母鸡(Proxmox VE 或任何基于 Linux 网桥的环境)上快速找出肇事的 VPS,判断滥用类型,在不影响其他客户的前提下制止滥用,并预防最常见的几种情况。
每台 KVM VPS 在母鸡上都有自己的 tap 网卡(在 Proxmox VE 中,VM 101 对应 tap101i0)。tap 网卡上的计数是从母鸡视角统计的,因此 rx 是 VPS 发出的流量,tx 是 VPS 收到的流量。
# 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
每秒发出数万个包、但带宽(Mbps)并不高的 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
| 你看到的现象 | 可能原因 |
|---|---|
| 向大量不同 IP 的同一端口(22、23、3389、80)发送 SYN 包 | 端口扫描或暴力破解,通常是小鸡已被入侵 |
| 向不同邮件服务器的 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),而不能只看 Mbps。
在面板或虚拟机配置中搜索:grep -r 203.0.113.11 /etc/pve/qemu-server/ /etc/pve/firewall/ 可以显示是哪台虚拟机在使用该 IP。
反复发生或不予回复的滥用会导致 IP 被拉黑,并可能迫使上游服务商为保护自身网络而过滤相关地址。按上述步骤快速处理,并在回复投诉时说明你采取的措施,就能把影响控制在涉事的那台 VPS 上。
如果按以上步骤操作后问题仍未解决,请提交工单联系 IMIDC 7×24 技术支持,并附上母鸡服务器 IP、受影响的 IP 地址、abuse 投诉编号以及上述命令的输出,方便工程师快速定位。