SSD Nodes Learn 🎉 VPS $5.50/月起
指南 Matt Connor作者: Matt Connor

VPS滥用投诉是什么意思?如何及时回复

了解VPS滥用投诉的固定处理流程:谁提交报告、通知如何到达您、扫描器和DMCA等类别分别代表什么,以及为何必须在截止期限前说明流量来源和修复措施。

VPS 滥用投诉的实际含义

VPS 滥用投诉是指:有人报告从您的 IP 地址发出的网络流量,将报告发送给该 IP 地址段公开的滥用联系邮箱,然后由主机商转发给您,并留出回复期限。公开的联系邮箱属于持有该地址空间的公司,因此,最先阅读有关您服务器的报告的人几乎从来不是您。主机商会根据 IP 地址和时间戳匹配您的账户,然后将报告转发给您。

这类通知并不能证明您是故意实施了相关行为。IP 地址是报告方唯一拥有的标识符。遭入侵的应用在 03:00 发送垃圾邮件,与某人在 03:00 主动发送垃圾邮件,产生的报告完全相同。因此,回复内容才是关键。对方要求您说明流量来源,以及您采取了哪些变更。

谁发送报告,以及报告如何到达您的主机

每个公网 IP 地址段都在某个区域互联网注册管理机构(RIR)登记:RIPE NCC、ARIN、APNIC、LACNIC 或 AFRINIC。每条登记记录都会公开一个滥用联系地址,报告会发送到该地址。您可以读取报告发送方看到的同一条记录:

whois 203.0.113.10 | grep -iE 'netname|descr|abuse'

RIPE 记录包含一个 abuse-c: 角色对象,其中有一行 abuse-mailbox:。ARIN 记录包含 OrgAbuseEmail:。其中公开的地址会收到投诉。因此,针对您服务器的报告会到达您的主机提供商,而不是您的收件箱。

提交报告的一方通常是机器。您遇到的大多数报告都属于以下4类:

  • 自动扫描器和蜜罐。机器记录来自您 IP 的连接尝试,并附上日志摘录提交报告。
  • 邮箱提供商运行的反馈回路(FBL)。收件人点击垃圾邮件按钮后,邮件副本会以 ARF(abuse reporting format,滥用报告格式)返回。ARF 是一种供机器解析的结构化邮件格式。
  • 版权代理。他们监控 torrent 群组或抓取公开 URL,然后发送 DMCA(digital millennium copyright act,数字千年版权法)通知,其中列出文件、您的 IP 和 UTC 时间戳。
  • 黑名单运营方和网络工程师。他们会发送简短邮件,并附上其自身日志中的违规行。

由于首批报告大多由机器生成,回复中争辩通常没有作用。事实才有用:当时运行的是什么,以及何时停止。

为什么通知中会设置截止期限

您的主机同样是租户。它使用的地址空间位于上游运营商之后,也被其他机构维护的信誉数据库收录。无人处理的报告会影响整个地址段的信誉评分,而不只是您的单个地址。因此,您收到的截止期限是上游压力逐级传递的结果。请查看通知中注明的处理期限,并将其视为实际期限。

未处理的事件通常会导致 null route,即上游丢弃发往该 IP 的网络流量,或者暂停该实例。触发这些措施的通常是长期不回应,而不是最初发生的事件。具体主机需要采取哪些措施以及何时采取,由其自身的政策和通知内容规定。只有这两份文档值得引用,因此不要依据论坛声称服务商允许的做法采取行动。

外发垃圾邮件:为什么我的 VPS 会发送并非我发出的邮件

报告表示,您的 IP 向垃圾邮件陷阱投递了邮件,或收件人将您的邮件标记为垃圾邮件。大多数情况都来自以下4种原因:带有邮件表单但没有速率限制的 Web 应用、已泄露且正在被他人使用的 SMTP 凭据、为不应中继的主机提供中继的邮件服务器,以及 newsletter 应用中的登录凭据被盗。先检查队列,因为发送方被入侵时,通常可以在那里看到相关记录:

