VPS被攻击怎么办?应急处理5步走(亲测有效)
上周凌晨三点,我的VPS突然CPU飙到100%,SSH登录卡死,网站返回502。检查日志发现,有人在用弱口令爆破我的SSH端口,还植入了挖矿脚本。作为一个被攻击过5次的老站长,我把这套应急流程分享出来,全是实操经验,没有废话。
第一步:立刻断网,保留现场
操作:
登录VPS控制面板,直接执行“关机”或“停止”操作,不要先SSH进去。攻击者可能已经驻留了反弹Shell,你登录本身就会触发告警或导致日志被清理。
避坑:
别尝试先“kill进程”或“修改密码”——攻击者可能已经替换了系统命令(比如ps、netstat被篡改)。先断网才能阻止数据外泄和资源被滥用。
第二步:挂载救援模式,收集证据
用VPS商家的救援系统(或Live CD)启动,挂载原系统盘到/mnt。然后检查:
# 查看异常进程残留
ls -la /mnt/var/log/auth.log* # 看SSH登录记录
grep "Failed password" /mnt/var/log/auth.log | head -20
# 检查可疑文件
find /mnt/tmp -mmin -60 -type f # 最近60分钟在tmp目录创建的文件
find /mnt/var/tmp -name "*.sh" -o -name ".*" | head -10
# 检查计划任务
cat /mnt/var/spool/cron/crontabs/*
cat /mnt/etc/cron.d/*
避坑:
不要直接在救援模式下重装系统。先备份/var/log、/etc/passwd、/etc/shadow、可疑的二进制文件,以备后续分析或报警。
第三步:分析入侵路径,封堵漏洞
常见攻击入口(按概率排序):
- SSH弱口令 -> 立刻禁用密码登录,改用密钥
- Web应用漏洞 -> 检查Nginx/Apache日志里是否有
/wp-admin、/admin等目录的爆破记录 - 未更新的服务 -> 比如Redis未授权访问、MySQL弱口令
- 恶意插件/后门 -> 检查
/etc/ld.so.preload、~/.bashrc、~/.ssh/authorized_keys
实操命令:
# 检查所有公钥(重点看非自己添加的)
cat /mnt/root/.ssh/authorized_keys
cat /mnt/home/*/.ssh/authorized_keys 2>/dev/null
# 检查系统的可执行文件是否被修改
rpm -Va # CentOS/RHEL
debsums -e # Debian/Ubuntu(需要先安装debsums)
避坑:
不要只看top或ps aux——攻击者会隐藏进程。用ls -l /proc/[0-9]*/exe可以找到正在运行的二进制文件路径。
第四步:彻底清理或重建系统
方案A:快速清理(适合熟悉系统的老手)
- 删除所有未知公钥、计划任务、开机启动脚本
- 重建SSH密钥,修改root密码(20位以上)
- 更新系统并重启所有服务
方案B:最保险的方式(推荐)
- 备份关键数据(数据库、配置文件、用户上传文件)到本地
- 重装操作系统,不要在已入侵的系统上做任何“修复”,攻击者可能留下了rootkit
- 重装后立刻执行:
ssh-keygen -A生成新主机密钥,并修改所有用户密码
避坑:
重装后不要马上恢复全部数据——攻击者可能在你备份的文件里也藏了后门。只恢复需要的数据库导出和代码,然后重新安装软件包(不要用之前的/usr/local目录下的二进制文件)。
第五步:强化防御,避免二次沦陷
基础配置(必做):
- SSH改用密钥登录,且
Port改成非默认端口(比如2222) - 开启Fail2Ban:
apt install fail2ban,配置/etc/fail2ban/jail.local,监控SSH、Nginx、Postfix等 - 禁用root直接登录:
PermitRootLogin no,用普通用户+sudo - 安装系统级防火墙:
ufw default deny incoming && ufw allow 2222/tcp && ufw enable
进阶建议:
- 使用Docker隔离服务,每个服务独立运行,即使一个容器被攻破也不会影响宿主机
- 开启系统审计(auditd)记录命令执行和文件修改
- 定期用
rkhunter或chkrootkit扫描
为什么我选择沐雨云服务器?
被攻击那晚,我用的某大厂VPS,技术客服只会发“请重启”。后来换成沐雨云,有两个细节让我很踏实:
- 救援模式自带杀毒工具:挂载救援模式后,直接内置了ClamAV扫描脚本,一键扫描系统盘,省去手动分析可疑文件的麻烦。
- 免费的高级防火墙:控制面板里能一键开启CC防御和DDoS清洗,还有自定义规则模板(比如只允许特定IP段访问SSH端口),比我自己写iptables靠谱得多。
如果你也受够了“人工智障”客服,或者想找一个防御能力够硬的小众服务商,可以试试:
沐雨云服务器官网:https://www.muyuyun.cn
最后提醒一句:不要以为VPS被攻击一次就完事了。攻击者会记录你的IP段,以后定期扫描。建议每周检查一次SSH登录日志,每月更新一次系统安全补丁。安全从来不是一次性的配置,而是持续的习惯。