首先,今天網路好像有點問題!只先發文字,圖片有機會再補上!
今天我們要做一件事情
我們在nginx上面的log並沒有被收容到我們的Wazuh Server
但我們想要監控該log,是否可以呢?
當然是可以的,我們可以設定要蒐集的log的位置
就可以將log內容給推送到server
這件事情可以從兩個地方達成
第一個我們是可以於agent主機上的ossec.conf上面設定
把以下內容給加入到agent主機上的ossec.conf
這樣他就會將這個位置的log給推送到wazuh server(也就是wazuh manager)
<localfile>
<log_format>syslog</log_format>
<location>/var/log/nginx/access.log</location>
</localfile>
<localfile>
<log_format>syslog</log_format>
<location>/root/nginx/log/access.log</location>
</localfile>
systemctl restart wazuh-agent
第一個是直接安裝在Server上面的Nginx
第二個是用容器方式安裝的Nginx
而且因為wazuh官方本來就有decode以及rule會去解析nginx的log
所以我們初步只需要指定好log的位置,不需要多做甚麼
預設就有一些alert的觸發規則了
https://github.com/wazuh/wazuh/blob/master/ruleset/rules/0260-nginx_rules.xml
利用nikto去掃描一下這兩個webserver
回到wazuh的dashboard就可以看到觸發了許多alerts
./nikto.pl -h http://192.168.101.142
./nikto.pl -h http://192.168.101.142:86
第一種方式需要改寫agent主機上的ossec.conf
某些時候不太明智的,當現在如果有大量的主機需要監控
你這樣一台一台修改不但浪費時間,手動操作錯誤的可能性也增高
所以有沒有更聰明簡單的方式
當然有,就是我們在管理與設定的文章當中提到的
去修改server上面的群組底下的agent.conf
(忘記的人請自行回去複習)
不過回頭複習一下我們那個小小的架構
可能會有一個小問題,我們一台機器僅有Nginx, 一台僅有Mongodb
這樣我把Log蒐集位置都加在default群組,不是會有點…多餘嗎
的確,但如果只是log
老實說也不是甚麼問題,只是看起來有點多餘而已XD
會變成每台機器上的設定都是去搜Nginx跟Mongodb的log
如果蒐集不到,該Log檔案不存在,那他就不會收了,也沒甚麼
但實際上呢,因為這個agent.conf不僅僅可以設定收容的log位置
還有其他很多東西可以設定,所以如果我們可以針對不同的主機群進行分類
每個不同類型的主機使用不同的設定檔,當然是會更好
那wazuh有沒有提供這樣的功能呢?一定是大拇指的啦
大家一定都有注意到,我們agent都在default這個群組下面
就表示wazuh有群組(group)的功能
我們可以將Nginx改成設定到nginx group
將Mongodb主機改成設定到database群組
這樣問題就搞定了!
BUT,一山還有一山高,雞蛋還有雞蛋糕
好還要更好,因為我在實務工作上有一些事情想做到
也想更清楚的將監控的主機多重分群分類
所以我,想要讓Nginx同時屬於default也屬於nginx這個群組
我也要讓monogodb同時屬於default也屬於mongodb這個群組
大家覺得..可以嗎?
是的,沒錯,如果你在介面上操作(甚至是CLI操作)
都可以成功將一個agent加到多個群組
但關於設定上的問題,有沒有想過,如果一個agent歸屬於多個群組
那他會吃到誰的agent.conf呢?
官方其實有給出一個解答
https://documentation.wazuh.com/current/user-manual/reference/centralized-configuration.html
根據官方說法:一個agent可以設定多個group,但會以最後一個為優先
In case an agent is assigned to multiple groups, all the files contained in each group folder will be merged into one, and subsequently sent to the agents, being the last one the group with the highest priority.
(其實這個在我們先前文章提到的優先級的原則類似)
以為一切都順順利利可以下班了
沒想到當你吃個火鍋唱著歌,又被wazuh陰啦!
實際上在4.3.10版本測試時
在其中一個agent,套用了default與nginx兩個group
兩個group底下都有入agent.conf
會發生有問題衝突
首先你會發現agent主機上面的agent.conf沒有正常work
其次你會發現server的log有出現ERROR
2023/08/10 03:47:31 wazuh-remoted: ERROR: Cannot create multigroup directory 'var/multigroups/01ee82d7': Permission denied (13)
怎麼會這樣?難道一個agent不能加到很多個group嗎?官網騙我
我們繼續上官方查看看有沒有甚麼豬屍馬雞
發現release note好像有提到修復這個bug
https://documentation.wazuh.com/current/release-notes/release-4-4-0.html
#12516 Fixed a bug in the manager that did not send shared folders correctly to agents belonging to multiple groups.
表示曾經存在這個問題,但應該解決了才對
如果不是很在意這個功能的人
可以把他當成BUG還在,就不要這樣玩,就下課就好了
但我真的很需要把一個agent設給多個群組
所以又尋找了一下,發現可能升版之後是修復了
但是只有使用docker容器才會出現的問題
應該是官方打包dockerfile的時候沒寫好(可能?)
回頭仔細查看log問題是發生在multigroup directory目錄的權限
所以我們來嘗試調整一下
我們發現目錄multigroup directory 的owner是root
我們修改成101:101
也就是wazuh server的使用者UID GID
接著重新啟動
發現就被我們修補好了,multiple groups就可以成功work