作者:楓凡
問題背景
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