個人大腦被挖礦代碼搞的不能好好思考了

我被攻擊了

我的服務器去年末最後兩天被攻擊了,由於一些事情拖着沒來得及處理,今天實在忍不住了,記錄一下被攻擊後發現以及修復的過程。html

2019-12-30 23:39:44 雲盾預警訪問惡意IP 178.170.189.5
這一次預警中有一個關鍵字「kdevtmpfsi」redis

2019-12-31 04:19:19 雲盾預警礦池通訊行爲 178.170.189.5 kdevtmpfsidocker

如何找到根源

kdevtmpfsi 假裝的挺好,由於它和一個系統進程的名字很是類似 kdevtmpfs ,一不當心研究的重心就偏移了。我如今的程序是以 docker 運行的,宿主機若是被攻擊了問題就嚴重了。安全

由於自己不是專業運維,排雷全靠猜想。雲盾感知的 cms 可能存在安全漏洞,代碼掃描後沒有發現異常,到這裏我感受問題可能就更嚴重了。bash

容器存在漏洞?容器也就運行了 nmp,會是哪個容器出現問題了呢?有些手足無措。cpu 佔用高,docker 查看一下容器的 cpu 佔用呢?服務器

top

使用 top 命名直接能夠查看到下圖,kdevtmpfsi 差很少100%的CPU佔用,致使服務器徹底被惡意程序佔用,我自己的服務難以正常運行。markdown

container

cpu 被 kdevtmpfsi 挖礦程序佔用 100%。按照上面的定位到容器的問題,使用命令查看容器狀態 docker stats 得到下圖。運維

看到是 redis 容器被利用了,使用命令 docker exec -it 容器ID /bin/bash 進入內部看看具體問題呢?CTRL+P+Qoop

使用命令 ls -lrt 能夠看到最先下載的 kinsing 文件是去年30日,與最先告警時間也基本在同一天。經過搜索學習到這個文件是挖礦程序的手續進程,後續須要清理掉。學習

按照雲盾報警的狀況咱們看下文件是否存在 /tmp/kdevtmpfsi ,若是存在也須要清理掉才行。文件確定是存在的,我還幹了一件事情就是 kill -9 ID,CPU 佔用明顯就降下來了 ,而後手動運行了一下這個程序,發現 CPU 直接就飆升了

它是如何作到的

問題找到了,只要殺掉當前進程以及守護進程,問題也就暫時解決了。沒有找到根源,問題仍是可能被利用,繼續寫入挖礦程序,咱們先思考一下漏洞在哪裏呢?

上面分析出來是由於 redis 的漏洞致使的?想一下咱們的 redis 是如何安裝的,我當初測試一個須要登陸才能使用的應用程序,登陸的方式是關注公衆號,而後獲取受權碼去解鎖使用。就使用 redis 存放了臨時 token ,安裝 redis 的時候直接就是裸奔在空氣中,沒有密碼。

能夠使用命令檢測一下,例如個人公網 IP 是 110.110.110.110。 只須要使用命令 redis-cli -h 110.110.110.110 -p 6379 就直接能夠連上個人 redis 服務了。

經過雲盾安全預警查看到《【漏洞預警】Redis 4.x/5.x 遠程命令執行高危漏洞》,解決這個問題的關鍵能夠設置僅內網訪問 redis,特殊對外的 IP 使用密碼策略。

version: '3'
services:

  # 使用 command 命令設置一下密碼
  redis:
    image: redis:5.0.7
    command: ["redis-server", "--requirepass", "yourpassword"]
    hostname: redis
    networks:
      - redis-net
    volumes:
      - redis-data:/data

networks:
  redis-net:

volumes:
  redis-data:
複製代碼

安全放心上

長呼一口氣以後,想起了《亡羊補牢》的故事。