昨天刚把博客迁移到新的机器,今天突然发现监控cpu100%告警。上服务器一看,发现一个陌生的进程名:kdevtmpfsi,网上一搜,哦豁,挖矿脚本,于是开始排查解决。
1. 杀进程删文件
进程的目录显示在/tmp下,结果我去/tmp下一看没找到。想了一下反应过来,可能是在docker容器里,docker stats一看,果然php的容器cpu占用拉满了,进容器里的/tmp目录下,发现了2个目标文件:kdevtmpfsi和kinsing,看网上说kinsing是守护进程脚本,先都删除掉,然后退出容器,kill掉对应的进程。因为没有找到根本的原因,猜测进程还会被重新拉起来,于是等了几分钟,不出所料这两个服务又出现了。
2. docker容器端口暴露
google了一下相应的关键词,有文章说是docker端口暴露的原因,我心想不可能啊,我配置了daemon.json默认只允许本机访问,而且ufw只开启了80,443和ssh,没理由能通过docker的端口注入。无意间突然发现,容器的端口映射宿主机ip变成了0.0.0.0(因为改了配置文件,所以建容器的时候没有指定127.0.0.1),才想起来自己用了自定义的network,难道daemon.json的配置对自建的网络不生效?于是我删除了现有的容器,然后删除了自定义network,使用默认的bridge网络重新创建了容器,保险起见重启了一下机器,等了半个小时,正常了
以后使用docker的时候,还是要注意一下,因为docker默认会绕过iptables的端口限制的,为了防止端口暴露到公网,创建容器的时候,尽量使用bridge网络,且将端口绑定到本机ip 127.0.0.1。