我已經開始使用 Zabbix,並且可以看到當 /etc/passwd 等內容發生更改時它會發出警報。
搜尋「root 登入時的 zabbix 警報」不會出現任何提示 - 我該如何在 root 登入時發出警報?
答案1
您不應該完全允許 root 登錄,因為這是不安全的。您應該只允許常規使用者登錄,並且一旦登錄,使用者就可以以sudo
root 身分執行命令。
話雖這麼說,為什麼你只檢查 root 登入?檢查常規用戶登入同樣重要。網路上的機器人一直在對一般用戶進行暴力攻擊。
無論哪種方式,您都需要檢查/var/log/auth.log
SSH 登入是否成功。檢查日誌檔案需要主動 Zabbix 代理程式檢查。因此,首先您需要確保主動檢查正常運作(請參閱這篇博文)。
其次,Zabbix 使用者(預設)以該zabbix
使用者身分執行。因此它將無法讀取/var/log/auth.log
,因為該檔案只能由 root 和群組中的使用者讀取adm
。這樣您就可以將zabbix
使用者新增至adm
群組。這允許 Zabbix 讀取許多日誌檔案(來源)。
最後,您需要在Zabbix前端建立一個監控項目和觸發器。
建立一個專案:
Name: SSH successful authentication
Type: Zabbix agent (active)
Key: log[/var/log/auth.log,"Accepted .*",,,skip,\0]
為該專案建立觸發器:
Name: Successful SSH authentication on {HOST.NAME}
Expression: {Template OS Linux - Extra:log[/var/log/auth.log,"Accepted .*",,,skip,\0].strlen()}>0 and {Template OS Linux - Extra:log[/var/log/auth.log,"Accepted .*",,,skip,\0].nodata(5m)}=0
請注意Accepted .*
該項目中的正規表示式。這應該可以匹配所有類型的 SSH 身份驗證,無論是密碼身份驗證還是公鑰身份驗證。當然,根據您的情況,您可以更改正規表示式以僅匹配來自 root 的登入。但如前所述,從安全角度來看,這是沒有意義的。
另請注意,我使用了log[...]
,因為這會導致與正規表示式相符的負責日誌行包含在 Zabbix 將發送的通知電子郵件中。這樣,您就可以在電子郵件中看到哪個使用者已通過身份驗證。
答案2
對於基於 Debian 的系統,您需要/var/log/auth.log
像這樣解析檔案:
log.count[file,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>,<options>]
https://www.zabbix.com/documentation/current/manual/config/items/itemtypes/zabbix_agent
所以本質上:
log.count[/var/log/auth.log,*root*Accepted,,,skip]