今天的文章滿特別的
因為這幾天稍微規劃跟確認了整個系列文的走向跟內容
所以直接把這篇文章當成目錄文章XD
順便解釋和分享一下我的一些想法
大家在學習或是研究資安的這條路上
其實根據個人的領域、職位、程度、興趣,都會有不同的需求
可以釐清自己所需,去找到適當的學習資源
在廣度與深度之間,在理論和實作之間,取得良好的平衡
例如,從比較High Level (抽象) 排序到 Low Level (具體)
以上內容沒有任何誰好誰壞,哪種比較厲害
畢竟人的時間是有限的,所以多少要能取捨去根據需求找到適合內容
當然也建議可以的話盡可能多方嘗試,了解不同內容
不要僅停留在某一個地方,除非你已經目標很明確可能另外了XD
不要說只知道一些工具,然後安裝了之後也不熟怎麼用
或是只熟一套工具,其他的有甚麼類似或可以整合的也不清楚
或是知道一些工具,但沒有整體規劃概念和格局,會推薦某套工具只是單純知道這套
或是在規劃跟管理階段,不知道技術跟工具實作原理,規劃跟設計的架構存在問題
以下是本系列文章的目錄
(連結會慢慢補上)
一個人的藍隊
好了~ 今天要來談 Anti-flooding mechanism 防止洪水機制
先簡單介紹甚麼是 Flooding 洪水
以攻擊來說的話,"洪水攻擊"(Flooding Attack)是指攻擊者試圖通過向目標系統或網路發送大量的請求、數據或流量,以耗盡目標資源,從而導致服務不可用或性能降低的攻擊行為。這種行為的目標是讓目標系統無法正常工作,使其難以提供正常的服務。
因為我們這邊談的是 Wazuh SIEM 的 Flooding,所以關注的就是 Log Flooding。當我們所監控的 Agent 上面 Log 太多怎麼辦?短時間內大量過多的 Log 被推送到 Server 上面,可能會造成:
這種 Log Flooding 的場景,有可能是攻擊者的行為,但也有可能是正常的行為,有時間一些資料庫服務、大量管理或監控的服務(例如 K8S、Zabbix、LiberNMS 等),甚至是其他的排程或是應用程式,雖然是正常的行為,都有可能造成。
只要短時間內有大量的寫入Log的行為,或是其他EDR有監控到的行為,都有可能造成。這邊要特定提醒一下,Wazuh Agent會把監控的LOG檔案裡面所有的內容都推送到Server去分析,所以不管你這個內容到底有沒有觸發到Wazuh Alert Rule或是Decoder,每一行都還是會被推送過去。這當然也是很合理的吧,畢竟你沒到Server分析,我怎麼知道這一筆LOG是有沒有問題的。
不過也因此,這個Flood的重點是Log的內容數量,跟Decoder和Rule無關,不會因為你去調整了Rule,原本發生的Flood事件就不會發生了。
這個也牽扯到我們之前討論過的,究竟是要我日誌就開到爆,還是更精準的紀錄。有些服務,例如資料庫好了,如果你開啟到Debug等級的日誌,當有多數使用者在使用服務時,可能會很容易就出現Flood的情況。
好,回到 Wazuh 這個服務,雖然 Flood 感覺很可怕難搞(確實是難搞)。但 Wazuh 強大的先幫我們把這個問題算是解決了唷,他本身有提供 Anti-flooding mechanism 防止洪水機制。
可以參考以下官方文件和圖
https://documentation.wazuh.com/current/user-manual/agents/antiflooding.html
這邊白話簡單翻譯
主機上面安裝的 Agent,他每秒最多就是傳送 500 個事件到 Server,然後如果來不及傳送的就到buffer 排隊(queue)。這個排隊的人潮最多就是 5000 個,超過 5000 個的就捨棄(drop)。
排隊人潮到 90% 的時候,他就會發送一個 alert,告訴你這台主機目前排隊的人快滿了唷。排隊滿人的時候也會發一個 alert,告訴你目前排隊人滿了,所以待會有些事件可能會被捨棄。
這個防洪水機制個人覺得是滿讚滿貼心的,至少你不用太擔心 Server 硬碟突然爆掉或是性能崩潰 (不過還是要視你的伺服器資源而定)。不過還是要注意,如果排隊人滿了,還有事件在還沒消化完之前進來,Agent 就會把它捨棄掉,這樣的情況仍然是有可能造成真實的惡意事件被捨棄,根本沒有被拋到 Server 端進行分析。
所以這個 Buffer 當然是可以讓你調整的,如果你的 Server 資源夠力,這個 Log 你也不想忽略掉,是可以把 Client buffer 去增加的,反之亦然。
可以在client的ossec.conf去調整
設定的格式如下,這邊的5000跟500就是預設的值
<client_buffer>
<!-- Agent buffer options -->
<disabled>no</disabled>
<queue_size>5000</queue_size>
<events_per_second>500</events_per_second>
</client_buffer>
這個設定因為是在client ossec.conf
如同我們之前多次提及的
我們也可以在Server端集中配置,透過Server上的agent.conf來設定