Zabbix日志監控:Linux異常登錄告警


摘要:     本文利用zabbix的日志監控功能監控Linux的secure日志,當有用戶登錄失敗或者用戶在非常規時間登錄成功時發出告警。     這里我們使用zabbix提供的'log[file,<regexp>,<encoding><maxlines>,<mode>,<output>]'來監控Linux的/var/log/secure文件。

 

    本文利用zabbix的日志監控功能監控Linux的secure日志,當有用戶登錄失敗或者用戶在非常規時間登錄成功時發出告警。

    這里我們使用zabbix提供的'log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>]'來監控Linux的/var/log/secure文件。先介紹下這個log監控項:

    1)監控項類型是Zabbix agent (active),返回數據類型是Log。

    2)Zabbix agent要對監控的日志文件有可讀權限,否則會返回unsupported。

    3)參數介紹:

    file - 日志文件的全路徑。
    regexp - 過濾日志的正則表達式。
    encoding - 字符編碼,默認為英文單字節SBCS(Single-Byte Character Set)。

    maxlines - agent每秒發送給server(或proxy)的數據的最大行數,這個參數會覆蓋掉zabbix_agentd.conf配置文件里的'MaxLinesPerSecond'參數。

    mode - 可填參數:all(默認),skip(跳過舊數據)。
    output - 自定義格式化輸出,默認輸出regexp匹配的整行數據。轉義字符'\0'表示regexp

匹配的數據,轉義字符'\N'(N=1..9)表示regexp里第N個分組匹配到的數據。如果填其他字符串就會覆蓋掉regexp匹配的數據。

    下面先展示下成果,然后介紹操作步驟:

    歷史數據展示:

wKiom1USMfuQB8DnAANV7ef4fY8831.jpg

    告警郵件展示:

wKioL1USMr3DSt6GAAESvA7mPHg947.jpg

    一、創建日志監控item

    選擇“Template OS Linux”模板,創建監控項item,配置如下:

wKioL1USJgnQKdxhAAG6XNSde58535.jpg

    Name - 填"Login attempt"

    Type - 選擇Zabbix agent (active)

    Type of information - 數據類型選擇Log

    Update interval (in sec) - 監控間隔60秒

 

    Key - 填寫如下:

1
log[/var/log/secure,"(Accepted|Failed) password",,,skip,]

    正則表達式為"(Accepted|Failed) password",過濾/var/log/secure中的正確或失敗的用戶登錄請求(這里只過濾密碼驗證方式的登錄)。

    二、創建觸發器trigger

    我們繼續選擇“Template OS Linux”模板,為上面的監控項創建觸發器。

    1、用戶登錄失敗的觸發器配置

 

wKioL1USKQzQkUMpAAGzLeyhaHw947.jpg

    Name - 填"Login attempt has failed"

    Expression - 填寫如下:

1
{Template OS Linux:log[/var/log/secure,"(Accepted|Failed) password",,,skip,].str(Failed)}=1&{Template OS Linux:log[/var/log/secure,"(Accepted|Failed) password",,,skip,].nodata(60)}=0

    表達式的含義為:如果用戶登錄失敗了,item返回數據中會包含"Failed",則觸發器被觸發,60秒內沒有新數據的話,觸發器恢復。這樣就保證了觸發器不會一直在觸發狀態。

    下面把表達式拆解分析:

    A:{Template OS Linux:log[/var/log/secure,"(Accepted|Failed) password",,,skip,].str(Failed)}=1,表示如果字符串中包含"Failed"則表達式為真。

    B:{Template OS Linux:log[/var/log/secure,"(Accepted|Failed) password",,,skip,].nodata(60)}=0,表示60秒內有數據產生則表達式為真,即60秒內如果沒有新數據了,則表達式為假。

    邏輯為A & B,表示同時符合A、B兩個條件(同時為真),觸發器才會觸發。

    2、用戶在非常規的時間登錄成功的觸發器配置

    

