Wazuh的告警系統實作 - ElastAlert 的 POST & EMAIL 警報觸發 教學
參考連結
- elastAlert - HTTP POST
- 沒有mail server怎麼測試寄送email?快放過你的gmail來看看有那些可以測試用的smtp mail server
- 在elastAlert透過mail發送訊息
前言
我們在上一篇說明完如何透過 slack 來發送告警通知,本篇的目的這次著重在。
- [x] 怎麼透過 email 發送訊息
- [x] 成功觸發發送 email 功能
- [x] 把 Labeling Service 部署到 機器上
- [x] 成功觸發發送 發api進行 labeling 功能
透過 post 來發送訊息
如果你想要設定 Rule 是可以發送 HTTP POST 的,可以參考以下的設定方式。
HTTP POST的設定Key意思:
http_post_url
:設定要發送請求的URL地址。http_post_payload
(可選):以键值對形式配置的POST请求的内容。- 例如,ip: clientip 會將Elasticsearch中clientip索引的值映射到名为ip的JSON键。
- 如果未定義,則會發送所有Elasticsearch的键值對。
http_post_static_payload
(可選):靜態参数的键值對(value不是參考elasticSearch是自己填寫),會跟http_post_payload
Elasticsearch的结果一起發送。可以在這裡放是其他純文字的內容。http_post_headers
(可選):要作為請求的一部分發送header的键值對。http_post_proxy
(可選):代理的URL,如果需要的话。(前提是,http_post_url
有proxy,可以方面查看風包內的訊息)http_post_timeout
(可選):POST請求的超時值,單位為秒,默認為10秒。如果超時發生將在下次ElastAlert訓環時重試警報。
1 | name: "Shannon-Alert-Test" |
上面發出的訊息類似下面的效果
1 | curl -X POST \ |
透過 Email 來發送訊息
MailTrap 申請
- 一開始預設會有 Inboxes 那是收訊息的地方,還有關於我們要用的是 SMTP 的設定。
- 可以看到以下訊息:
- (1): SMTP HOST
- (2): SMTP 帳號
- (3): SMTP 密碼
- (4): 可以切換不同的語言或是工具查看使用這個服務的方式
- (5): 直接看到如何使用的範例程式碼
- (6): 可以直接重新產生帳號和密碼
ElastAlert 設定
ElastAlert 使用 email 通知時,如果需要帳號密碼,需要另外用 yaml 檔案格式紀錄帳號與密碼,再將檔案位置指定給 rule 使用,以下延續之前筆記的路徑規則設定
- 建立
/opt/elastalert/config/emailauth.yaml
把剛剛在MailTrap產生的帳號密碼放入。
1 | user: "username" |
- 調整 docker compoe,把剛剛的 yaml 檔案掛載到 container 裡面
/opt/elastalert/config/emailauth.yaml
的位置。
1 | version: '3.4' |
- 可以查看一下 logs 確認是否有正常運行
1 | docker-compose logs -f elastalert |
- 更正 rule 的 email 通知方式,
/opt/elastalert/rules/a.yaml
,設定以下內容。更正完不用重新啟動,就會自動套用囉,因為我們有掛載 volume。Host的檔案更改時,container裡面的檔案也會跟著更改。
1 | ... |
補充:想要透過標籤Label來得知裝置使用者
在wazuh註冊的話只能透過device id來知道裝置身份,但是我們根本不知道使用者身份呀?,所以可以透過wazuh的Agent Label設定於ossec.conf
,每次發送Alert的時候,添加Label的訊息進去。
設定wazuh的Agent Label
如果你是Windows可以直接在 C://Program Files (x86)/ossec-agent/ossec.conf
裡面設定,如果是Linux的話,可以在 /var/ossec/etc/ossec.conf
裡面設定。
- 打開 ossec.conf
- 在 ossec.conf 設定以下內容:
1 | <labels> |
怎麼在rules抓取label內容
-
先知道 label 會位於 fields 的哪一個位置,可以從 kiabana 的 Discover 看到,他在
agent.labels.user.account
。
-
所以可以在 rule 做以下設定,使得在 alert 的發送訊息中包含使用者資訊,設定如下:
1 | # 警告訊息 |
結論
這樣這篇至少你知道該如何透過 Email 來發送警報通知。
目前的進度,完成前面兩者,明天會繼續完成email的警報教學:
- [x] 了解 elastAlert 的 Rule types 撰寫方式
- [x] 成功觸發 slack ,並發送訊息
- [x] 怎麼透過 email 發送訊息
- [x] 成功觸發發送 email 功能
- [x] 把 Labeling Service 部署到 機器上
- [x] 成功觸發發送 發api進行 labeling 功能
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Shannon's Blog 🐟 技術 | 生活 | 旅行! 如果你覺得我的文章有幫助,希望你可以到我的 github 給我一個 star ⭐️ Shannon Blog Repo
評論