sudo postqueue -p | tail -n 20
sudo postqueue -p | grep -c '^[0-9A-F]'

如果队列中有数千封发往您不认识的地址的邮件,说明该主机正在发送邮件。接下来找出通过身份验证的账户:

sudo grep -o 'sasl_username=[^ ]*' /var/log/mail.log | sort | uniq -c | sort -rn | head

某个账户的计数远高于其他账户,说明该账户的凭据已泄露。如果 /var/log/mail.log 不存在,说明系统未安装 rsyslog;相同的日志行位于 journal 中:sudo journalctl -t postfix --since '2 days ago'

如果没有账户通过身份验证,发送方就是本地进程。检查中继规则和开放连接:

sudo postconf -n | grep -E 'mynetworks|inet_interfaces|relay'
sudo ss -tnp state established '( dport = :25 )'

标准的 Debian 或 Ubuntu Postfix 不会为陌生主机提供中继。手动将 mynetworks 放宽为整个托管子网后,Postfix 就会变成开放中继,因为该子网上的所有其他租户都会被信任,可以通过您的服务器发送邮件。任何连接到端口 25、但由非邮件服务器进程占用的连接,都说明某个脚本正在自行发送邮件。这通常是遭到入侵的 PHP 应用的行为。

在调查前先停止邮件发送,并保留证据:

sudo systemctl stop postfix
sudo tar czf /root/mailqueue.tgz -C /var/spool postfix

sudo postsuper -d ALL 会清空队列,同时销毁已发送邮件的记录,因此请先创建副本。然后轮换应用持有的所有凭据,更新应用,并查找入侵者留下的内容。垃圾邮件事件和服务器被入侵大多数时候是同一事件,因此应按照遭入侵 VPS 的恢复步骤进行处理,而不只是清空队列。

端口扫描与暴力破解:受入侵容器的表现

本报告包含另一名运维人员日志中的内容,日志通常如下所示:

sshd[2841]: Invalid user admin from 203.0.113.10 port 51992

最常见的原因是某个您以为已被防火墙阻止的服务。Docker 就经常导致这种问题。使用 -p 6379:6379 发布端口时,会向 DOCKER-USERnat 链添加规则;这些链的处理顺序早于 ufw 规则。因此,ufw deny 6379 无法阻止该流量,数据库就会响应整个互联网的请求。

sudo ss -ltnp
sudo iptables -S DOCKER-USER
docker ps

ss -ltnp 中绑定到 0.0.0.0[::] 的任何内容,都会监听公网地址。仅当主机需要访问服务时,应改为发布到环回地址 -p 127.0.0.1:6379:6379。数据库究竟应部署在哪里,是另一个需要单独决定的问题;在 Docker 中或主机上运行数据库介绍了其中的权衡。

要检查您自己的主机当前是否正在执行扫描:

sudo ss -tnp state syn-sent

如果存在许多指向不同目标的半开放连接,说明正在进行出站扫描。内核日志中不断出现 nf_conntrack: table full, dropping packet,也说明了同一问题:某个进程正在创建远超该服务器正常需求的连接。

对于已被入侵的容器,应重新构建,而不是尝试清理。您无法证明容器内部没有发生其他改动。因此,应使用可信镜像重新构建,只恢复可信数据,并轮换该容器持有的密钥。

版权通知:对方实际看到了哪个文件

DMCA 通知会列出一个 URL 或 torrent info hash、您的 IP 地址,以及 UTC 时间戳。几乎所有此类通知都源于两种情况:Web 服务器公开列出了包含媒体文件的目录,或者 torrent 客户端在下载完成后仍在做种。

将时间戳与访问日志进行匹配。nginx 的 combined 日志格式将状态码放在第 9 个字段,将请求路径放在第 7 个字段:

