來源:https://documentation.wazuh.com/current/getting-started/index.html
一斯嚎、總體框架
Wazuh是一個安全檢測纸俭、可視化和安全合規(guī)開源項目。它最初是OSSEC HIDS的一個分支辟宗,后來與Elastic Stack和OpenSCAP集成在一起,發(fā)展成為一個更全面的解決方案。下面是這些工具的簡要描述以及它們的作用:
1.1OSSEC HIDS
OSSEC HIDS是一種基于主機的入侵檢測系統(tǒng)(HIDS)即寡,用于安全檢測修然、可見性和遵從性監(jiān)控笛钝。它基于一個多平臺代理质况,將系統(tǒng)數(shù)據(jù)(如:日志消息、文件散列和檢測到的異常)轉(zhuǎn)發(fā)給一個中央管理器玻靡,并在其中對其進行進一步分析和處理结榄,從而產(chǎn)生安全警報。代理將事件數(shù)據(jù)通過安全且經(jīng)過身份驗證的通道傳遞給中央管理器囤捻,以便進行分析臼朗。
此外,OSSEC HIDS提供了一個集中的syslog服務(wù)器和一個無代理的配置監(jiān)視系統(tǒng)蝎土,該系統(tǒng)提供了對防火墻视哑、交換機、路由器誊涯、接入點挡毅、網(wǎng)絡(luò)設(shè)備等無代理設(shè)備上的事件和更改的安全洞察。
1.2OpenSCAP
OpenSCAP是一種OVAL(開放漏洞評估語言)和XCCDF(可擴展配置檢查表描述格式)解釋器暴构,用于檢查系統(tǒng)配置和檢測脆弱應(yīng)用程序跪呈。
這是一種眾所周知的工具,用于檢查安全合規(guī)性和使用工業(yè)標準安全基線對企業(yè)環(huán)境的加固取逾。
1.3Elastic Stack
Elastic Stack是一個軟件套件(Filebeat耗绿、Logstash、Elasticsearch菌赖、Kibana)缭乘,用于收集、解析琉用、索引堕绩、存儲、搜索和顯示日志數(shù)據(jù)邑时。它提供了一個web前端奴紧,該前端提供事件的高級儀表板視圖,支持深入到事件數(shù)據(jù)存儲的高級分析和數(shù)據(jù)挖掘晶丘。
二黍氮、組件
Wazuh的主要組件是運行在每個受監(jiān)控主機上的代理,以及分析從代理和syslog等無代理源接收到的數(shù)據(jù)的服務(wù)器浅浮。此外沫浆,服務(wù)器將事件數(shù)據(jù)轉(zhuǎn)發(fā)到一個Elasticsearch集群,在這里對信息進行索引和存儲滚秩。
2.1Wazuh agent
Wazuh代理運行在Windows专执、Linux、Solaris郁油、BSD和Mac操作系統(tǒng)上本股。它用于收集不同類型的系統(tǒng)和應(yīng)用程序數(shù)據(jù)攀痊,這些數(shù)據(jù)通過加密和經(jīng)過身份驗證的通道轉(zhuǎn)發(fā)給Wazuh服務(wù)器。為了建立這個安全通道拄显,使用了一個包含唯一預(yù)共享密鑰的注冊過程苟径。
代理可以用來監(jiān)視物理服務(wù)器、虛擬機和云實例(例如Amazon AWS躬审、Azure或谷歌云)棘街。預(yù)編譯的代理安裝包可用于Linux、HP-UX盒件、AIX蹬碧、Solaris舱禽、Windows和Darwin (Mac OS X)炒刁。
在基于Unix的操作系統(tǒng)上,代理運行多個進程誊稚,這些進程通過本地Unix域套接字相互通信翔始。其中一個進程負責向Wazuh服務(wù)器發(fā)送通信和數(shù)據(jù)。在Windows系統(tǒng)上里伯,只有一個代理進程使用互斥對象運行多個任務(wù)城瞎。
不同的代理任務(wù)或過程以不同的方式監(jiān)視系統(tǒng)(例如,監(jiān)視文件完整性疾瓮、讀取系統(tǒng)日志消息和掃描系統(tǒng)配置)脖镀。
下圖表示在代理級別上發(fā)生的內(nèi)部任務(wù)和流程:
所有代理進程都有不同的目的和設(shè)置。以下是他們的簡要說明:
Rootcheck:這個過程執(zhí)行多個與檢測rootkit狼电、惡意軟件和系統(tǒng)異常相關(guān)的任務(wù)蜒灰。它還對系統(tǒng)配置文件運行某些基本的安全檢查。
日志收集器Log Collector:此代理組件用于讀取操作系統(tǒng)和應(yīng)用程序日志消息肩碟,包括平面日志文件强窖、標準Windows事件日志甚至Windows事件通道。還可以將其配置為定期運行并捕獲特定命令的輸出削祈。
Syscheck:這個過程執(zhí)行文件完整性監(jiān)視(FIM)翅溺,也可以監(jiān)視Windows系統(tǒng)上的注冊表項。它能夠檢測文件的內(nèi)容髓抑、所有權(quán)和其他屬性的變化咙崎,以及記錄文件的創(chuàng)建和刪除。雖然它在默認情況下執(zhí)行定期的FIM掃描吨拍,但它也可以配置為與操作系統(tǒng)內(nèi)核通信褪猛,以便實時檢測文件更改并生成文本文件的詳細更改報告(diffs)。
OpenSCAP:該模塊使用已發(fā)布的OVAL(開放漏洞評估語言)和XCCDF(可擴展配置檢查表描述格式)基線安全概要密末。通過定期掃描系統(tǒng)握爷,它可以找到不符合眾所周知的標準的脆弱的應(yīng)用程序或配置跛璧,例如在CIS(互聯(lián)網(wǎng)安全中心)基準測試中定義的那些。
代理守護進程Agent Daemon:這個進程接收所有其他代理組件生成或收集的數(shù)據(jù)新啼。它通過經(jīng)過身份驗證的通道將數(shù)據(jù)壓縮追城、加密并交付給服務(wù)器。這個進程運行在一個獨立的“chroot”(更改根)環(huán)境中燥撞,這意味著它對被監(jiān)視系統(tǒng)的訪問是有限的座柱。這提高了代理的整體安全性,因為它是連接到網(wǎng)絡(luò)的唯一進程物舒。
2.2Wazuh server
服務(wù)器組件負責分析從代理接收的數(shù)據(jù)色洞,并在事件匹配規(guī)則時觸發(fā)警報(例如檢測到入侵、文件更改冠胯、配置不符合策略火诸、可能的rootkit等)。
服務(wù)器通常運行在獨立的物理機器荠察、虛擬機或云實例上置蜀,并運行代理組件,其目的是監(jiān)視服務(wù)器本身悉盆。以下是主要服務(wù)器組件列表:
注冊服務(wù)Registration service:通過提供和分發(fā)每個代理特有的預(yù)共享身份驗證密鑰來注冊新代理盯荤。此流程作為網(wǎng)絡(luò)服務(wù)運行,支持通過TLS/SSL和/或通過固定密碼進行身份驗證焕盟。
遠程守護進程服務(wù)Remote daemon service:這是從代理接收數(shù)據(jù)的服務(wù)秋秤。它使用預(yù)共享密鑰來驗證每個代理的身份,并加密代理和管理器之間的通信脚翘。
分析守護進程Analysis daemon:這是執(zhí)行數(shù)據(jù)分析的進程灼卢。它利用解碼器識別正在處理的信息類型(如Windows事件、SSHD日志堰怨、web服務(wù)器日志等)芥玉,然后從日志消息(如源ip、事件id备图、用戶等)中提取相關(guān)數(shù)據(jù)元素灿巧。接下來,通過使用規(guī)則揽涮,它可以識別解碼后的日志記錄中的特定模式抠藕,這些模式可能觸發(fā)警報,甚至可能調(diào)用自動對策(主動響應(yīng))蒋困,比如防火墻上的IP禁令盾似。
RESTful APIRESTful API:這提供了一個接口來管理和監(jiān)視代理的配置和部署狀態(tài)。它也被一個Kibana應(yīng)用程序Wazuh web界面所使用。
2.3Elastic Stack
Elastic Stack是一個流行的用于日志管理的開源項目的統(tǒng)一套件零院,包括Elasticsearch溉跃、Logstash、Kibana告抄、Filebeat等撰茎。與Wazuh解決方案特別相關(guān)的項目有:
Elasticsearch:一個高度可伸縮,全文搜索和分析引擎打洼。彈性搜索被分配龄糊,意味著數(shù)據(jù)(索引)被分成shard,并且每個shard可以具有零個或更多個副本募疮。
Logstash:收集和解析要保存到存儲系統(tǒng)中的日志的工具(例如炫惩,Elasticsearch)。收集到的事件還可以使用輸入阿浓、過濾和輸出插件進行豐富和轉(zhuǎn)換他嚷。
Kibana:一個靈活和直觀的web界面,用于挖掘搔扁、分析和可視化數(shù)據(jù)爸舒。它運行在一個Elasticsearch集群上索引的內(nèi)容之上蟋字。
Filebeat:一種輕量級轉(zhuǎn)發(fā)器稿蹲,用于在網(wǎng)絡(luò)中傳送日志,通常用于Logstash或Elasticsearch鹊奖。
Wazuh與Elastic Stack集成苛聘,提供已解碼的日志消息提要,這些日志消息將由Elasticsearch索引忠聚,以及用于警報和日志數(shù)據(jù)分析的實時web控制臺设哗。此外,Wazuh用戶界面(運行在Kibana之上)可用于管理和監(jiān)視您的Wazuh基礎(chǔ)設(shè)施两蟀。
Elasticsearch索引是具有某些相似特征(如某些公共字段和共享數(shù)據(jù)保留需求)的文檔集合网梢。Wazuh每天使用多達三種不同的索引來存儲不同的事件類型:
Wazuh -alerts:每當事件觸發(fā)規(guī)則時,Wazuh服務(wù)器生成警報的索引赂毯。
wazuh-events:從代理接收的所有事件(歸檔數(shù)據(jù))的索引战虏,無論它們是否觸發(fā)規(guī)則。
wazuh-monitoring:索引與代理狀態(tài)相關(guān)的數(shù)據(jù)党涕。web接口使用它表示單個代理處于或已經(jīng)處于“活動”烦感、“斷開”或“從未連接”的情況。
索引是由文檔組成的膛堤。對于上面的索引手趣,文檔是單個警報、歸檔事件或狀態(tài)事件肥荔。
將Elasticsearch索引分成一個或多個shard绿渣,并且每個shard可以選擇性地具有一個或多個副本朝群。每一主和副本shard是單個的Lucene索引。因此中符,一個Elasticsearch索引是由許多Lucene索引組成的潜圃。當搜索在Elasticsearch索引上運行時,將并行地對所有shard執(zhí)行搜索舟茶,并合并結(jié)果谭期。將Elasticsearch索引分成多個shard和復制品用于多節(jié)點的彈性搜索集群,目的是縮小搜索和獲得高可用性吧凉。單節(jié)點Elasticsearch集群通常每個索引只有一個shard隧出,沒有副本。
三阀捅、體系結(jié)構(gòu)
Wazuh架構(gòu)基于運行在受監(jiān)視主機上的代理胀瞪,這些主機將日志數(shù)據(jù)轉(zhuǎn)發(fā)到中央服務(wù)器。此外饲鄙,還支持無代理設(shè)備(如防火墻凄诞、交換機、路由器忍级、接入點等)帆谍,并可以通過syslog和/或其配置更改的定期探針主動提交日志數(shù)據(jù),以便稍后將數(shù)據(jù)轉(zhuǎn)發(fā)到中央服務(wù)器轴咱。中央服務(wù)器對輸入的信息進行解碼和分析汛蝙,并將結(jié)果傳遞給一個Elasticsearch集群進行索引和存儲。
一個Elasticsearch集群是一個或多個節(jié)點(服務(wù)器)的集合朴肺,這些節(jié)點(服務(wù)器)相互通信窖剑,對索引執(zhí)行讀寫操作。小型Wazuh部署(<50個代理)可以由單節(jié)點集群輕松處理戈稿。當存在大量受監(jiān)控系統(tǒng)西土、預(yù)期會有大量數(shù)據(jù)和/或需要高可用性時,建議使用多節(jié)點集群鞍盗。
當Wazuh服務(wù)器和Elasticsearch集群在不同的主機上時需了,F(xiàn)ilebeat可使用TLS加密將Wazuh警報和/或存檔事件安全地轉(zhuǎn)發(fā)到Elasticsearch服務(wù)器。
下圖說明了Wazuh服務(wù)器和Elasticsearch集群在不同主機上運行時組件是如何分布的橡疼。注意援所,對于多節(jié)點集群,將有多個Elastic堆棧服務(wù)器欣除,F(xiàn)ilebeat可以將數(shù)據(jù)轉(zhuǎn)發(fā)到這些服務(wù)器:
在較小的Wazuh部署中住拭,使用單節(jié)點Elasticsearch實例的Wazuh和Elastic堆棧都可以部署在單個服務(wù)器上。在這個場景中,Logstash可以直接從本地文件系統(tǒng)讀取Wazuh警報和/或歸檔事件滔岳,并將它們提供給本地Elasticsearch實例杠娱。
四、通信與數(shù)據(jù)流
4.1代理-服務(wù)器通信
Wazuh代理使用OSSEC消息協(xié)議通過端口1514 (UDP或TCP)將收集到的事件發(fā)送到Wazuh服務(wù)器谱煤。然后摊求,Wazuh服務(wù)器解碼并使用分析引擎對接收到的事件進行規(guī)則檢查。觸發(fā)規(guī)則的事件會被添加警告數(shù)據(jù)刘离,如規(guī)則id和規(guī)則名稱室叉。根據(jù)規(guī)則是否觸發(fā),可以將事件存儲到以下一個或兩個文件:
文件/var/ossec/logs/archives/archives.json包含所有事件硫惕,不管它們是否觸發(fā)了規(guī)則茧痕。
文件/var/ossec/logs/alerts/alerts.json只包含觸發(fā)規(guī)則的事件。
Wazuh消息協(xié)議使用的是192位Blowfish加密恼除,完全實現(xiàn)了16輪踪旷,或者AES加密,每塊128位豁辉,密鑰256位令野。
4.2Wazuh-Elastic通信
在大型部署中,Wazuh服務(wù)器使用Filebeat使用TLS加密將警報和事件數(shù)據(jù)發(fā)送到彈性堆棧服務(wù)器上的loghide (5000/TCP)徽级。對于單主機架構(gòu)气破,Logstash可以直接從本地文件系統(tǒng)讀取事件/警報,而無需使用Filebeat灰追。
Logstash對輸入的數(shù)據(jù)進行格式化堵幽,并可選擇在將數(shù)據(jù)發(fā)送到Elasticsearch(端口9200/TCP)之前豐富GeoIP信息。一旦數(shù)據(jù)被索引到Elasticsearch弹澎,就會使用Kibana(端口5601/TCP)來挖掘和可視化信息。
Wazuh APP運行在Kibana內(nèi)部努咐,不斷查詢RESTful API (Wazuh管理器上的端口55000/TCP)苦蒿,以便顯示服務(wù)器和代理的配置和狀態(tài)相關(guān)信息,并在需要時重新啟動代理渗稍。此通信使用TLS加密佩迟,并使用用戶名和密碼進行身份驗證。
五竿屹、所需端口
對于安裝Wazuh和Elastic堆棧报强,必須有幾個網(wǎng)絡(luò)端口可用并打開,以便不同組件之間能夠正確通信拱燃。
六秉溉、檔案數(shù)據(jù)存儲
除了發(fā)送到Elasticsearch之外,警報和非警報事件都存儲在Wazuh服務(wù)器上的文件中。這些文件可以是JSON格式(. JSON)和/或純文本格式(日志-沒有解碼字段召嘶,但更緊湊)父晶。這些文件每天使用MD5和SHA1校驗和進行壓縮和簽名。目錄和文件名結(jié)構(gòu)如下:
建議根據(jù)Wazuh Manager服務(wù)器的存儲容量對歸檔文件進行輪換和備份弄跌。通過使用cron作業(yè)甲喝,您可以很容易地安排只在管理器上保留一個特定的存檔文件時間窗口(例如,去年或過去三個月)铛只。
另一方面埠胖,您可以選擇完全不存儲歸檔文件,而僅僅依賴于Elasticsearch來存儲歸檔文件淳玩,特別是在運行定期的Elasticsearch快照備份和/或具有碎片副本的多節(jié)點Elasticsearch集群以獲得高可用性時押袍。您甚至可以使用cron作業(yè)將快照索引移動到最終的數(shù)據(jù)存儲服務(wù)器,并使用MD5和SHA1算法對其進行簽名凯肋。