作者:枫凡
问题背景
centos 系统主机启动后提示oom,重启后第一时间也是oom
排查过程
接到此工单之前,通用技术同学已经尝试将系统内部禁止了nginx,php-fpm,mysqld,/etc/rc.local 中的/usr/bin/zabbix_server 的开机自启动,但依然无效,升级过来
常见服务已经禁止,重启也无效,可以使用单用户模式尝试进入查看加载,确认下是否系统服务影响
第一次没有看到启动过程,但是启动后也是提示oom,可以说明并非客户安装的第三方服务导致,而是由于系统内部自身的服务可能被添加篡改导致了
再重启第二次观察单用户模式启动过程,看到如下加载内容
可以定位问题了,/etc/init.d/functions 中有异常的内容在循环耗尽内存
挂载修复盘查看该文件内容,可以明显看到有一句话木马,就是“罪魁祸首”
解决方案
将/etc/init.d/functions 中添加的一句话木马注释重启后恢复正常
扩展
一句话木马解析
:( ) ;:
执行该语句会导致系统内存耗尽,有名的“fork炸弹”
原理就是定义一个函数,并不断递归,不停地制造后台任务
写的容易理解一点就是如下
function()
;
function