在阿里云买了一台服务器,临时搭建了一套harbor仓库,用来做镜像构建测试,默认阿里云是没有开放80端口和2375端口,这里在阿里云的控制台将这两个端口放开,用于harbor web的访问,和docker api的连接,不知道怎么就把我的机器变矿机了,太可恶了。
晚上收到阿里云的监控短信,提示服务器有挖矿进程,提醒尽快处理,别的不说,阿里云的监控还是挺到位的,第二天起来登上服务器看了下问题出现在哪里。
首先就是打开了top -c
命令,发现有两个进程占用了我90%的cpu,查看进程文件所在位置
ls -la /proc/$PID/exe
我们可以看到指向的命令文件连接 /usr/bin/docker-cache
,以为轻松的就搞定了,结果发现没有这个文件,懵逼中,网上搜了一些被挖矿解决方案,没毛病,都是这样来定位异常文件的,暂时先把进程 kill -9 $PID
了,后续观察挖矿进程没有再出现了。
不过阿里云又发短信报告另一个问题了,说我的机器由于被检测到对外共计,已阻断该服务器对其它服务器端口(tcp:2375)的访问,暂时封禁了,莫名其妙,还是观察top下有哪些异常进程,发现了 masscan
这个端口扫描命令,有四个进程在每秒360次的频率访问不同网段的2375
端口,查了下,这个是端口扫描工具,不过我并没有安装,同样没有找到执行文件,先kill掉了进程,不过不一会这个进程又自动起来了,这就很郁闷了,最后想着重启机器试试,结果重启机器后服务器反应迟钝,发现挖矿那个进程又起来了,真是没救了,差点没忍住重新做系统了。
在安装docker的时候,配置了tcp:2375端口,便于通过python的docker库连接服务
在 /etc/docker/daemon.json
配置了2375,若无此文件,创建即可
{
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"],
"insecure-registries": ["http://xx.xx.xx.xx"]
}
在 /etc/systemd/system/docker.service.d/override.conf
文件添加如下命令
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd
然后重启:
systemctl daemon-reload && systemctl restart docker
即可完成对tcp的配置,可在本机通过以下命令验证, 查看远程docker的版本信息
docker -H tcp://39.98.129.24:2375 version
由于机器上没有安装多少东西,就直接查看了所有进程
ps -ef
发现原来的异常进程都在,网上有说查看父进程,试了下
ps -axjf
这下子清晰了,发现这些异常进程是由docker跑起来的,想不通了,把父进程全干掉,以为就没事了,结果重启了docker后又重启起来了,突然想起来去docker的容器列表看一下
docker ps
发现有四个容器,并不是我的,终于发现问题的所在了,进程中的文件应该指向的路径属于容器内的,将这个几个容器停掉,清理之后,服务器恢复正常。
竟然悄悄的把恶意程序跑在了容器里,真是鸡贼。
网友评论