sudo grep '14/Aug/2026:03' /var/log/nginx/access.log | awk '{print $9, $7}' | sort | uniq -c | sort -rn | head

在认定没有提供任何文件之前,先检查时钟。通知使用 UTC,而日志使用服务器时区。因此,几小时的时差就可能让您查看错误的时间范围,并得出错误的否定结论:

timedatectl
sudo timedatectl set-timezone UTC

然后修复原因。删除或限制该文件的访问权限;在 nginx 的 location 块中使用 autoindex off; 关闭目录列表;将 torrent 客户端绑定到非公网接口。回复时说明文件名、所做的更改,以及完成更改的时间。如果您认为该声明本身有误,这是您与发送方之间的法律问题,通知中会说明申诉方式。您的主机服务商不是裁决方,因此提交争辩声明实体内容的工单不会得到解决。

封禁列表:为什么我的出站邮件停止工作

这类问题通常不会向您发送任何邮件。出站邮件会直接停止被接收,退信中会给出原因:

554 5.7.1 Service unavailable; Client host [203.0.113.10] blocked using zen.spamhaus.org

将 IP 地址的四个八位组反转,然后查询该列表的区域,即可检查是否上榜:

dig +short 10.113.0.203.zen.spamhaus.org

返回空结果表示您未被列入该列表。返回 127.0.0.x 结果表示您已上榜,最后一个八位组表示匹配的是哪个子列表。返回 127.255.255.x 范围内的结果表示查询被拒绝,而不是查询已得到响应。通常,这是因为查询经由大型公共解析器发出,而该免费服务不向这类解析器提供服务。请通过服务器自己的解析器再次运行查询,以获取实际结果。

取消列入需要在列表运营方的网站上操作,不能通过主机提供商完成。只有先修复根因,取消列入才会有效,因为将您列入列表的陷阱会在下一封邮件到达时再次将您列入。之后邮件能否正常发送,还取决于另外两点。PTR 记录是该 IP 的反向 DNS 名称,由主机提供商控制。因此,请要求对方设置一个能解析回同一地址的 PTR 记录,并将该名称用作 HELO。租户更换后重新分配的 IP 地址可能带有您未造成的历史记录。在您花一周时间反复修改 DNS 之前,值得先询问这一点。正确配置 SPF(sender policy framework)和 DKIM(domainkeys identified mail)记录,并设置将两者关联起来的 DMARC 策略,这些内容已在使用 Mailcow 运行自己的邮件服务器指南中完整介绍。

中继基础设施:处理滥用投诉属于日常工作

如果您运行 Tor 出口节点、公共 VPN 或供他人使用的代理,那么收到与您无关的流量投诉是正常运营成本。关键是让该主机明显表现为中继,而不是遭到入侵的主机。将反向 DNS 设置为描述性名称,在 80 端口提供简短的说明页面,解释该地址的用途,并使用相同的说明快速回复滥用投诉邮件。利用软件提供的策略,丢弃产生最多报告的端口流量。将其运行在独立 IP 地址上,最好使用独立实例,这样即使该地址被设置为 null route,也不会连带导致 Web 应用不可用。启动前先咨询主机服务商,因为不同公司甚至不同 IP 地址段的允许范围可能不同;这应直接向服务商确认,而不是在论坛帖子中询问。在 VPS 上运行 Tor 出口节点详细介绍出口策略和说明页面。