wKiom1USJ-iSK7s1AAIrQmnYvUE523.jpg

    Name - 填"Login attempt has accepted"

    Expression - 填寫如下:

1
{Template OS Linux:log[/var/log/secure,"(Accepted|Failed) password",,,skip,].str(Accepted)}=1&{Template OS Linux:log[/var/log/secure,"(Accepted|Failed) password",,,skip,].nodata(60)}=0&({Template OS Linux:log[/var/log/secure,"(Accepted|Failed) password",,,skip,].time(0)}<080000|{Template OS Linux:log[/var/log/secure,"(Accepted|Failed) password",,,skip,].time(0)}>200000)

    表達式的含義為:晚上20點到早上8點之間如果有用戶登錄成功了,item返回數據中會包含"Accepted",則觸發器被觸發,60秒內沒有新數據的話,觸發器恢復。

    下面把表達式拆解分析:

    A:{Template OS Linux:log[/var/log/secure,"(Accepted|Failed) password",,,skip,].str(Accepted)}=1,表示如果字符串中包含"Accepted"則表達式為真。

    B:{Template OS Linux:log[/var/log/secure,"(Accepted|Failed) password",,,skip,].nodata(60)}=0,表示60秒內有數據產生則表達式為真,即60秒內如果沒有新數據了,則表達式為假。

    C:{Template OS Linux:log[/var/log/secure,"(Accepted|Failed) password",,,skip,].time(0)}<080000,表示當前時間小於8點(08:00:00)則表達式為真。

    D:{Template OS Linux:log[/var/log/secure,"(Accepted|Failed) password",,,skip,].time(0)}>200000,表示當前時間大於晚上8點(20:00:00)則表達式為真。

    邏輯為A & B & (C | D),表示A和B要同時為真且C和D只要一個為真,則整個表達式為真,觸發器才會觸發。

    這樣“Template OS Linux”模板我們就配置好了,下面配置Linux agent客戶端。

    三、Linux客戶端配置

    1、保證兩個Hostname一致

    第一個Hostname是指zabbix_agentd.conf配置文件中的"Hostname"參數;第二個Hostname是指主機配置里的"Host name"。

    這兩個配置要相同,因為agent是以"Hostname"為參數向server發送"active checks"請求,server收到請求,到數據庫里找到相同的名稱的主機后,向agent返回active類型的監控項列表。agent根據這個item list進行監控,收集數據,並主動把數據推送給server。

    具體請看官方文檔:https://www.zabbix.com/documentation/2.2/manual/appendix/items/activepassive#active_checks

wKiom1USNSazpBTQAACo4dqr58Y445.jpg

wKioL1USNmfADH0QAAHi6oOUHA4769.jpg

    2、設置ServerActive參數

    agent向哪個server發送"active checks"請求是由配置文件中的"ServerActive"參數決定的。"ServerActive"定義了zabbix server的ip和端口。

wKiom1USN1GDCLeBAAFLWFxzzhY539.jpg

    3、設置日志文件的權限

    /var/log/secure的權限一般是600,zabbix agent對此文件沒有權限。zabbix用戶是agent的啟動用戶,所以我們要設置zabbix用戶對/var/log/secure有可讀權限,這樣agent才能監控。

    執行下面的命令,追加zabbix的可讀權限:

1
setfacl -m u:zabbix:r--  /var/log/secure

    4、修改logrotate配置

wKiom1UYytGBkHxiAAFGwVNRy1s645.jpg

1
sed  -i  '/kill/a\/usr\/bin\/setfacl -m u:zabbix:r-- \/var\/log\/secure'  /etc/logrotate .d /syslog

    agent上要注意的配置就是這些了。修改完配置文件后要重啟agent。

    最后,我們還要在zabbix web上設置"Actions",定義告警操作,設置告警收件人。這樣發生告警后,相關的收件人會收到告警郵件。

 
 
本文轉自 張斌_青島 51CTO博客,原文鏈接:http://blog.51cto.com/qicheng0211/1624155


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM