因公司有一个客户是保定的一个医院的,客户反应网站打不开了。向客户索要服务器信息后,登录进去一看,jar包没启动,在启动总是启动不起来。查看内存没问题,使用top命令查看cpu100%。针对cpu100%进行排查,竟然发现把cpu打满的居然是bash这个进程。
bash进程是登录进程,只有人登录进服务器之后,服务器自动起一个bash进程。
一、进行排查
查看pid号
ps -ef|grep bash
kill 掉 #注意别把自己kill下去了
kill -9 bashid
在kill完之后ps -ef|grep bash一查看 又自动起来了。
二、直接怀疑定时任务
服务器中有2个地方可以写定时任务,所以都要检查一下。
1、crontab -l
2、 cat /etc/crontab
果然有一个 * * * * * /usr/bin/.bash/.bash
进行删除定时任务。
在删除/usr/bin/.bash/.bash文件的时候,发现不能删除。
使用 lsattr /usr/bin/.bash/.bash
发现有i的权限。
chattr -i /usr/bin/.bash/*
删除
rm -rf /usr/bin/.bash
三、详细排查
删除定时任务之后,又删除.bash之后还是不行。
索性直接把定时任务关掉
systemctl stop crond
还是不行,使用
lsof -f|grep bash
系统提示lsof命令不存在,很明显黑客给删掉了。
四、彻底解决
应该大概明白就是bash搞的鬼,系统中bash有2个,一个是在 /bin/bash 一个是在/usr/bin/bash.
将2个命令权限降低。
chmod 400 /bin/bash
chmod 400 /usr/bin/bash
这回发现可以了。已经确认就是这2个的问题。
但是当权限降低之后,你就不能登录服务器了。并且systemctl start mysql也无法执行了。
好吧!!!
直接
rm -rf 400 /bin/bash
rm -rf 400 /usr/bin/bash
删掉之后,从一个好的服务器中把bash命令下载到桌面,然后rz 传到中毒的服务器中相对应的目录中。
最后一切都恢复正常了。
有问题请加博主微信进行沟通!
全部评论