Zabbix日誌監控:Linux異常登陸告警

    本文利用zabbix的日誌監控功能監控Linux的secure日誌,當有用戶登陸失敗或者用戶在很是規時間登錄成功時發出告警web

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

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

    2)Zabbix agent要對監控的日誌文件有可讀權限,不然會返回unsupported。bash

    3)參數介紹:app

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

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

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

匹配的數據,轉義字符'\N'(N=1..9)表示regexp裏第N個分組匹配到的數據。若是填其餘字符串就會覆蓋掉regexp匹配的數據。3d

    下面先展現下成果,而後介紹操做步驟:日誌

    歷史數據展現:

wKiom1USMfuQB8DnAANV7ef4fY8831.jpg

    告警郵件展現:

wKioL1USMr3DSt6GAAESvA7mPHg947.jpg

    1、建立日誌監控item

    選擇「Template OS Linux」模板,建立監控項item,配置以下:

wKioL1USJgnQKdxhAAG6XNSde58535.jpg

    Name - 填"Login attempt"

    Type - 選擇Zabbix agent (active)

    Type of information - 數據類型選擇Log

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


    Key - 填寫以下:

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

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

    2、建立觸發器trigger

    咱們繼續選擇「Template OS Linux」模板,爲上面的監控項建立觸發器。

    一、用戶登陸失敗的觸發器配置


wKioL1USKQzQkUMpAAGzLeyhaHw947.jpg

    Name - 填"Login attempt has failed"

    Expression - 填寫以下:

{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兩個條件(同時爲真),觸發器纔會觸發。

    二、用戶在很是規的時間登陸成功的觸發器配置

   

wKiom1USJ-iSK7s1AAIrQmnYvUE523.jpg

    Name - 填"Login attempt has accepted"

    Expression - 填寫以下:

{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客戶端。

    3、Linux客戶端配置

    一、保證兩個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

    二、設置ServerActive參數

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

wKiom1USN1GDCLeBAAFLWFxzzhY539.jpg

    三、設置日誌文件的權限

    /var/log/secure的權限通常是600,zabbix agent對此文件沒有權限。zabbix用戶是agent的啓動用戶,因此咱們要設置zabbix用戶對/var/log/secure有可讀權限,這樣agent才能監控。

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

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

    四、修改logrotate配置

wKiom1UYytGBkHxiAAFGwVNRy1s645.jpg

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

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

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

相關文章
相關標籤/搜索