服務器上線后,怎么發現總有個 xmrig 的容器在跑,刪了還出來
那么恭喜你!!你的服務器已經被入侵了!!
$ docker ps
IMAGE COMMAND CREATED STATUS PORTS NAMES
linuxrun/cpu2
"./xmrig --algo=cr...." 4 hours ago Exited (137) 7 minutes ago linuxrun-cpu2
這就是有人在你的 Docker 宿主上跑了一個 xmrig 挖礦的蠕蟲,因為你的系統被入侵了……
在你說 Docker 不安全之前,先檢討一下自己是不是做錯了。
檢查一下 dockerd 引擎是否配置錯誤:ps -ef | grep dockerd,如果你看到的是這樣子的:
$ ps -ef | grep dockerd
123 root 12:34 /usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
如果在其中沒有 --tlsverify 類的 TLS 配置參數,那就說明你將你的系統大門徹底敞開了。這是配置上嚴重的安全事故。
-H tcp://0.0.0.0:2375 是說你希望通過 2375/tcp 來操控你的 Docker 引擎,但是如果你沒有加 --tlsverify 類的配置,就表明你的意圖是允許任何人來操控你的 Docker 引擎,而 Docker 引擎是以 root 權限允許的,
因此,你等於給了地球上所有人你服務器的 root 權限,而且還沒密碼。
如果細心一些,去查看 dockerd 的服務日志,journalctl -u docker,日志中有明確的警告,警告你這么配置是極端危險的:
$ journalctl -u docker
...
level=warning msg="[!] DON'T BIND ON ANY IP ADDRESS WITHOUT setting --tlsverify IF YOU DON'T KNOW WHAT YOU'RE DOING [!]"
...
如果這些你都忽略了,那么被別人入侵就太正常了,是你自己邀請別人來的。所以,Docker 服務綁定端口,必須通過 TLS 保護起來,以后見到 -H tcp://.... 就要檢查,是否同時配置了 --tlsverify,如果沒看到,那就是嚴重錯誤了。
這也是為什么推薦使用 docker-machine 進行 Docker 宿主管理的原因,因為 docker-machine 會幫你創建證書、配置 TLS,確保服務器的安全。
配置 TLS 的信息可以查看官網文檔:
https://docs.docker.com/engine/security/https/
關於 docker-machine 的介紹,可以看官網文檔:
https://docs.docker.com/machine/overview/
歡迎加入QQ群一起討論Linux、開源等技術