如何回复以关闭工单

  • 发布一个有人查看的联系地址。RFC 2142 规定,您域名下的 abuse@postmaster@ 是举报人首先尝试联系的地址。请将该邮箱托管在受保护服务器之外,因为实例被暂停后,无法投递通知您实例已被暂停的邮件。
  • 保留足够长时间的日志,确保能够查明问题。如果日志在 7 天后轮换,那么关于 12 天前流量的举报就无法回复。检查 journalctl --disk-usage,在 /etc/systemd/journald.conf 中设置 MaxRetentionSec=90d,然后运行 sudo systemctl restart systemd-journald。Web 和邮件日志会按照 /etc/logrotate.d/ 中各自的计划轮换。
  • 将服务器时区设置为 UTC。这样,举报中的时间戳就能直接与日志中的时间戳对应,无需换算。
  • 将容易引发投诉的服务与不可丢失的服务分开。将邮件放在一个地址上,将 Web 应用放在另一个地址上,并将中继服务部署在独立实例中。针对一个 IP 采取的措施会影响该 IP 后的所有服务。
  • 即使调查尚未完成,也要在规定期限内回复。包含预计时间的暂缓回复,就足以完成第一轮回复。

一封能够关闭大多数工单的首次回复应简短且具体:

Received, thank you. Confirmed at 09:14 UTC.
Source: a contact form in our web app that allowed unauthenticated sending.
Action: form disabled, Postfix stopped, all SMTP credentials rotated 09:31 UTC.
Evidence: mail queue and logs preserved for 90 days if you need them.
Next: patched app redeployed by 18:00 UTC today. I will confirm here.

说明您已知的信息,也说明尚未查明的部分。保持沉默会让人认为服务器无人维护,而升级处理机制正是针对无人维护的服务器设置的。上述工作是否都由您负责,取决于您购买的产品;这正是 托管型和非托管型 VPS 主机 的实际区别。在非托管方案中,租户就是安全团队。

运行正常时的情况

在其他问题之前,滥用投诉首先是一个路由问题。关于某个地址的报告会发送给负责该地址的一方,然后逐级转交给能够修复问题的人。您可以控制的部分包括联系地址、日志保留时间、服务在不同 IP 上的分配方式,以及回复速度。做好这些工作后,大多数通知经过一次沟通就会结束。同样的做法也能解决 VPS 托管是否安全这一更大的问题,因为无人监控的服务器最终会出现在别人的日志中。

FAQ

滥用投诉是否意味着我的 VPS 被入侵了?

不一定,但这是首先需要排除的情况。报告只能证明流量从您的 IP 发出。出站垃圾邮件和端口扫描更常见的来源是遭入侵的应用或容器,而不是账户所有者。因此,首先使用 sudo postqueue -p 检查邮件队列,并使用 sudo ss -ltnp 检查监听套接字。版权和黑名单通知的性质不同:这些通知通常指向您有意运行的内容。

我需要在多长时间内回复滥用通知?

您收到的通知中会说明期限,具体时间因主机提供商和事件类别而异。版权和垃圾邮件陷阱报告通常要求最短的回复期限。请认真对待通知中写明的时间,并在期限到期前发送简短的临时回复,即使您仍在追查原因。处理工单的人需要确认有人正在处理问题,并且流量已经停止。

我的 IP 在黑名单上。主机提供商能帮我移除吗?

不能。移除名单由该黑名单的运营方在其自己的网站上处理,您的主机提供商无法控制对方的数据库。您的主机提供商可以控制 PTR 记录,即您 IP 的反向 DNS 名称;这是一个值得同时提出的独立请求。请先修复发送问题,再申请移除名单,因为将您列入名单的垃圾邮件陷阱会在收到下一封邮件时再次将您列入名单。

我必须告诉主机提供商实际发生了什么吗?

您必须提供足以关闭工单的信息:问题来源以及问题何时停止。您不需要提交取证报告,也不需要提供用户数据。含糊的回复比简短的回复更糟,因为处理人员无法确认发生了哪些变化,就没有理由将此事件视为已解决。

我可以忽略扫描器发出的自动报告吗?

不能。自动报告会被计数。针对同一 IP 的重复报告会提高您主机提供商整个地址段的风险评分,这会使小问题升级为更严重的事件。您的回复可以只有一段。自动报告系统通常不会阅读回复,但主机提供商的工单处理人员会阅读,而决定您的实例将如何处理的正是此人。