服务器中挖矿病毒了,c3pool,经过了一顿操作,删除定时任务、清除.ssh、删除各种可执行文件、删除开机启动任务之后,病毒算是消停了,进程里也没有了踪迹,CPU占用也下来了。(具体过程请百度,大同小异)。
但是,问题出现了,一顿操作之后重启服务器,在任何服务都未启动的情况下,内存已经65%,通过top看不出任何问题,只能通过free命令看到used的内存已经达到了2.4G(服务器总内存4G)。
这时候再启动我们的服务,就会出现内存不足、进程莫名其妙退出等情况。
经过了一系列努力,最终通过查看病毒的原始代码,发现一处可以内存分配操作
if [[ $(grep MemTotal /proc/meminfo | awk '{print $2}') > 3500000 ]]; then
echo "[*] Enabling huge pages"
echo "[*] 启用 huge pages"
echo "vm.nr_hugepages=$((1168+$(nproc)))" | sudo tee -a /etc/sysctl.conf
sudo sysctl -w vm.nr_hugepages=$((1168+$(nproc)))
fi
大致的流程就是,如果内存大于3500000k,即3.5G,就启用大内存页配置vm.nr_hugepages=1170,此参数设置了大内存页的个数,导致服务器启动时就预先分配了内存?(具体原理还没摸清楚)
同时:kernel.nmi_watchdog=0关闭了
vim /etc/sysctl.conf
解决
删除/etc/sysctl.conf中所有的
vm.nr_hugepages=1170
kernel.nmi_watchdog=0
删除完之后如下,最后重启服务
最后验证一下,问题解决