Skip to content
VDS · 安全

机器被入侵的迹象

哪些症状表明机器上正在运行他人的代码,如何用命令检查,以及为什么重装是唯一可靠的出路。

更新于 2026年8月23日

一台被入侵的机器很少会表现出明显的故障。更常见的情况是,它只是开始做一些您没有要求它做的事:CPU 温度升高、向外发送流量、扫描其他人的地址。您越早发现,后果就越小。

早期迹象

  • CPU 持续处于 100%,而您并没有施加任何负载——您可以在面板 /hosting/vds/m/<id> 的“概览”中通过图表看到这一点。
  • 出站流量全天候保持平稳的高位——参见流量使用情况。
  • 磁盘空间不知去向地消失。
  • 日志中出现来自陌生地址的成功登录——参见登录日志。
  • 出现了新的用户或计划任务。
  • 您的服务商收到了针对您机器的投诉——分发垃圾邮件或参与攻击。

“只是变慢了”这种情况尤其危险:挖矿程序会刻意不把机器压榨到崩溃,以便更长时间不被发现。

检查

top -c
ps auxf
ss -tunp
ss -tnp state established

留意以 www-data 或其他服务用户身份运行、名称毫无意义的进程,以及指向陌生地址的出站连接。

用户与自启动项:

awk -F: '$3 >= 1000 {print $1}' /etc/passwd
awk -F: '$2 == "" {print $1}' /etc/shadow
crontab -l
crontab -l -u www-data
ls -la /etc/cron.d/ /var/spool/cron/crontabs/
systemctl list-units --type=service --state=running
systemctl list-timers

系统目录中的近期改动:

find /etc /usr/bin /usr/sbin -mtime -7 -type f
find /tmp /dev/shm /var/tmp -type f -executable

/tmp 和 /dev/shm 中的可执行文件几乎总是外来的。

访问密钥:

cat /root/.ssh/authorized_keys
for d in /home/*; do cat $d/.ssh/authorized_keys 2>/dev/null; done

被添加的外来密钥是攻击者在机器上建立立足点最常见的方式。

如果确认已被入侵

不要试图“清理干净后继续使用”。您并不确切知道哪些内容被改动过:攻击者可能替换了系统命令,因此 ps 和 ls 都可能对您撒谎。

正确的顺序:

  1. 断开机器与外部服务的连接,更改所有使用过的密码和密钥。
  2. 收集调查所需的内容:日志、进程列表、首次可疑登录的时间。
  3. 只复制数据,不要复制可执行文件。从被入侵的机器上复制代码,等于把后门一并转移。
  4. 在面板 /hosting/vds/m/<id> 的“访问”选项卡中重装系统。
  5. 重新搭建环境,从第一小时加固开始。
  6. 堵住最初的漏洞:过时的应用程序、弱密码、没有密码的公网数据库。

攻击者通常如何入侵

方式防范措施
通过 SSH 暴力破解 root 密码使用密钥并禁用密码登录
暴露在公网且没有密码的数据库监听 127.0.0.1,参见端口
旧版本应用程序中的漏洞自动更新
从代码仓库泄露的密钥将机密信息单独存放
对所有人开放的管理面板在防火墙中按地址限制访问

重装看起来代价高昂,但它的成本低于一台您再也无法信任的机器。被发现存在挖矿程序或垃圾邮件活动,也意味着您的机器违反了使用条款,即使这些程序并不是您启动的。