開啟安全功能 ES 叢集就安全了嗎?

infinilabs發表於2024-01-03

背景

經常跟 ES 打交道的朋友都知道,現在主流的 ES 叢集安全方案是:RBAC + TLS for Internal + HTTPS 。

作為終端使用者一般只需要關心使用者名稱和密碼就行了。作為管理和運維 ES 的人員來說,可能希望 ES 能提供密碼策略來強制密碼強度和密碼使用週期。遺憾的是 ES 對密碼強度和密碼使用週期沒有任何強制要求。如果不注意,可能我們天天都在使用“弱密碼”或從不修改的密碼(直到無法登入)。而且 ES 對連續的認證失敗,不會做任何處理,這讓 ES 很容易遭受暴力破解的入侵。
那還有沒有別的辦法,進一步提高安全呢?
其實,閘道器可以來幫忙。
雖然閘道器無法強制提高密碼複雜度,但可以提高 ES 叢集被暴力破解的難度。
大家都知道,暴力破解--本質就是不停的“猜”你的密碼。以現在的 CPU 算力,一秒鐘“猜”個幾千上萬次不過是灑灑水,而且 CPU 監控都不帶波動的,很難發現異常。從這裡入手,一方面,閘道器可以延長認證失敗的過程--延遲返回結果,讓破解不再暴力。另一方面,閘道器可以記錄認證失敗的情況,做到實時監控,有條件的告警。一旦出現苗頭,可以使用閘道器阻斷該 IP 或使用者發來的任何請求。

場景模擬

首先,用閘道器代理 ES 叢集,並在 default_flow 中增加一段   過濾器配置,對返回碼是 401 的請求,跳轉到 rate_limit_flow 進行降速,延遲 5 秒返回。

  - name: default_flow
    filter:
      - elasticsearch:
          elasticsearch: prod
          max_connection_per_node: 1000
      - response_status_filter:
          exclude:
            - 401
          action: redirect_flow
          flow: rate_limit_flow
  - name: rate_limit_flow
    filter:
      - sleep:
          sleep_in_million_seconds: 5000


其次,對於失敗的認證,我們可以透過 Console 來做個看板實時分析,展示。
折線圖、餅圖圖、柱狀圖等,多種展示方式,大家可充分發揮。
最後,可在 Console 的告警中心,配置對應的告警規則,實時監控該類事件,方便及時跟進處置。

效果測試

先帶上正確的使用者名稱密碼測試,看看返回速度。

0.011 秒返回。再使用錯誤的密碼測試。

整整 5 秒多後,才回返結果。如果要暴力破解,每 5 秒鐘甚至更久才嘗試一個密碼,這還叫暴力嗎?

看板示例

此處僅僅是拋磚引玉,歡迎大家發揮想象。

告警示例

建立告警規則,使用者 1 分鐘內超過 3 次登入失敗,就產生告警。

可在告警中心檢視詳情,也可將告警推送至微信、釘釘、飛書、郵件等。

檢視告警詳情,是 es 使用者觸發了告警。

最後,剩下的工作就是對該賬號的處置了。如果有需要可以考慮阻止該使用者或 IP 的請求,對應的過濾器文件在 ,老規矩加到 default_flow 裡就行了。如果小夥伴有其他辦法提升 ES 叢集安全,歡迎和我們一起討論、交流。我們的宗旨是:讓搜尋更簡單!


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70029458/viewspace-3002477/,如需轉載,請註明出處,否則將追究法律責任。

相關文章