问题出现
本来又是风和日丽的一天,按照日常打开我的小小服务器检查一下各种中间件和爬虫的运行情况,但是一开打欧文的实例,我傻眼了。
cpu直接被打到100% , 多项服务挂掉。
问题排查
输入系统资源监控的相关命令, 发现有几个伪装戴sys字眼的进程侵占资源非常严重,分别是sysupdate、networkservice等等,不得不说这真实狡猾啊,如果是刚接触云服务器没多久的小白,还真有可能以为是系统更新和网络服务的相关服务呢,但是我觉得太奇怪了,开始查阅相关资料。发现原来是定时器脚本类的病毒啊。
病毒路径
在/etc下下载了config.json(挖矿配置)、sysupdate(XMR挖矿软件)、update.sh(本脚本)、networkservice(scanner 扫描并入侵其他的主机)、sysguard(watchdog 用于监控并保证病毒的正常运行以及更新)并保证他们以root权限运行。
清除过程
- 1.删除定时任务
rm /var/spool/cron/root 或crontab -r
-
- 杀掉进程 删除文件
首先杀进程,kill -9 {进程号},然后删除文件
直接删除sysupdate你会发现无法删除,因为一般病毒会使用chattr +i命令,
我们使用chattr -i sysupdate,然后再 rm -f sysupdate 即可正常删除。
同理删除networkservice、sysguard、update.sh、config.json。
-
- /root/.ssh/authorized_keys 删除或修复
预防措施
查阅相关资料后说脚本病毒极有可能是通过redis进来的。
联想到我刚刚好这几天开放了redis的对外端口,立刻就被病毒攻破了。。。看来redis的安全环境还是比较堪忧啊,
我的redis实例还是由设置requirepass相关密码的, 可能是密码过于简单被暴力试破了。
总结
目前的预防措施是redis端口仅对特定ip开放了, 果然这几天暂时没有再被病毒入侵,这也让我们重新思考我们公司的相关服务器的redis的对外开放情况,虽然开发环境是对外开放的,但是生产环境是绝对不允许对外部id开放连接的,因为redis的速度比较快,存在一定被暴力破解密码的可能性, 这也让我学习到了一个从安全角度考虑生产中的中间件开放问题。