一开始我迷迷糊糊,直接敲了top找红得扎眼的进程,看见一个叫sysguard.sh的脚本CPU占了79%,想都没想就pkill -9 sysguard.sh,顺便删了进程列表里对应的PID文件,还沾沾自喜跟朋友说“搞定了,重启下Nginx就行”。结果刚挂电话躺床上,手机又炸了——同样的告警,同样的CPU飙升,团长端又炸了。
这时候我才彻底清醒,朋友才吞吞吐吐告诉我,这个轻量应用服务器本来是给他练手的,上个月刚把团长端迁移过来,忙忘了把默认22端口改掉,更忘了把临时测试用的root远程登录权限关掉,连基础的fail2ban都没装,难怪被扫爆钻了空子。
接下来我不敢再大意,先稳环境。中小团购凌晨三点本来就没多少散单,我直接用朋友手机热点查了个临时公网IP,敲了ufw default deny incoming封死所有外部流量入口,再ufw allow from 203.0.113.12 to any port 22只留我远程的这个IP连SSH,最后ufw enable确认规则生效,检查状态的话用ufw status verbose就行,能看到每条规则的详情,心里踏实。

稳了环境之后才开始排查后门和彻底清除。第一步先看定时任务,敲了crontab -l,除了团长端的凌晨备份,果然多了两条每分钟执行的脚本:一条是从境外服务器下载新的sysguard.sh到/tmp/.hidden/,另一条是把sysguard.sh伪装成系统守护进程启动。我赶紧敲crontab -e删掉这两条,同时不能只删/tmp/.hidden/的文件——/tmp目录重启会清空,但新手容易忽略攻击者把备用文件藏在其他隐蔽位置,比如/var/spool/cron/crontabs/(其他用户的定时任务,虽然朋友只有root,但也要查)、/etc/rc.local、/etc/cron.d/这些地方,还好我那天仔细翻了,没有其他备用文件。
然后查SSH的登录记录和配置,敲last -f /var/log/wtmp看最近的成功登录,果然有两个陌生的境外IP连续登录了三个小时;再看/etc/ssh/sshd_config,发现PermitRootLogin居然被改成了yes(朋友说他明明之前练手改了no,估计是被攻击者改回去留的后门),我赶紧改回no,加上PubkeyAuthentication yes禁用密码登录,最后敲systemctl restart sshd重启SSH服务。
那天折腾到凌晨五点多才彻底搞定,临走前还给朋友装了个fail2ban加了简单的规则,叮嘱他第二天一定要把SSH端口改成五位数以上的,比如37219,团长端的临时测试静态IP不用了就赶紧删掉。
说实话,服务器被植入木马这种事,真的别慌到直接杀进程删文件,第一步一定要先断网稳环境,避免攻击者继续留后门或者转移数据;然后别只盯着表面的定时任务和进程,一定要把系统的每个角落都翻一遍,特别是系统启动项、定时任务目录、SSH配置这些地方。你们在运维工作中有没有遇到过类似的情况?欢迎在评论区分享你的排查经验。

评论列表 (0条):
加载更多评论 Loading...