第一次租云服务器就被攻击了?一站式教你自救,涵盖排查,删除,加固

98 阅读5分钟

前言:

一觉醒来——阿里云发来一条刺眼的告警:

“您的服务器正在对外发起 SSH 暴力破解攻击!”我瞬间清醒:我怎么可能去攻击别人?!

很显然,我的服务器已经被黑客控制,成了“肉鸡”。 本文记录了我从发现异常到彻底清除后门、加固系统的完整过程,希望能帮到同样遭遇入侵的朋友。

07c0c4b3e48bf00ab48c121ccddb4062_720.jpg

遇到这种情况怎么办?接下来看我是怎么处理的

一、使用阿里云的远程连接(VNC),而不是你自己的 SSH 工具

1. SSH 可能被“中间人劫持”(MITM)

黑客入侵后,可能会:

  • 替换 /usr/sbin/sshd 为恶意版本
  • 修改 sshd_config 加载恶意模块
  • 记录所有输入的密码和命令
2. 阿里云远程连接是“带外管理”(Out-of-Band)
  • 它通过 独立的 VNC 通道 直接访问服务器的虚拟显卡和键盘
  • 完全绕过操作系统网络层
  • 即使系统被 rootkit 控制、SSH 被替换、防火墙被改,它依然可用
  • 黑客无法监听或篡改这个连接

二、查找可疑进程

1.查找网络连接,看它怎么攻击别的服务器的

ss -tunp

图片.png

2.执行top命令,查看可疑进程

图片.png 3.检查近期可疑大文件

find / -type f -mtime -3 -size +1M 2>/dev/null | head -10

发现可疑文件: -rwxrwxr-x 1 root root 7140904 Nov 20 16:51 /usr/bin/ghvwi

三、接下来要彻底清除它并防止复活。以下是完整操作指南(拿PID:22686举例):

第一步:立即终止进程

kill -9 22686

强制杀死进程(-9 表示不可被忽略)


第二步:删除恶意文件

# 删除主程序
rm -f /usr/bin/cpnrop
# 检查是否有隐藏副本(黑客常藏在这些目录)
find /tmp /dev/shm /var/tmp /root -name "*cpnrop*" -type f -delete

第三步:排查自启动方式(防止复活)

1. 检查 systemd 服务

systemctl list-unit-files | grep -i cpnrop

#发现 `cpnrop.service`:

图片.png

停止进程,并且清除文件:

systemctl stop cpnrop

systemctl disable cpnrop

rm -f /etc/systemd/system/cpnrop.service

2. 检查开机脚本

cat /etc/rc.local

#结果:未发现

如果里面有 cpnrop 相关命令,用 nano /etc/rc.local 删除

3. 检查 SSH 后门

cat ~/.ssh/authorized_keys

#结果:未发现

如果看到你不认识的公钥(尤其是带注释如 pwnedhacker),立即清空:

echo "" > ~/.ssh/authorized_keys

4. 检查环境变量后门

grep -r "cpnrop" /etc/profile.d/ /etc/bash.bashrc /root/.bashrc 2>/dev/null
# 未发现

如果发现相关启动命令,用 nano 删除

四、现在检查工作已经完成,接下来进行加固,防止被再次入侵

1. 关闭密码登录

nano /etc/ssh/sshd_config

确保以下配置:

PermitRootLogin without-password
PasswordAuthentication no
PubkeyAuthentication yes

2. 修改 SSH 端口(可选)

一台新上线的云服务器,24 小时内平均会收到 5000+ 次 SSH 暴力破解尝试,全部指向 22 端口。

Port 22222

并在阿里云安全组开放新端口

3. 重启 SSH 服务

systemctl restart sshd

建议:重装系统,更安全可靠

五、检查

1. 确认进程已消失

ps aux | grep cpnrop

应该无输出

2. 确认文件已删除

ls /usr/bin/cpnrop

应提示 No such file or directory

3. 检查网络连接

#检查是否有对外攻击
ss -tunp | grep ':22' | grep -v 'LISTEN'

不应有异常出站连接

六、你现在可以安全地使用你自己的 SSH 客户端登录了!

本地生成新密钥

# Windows PowerShell
ssh-keygen -t rsa -b 4096 -f $HOME.ssh\aliyun_id_rsa

这会生成:

屏幕截图 2025-11-20 213702.png

  • 私钥:C:\Users<你>.ssh\aliyun_id_rsa
  • 公钥:C:\Users<你>.ssh\aliyun_id_rsa.pub
  • known_hosts: 记录你曾经连接过的服务器的 SSH 公钥指纹
  • 指纹备份

然后用阿里云远程连接,把公钥内容追加到服务器:

echo "你的公钥内容" >> ~/.ssh/authorized_keys

chmod 600 ~/.ssh/authorized_keys

2. 用 SSH 客户端登录

Xshell / FinalShell / Termius 等图形工具

  • 主机:x.x.x.x
  • 用户名:root
  • 认证方式:Public Key
  • 私钥文件:选择你本地的 aliyun_id_rsa

总结:

这次“服务器变肉鸡”的经历,让我深刻意识到:在网络安全中,没有“我只是个小站”的侥幸,只有“是否已做好防御”的区别

黑客不会因为你网站流量小就放过你——自动化脚本 24 小时扫描全网开放 22 端口的机器,而默认密码或弱密钥就是他们的通行证。

但幸运的是,只要掌握正确的应急流程,我们完全有能力在损失扩大前快速止损、彻底清理、有效加固。关键在于三点:

  1. 第一时间隔离风险
    用 VNC 而非 SSH 登录,避免二次泄露;不盲目重启,先取证再处置。
  2. 彻底清除,不留死角
    杀进程只是开始,必须同步检查 systemd、定时任务、SSH 后门、启动脚本等所有持久化入口。
  3. 从根源杜绝再次入侵
    关闭密码登录、改用密钥认证、修改默认端口、配置安全组——这些不是“高级操作”,而是基础生存技能

最后想说:重装系统不是失败,而是对数据和业务最大的负责。如果你不确定是否清理干净,请果断重置。毕竟,一台干净的服务器,远比“看似正常”的傀儡机值得信赖。

愿你的服务器永远安宁,但若风雨来袭——希望这篇记录,能成为你手中的一把伞。