我的服務器去年末最後兩天被攻擊了,由於一些事情拖着沒來得及處理,今天實在忍不住了,記錄一下被攻擊後發現以及修復的過程。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
命名直接能夠查看到下圖,kdevtmpfsi
差很少100%的CPU佔用,致使服務器徹底被惡意程序佔用,我自己的服務難以正常運行。markdown
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: 複製代碼
長呼一口氣以後,想起了《亡羊補牢》的故事。