虚拟化与母鸡

母鸡小鸡滥用被投诉怎么办:排查对外攻击、垃圾邮件与端口扫描的 VPS(KVM/Proxmox)

6 个步骤 8 分钟阅读 16 次阅读 0
本文目录

在母鸡上,一个客户的小鸡就可能让整个业务陷入风险。一台对外扫描、发送垃圾邮件或参与 DDoS 攻击的 VPS 会招来 abuse 投诉,让你的 IP 被 Spamhaus 等黑名单收录,甚至导致整个 IP 段被过滤。本文介绍如何在 KVM 母鸡(Proxmox VE 或任何基于 Linux 网桥的环境)上快速找出肇事的 VPS,判断滥用类型,在不影响其他客户的前提下制止滥用,并预防最常见的几种情况。

处理要快,但要保留证据。在停止 VPS 之前,先保存各项命令的输出(流量计数、tcpdump 抓包样本、连接列表)。回复 abuse 投诉、与客户沟通,以及必要时依据服务条款暂停服务,都需要用到这些证据。

典型迹象

  • 收到机房或黑名单运营方的 abuse 投诉,其中列出了你的一个或多个 IP。
  • 母鸡的出站流量或每秒包数(pps)远高于平时,尤其是出现大量小包。
  • 母鸡的 conntrack 表被占满,或者没有哪台 VPS 占用多少 CPU,母鸡却变得很慢。
  • 从你的 IP 发出的邮件被拒收,或者 IP 出现在 RBL 黑名单中(参见 IP 黑名单检测)。

步骤 1:找出是哪台 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 端口发起连接,通常是在发垃圾邮件。

步骤 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
你看到的现象可能原因
向大量不同 IP 的同一端口(22、23、3389、80)发送 SYN 包端口扫描或暴力破解,通常是小鸡已被入侵
向不同邮件服务器的 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:回复 abuse 投诉

尽快回复投诉,写明涉及的 IP、确认滥用来源的时间、已采取的措施(已限速、已封禁 25 端口、已暂停 VPS),并说明已联系客户。快速、清晰的回复,是让 IP 段在上游网络和黑名单运营方那里保持良好信誉的关键。

步骤 5:预防常见滥用

  • 默认封禁出站 25 端口:通过 Proxmox 安全组(security group)对新开的 VPS 默认封禁,只为提出申请且邮件配置可信的客户开放。
  • 开启 IP 过滤:让每台 VPS 只能使用分配给自己的地址(参见 Proxmox 母鸡开小鸡教程)。
  • 按套餐设置合理的带宽和包速率限制:避免单台 VPS 跑满上联带宽。
  • 持续监控:在 tap 网卡上用 vnStat 或 Netdata 之类的工具采集每台 VPS 的流量,并对异常包速率设置告警。
  • 了解你的客户:核实新注册用户,留意高风险订单;大部分滥用都来自少数几个账户。
# 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),而不能只看 Mbps。

投诉里只有一个 IP,怎么找到对应的 VPS?

在面板或虚拟机配置中搜索:grep -r 203.0.113.11 /etc/pve/qemu-server/ /etc/pve/firewall/ 可以显示是哪台虚拟机在使用该 IP。

如果不处理滥用会怎样?

反复发生或不予回复的滥用会导致 IP 被拉黑,并可能迫使上游服务商为保护自身网络而过滤相关地址。按上述步骤快速处理,并在回复投诉时说明你采取的措施,就能把影响控制在涉事的那台 VPS 上。

如果按以上步骤操作后问题仍未解决,请提交工单联系 IMIDC 7×24 技术支持,并附上母鸡服务器 IP、受影响的 IP 地址、abuse 投诉编号以及上述命令的输出,方便工程师快速定位。

这篇文章有帮助吗?

相关教程