搜尋此網誌

2012年7月18日 星期三

[工具介紹] 利用 Splunk 即時監測登入帳號

logo_splunk_black_mini
之前的這篇文章中,我分享了如何透過 syslog 與自行開發的腳本進行即時監測登入系統的行為。雖然腳本運作起來確實能夠發揮預期的功效,但是原本使用 FIFO 的方式,卻有幾個明顯的缺點。其中一個是 FIFO 並不是實際的檔案,因此當系統重開後這些 FIFO 檔案就會消失不見。這個問題還算小,比較大的問題在於 FIFO 並不保證資料的到達。如果讀取程式在資料寫入的當時沒有讀取到資料的話,該筆資料就將永遠消失不見了。為了避免這些問題,我們可以修改腳本,讓它持續監測 /var/log/secure 這個檔案。除了檔案的問題,原有的腳本也不具備集中管理與歷史紀錄追蹤的功能,因此造成管理上力有未逮的情形。等等,持續監測某個日誌檔、集中管理、歷史紀錄追蹤,不正是 Splunk 所內建的能力嗎?在這篇分享中,我將利用 Splunk 的儀表板功能來即時呈現環境中所有的登入狀態。
為了進行下列設定,我們需要一個能夠正常運作的 Indexer 與 Forwarder。關於 Indexer 與 Forwarder 的設定,請參考前一篇文章
首先,我們必須設定 Forwarder 將登入相關訊息遞送到 Indexer。
  1. 修改資料輸入來源的設定檔,檔案名稱是 /opt/splunkforwarder/etc/system/local/inputs.conf 。
    加上下列設定:
    [monitor:///var/log/secure]
    disabled = false
    followTail = 0 
  2. 重新啟動 Splunk Forwarder。
    指令是
    /opt/splunkforwarder/bin/splunk restart
Forwarder 的設定就是這麼簡單,接下來我們就開始利用 Splunk Web 介面來設定 Indexer 囉。
  1. 自定事件類型。
    因為 /var/log/secure 內包含許多不同的資料,其中有許多並非我們所感到興趣的資料,所以我們必須先將這些不需要的資料加以過濾。我們可以在每次查詢時利用查詢參數過濾掉我們不需要的資料,但是 Splunk 支援更方便的作法,其中一種就是自行定義事件類型。我們可以把過濾後的資訊定義為新的事件類型,如此一來之後的查詢只要針對這個新的事件類型就可以自動過濾掉我們所不需要的資料了。
    點選 "管理員" –> "知識" –> "事件類型"。3001
  2. 點選 "新增類型"。
    3002
  3. 新增事件類型。
    依序輸入下列設定:
    "目的地應用程式" 選取為 "search"。
    "名稱" 輸入為 "sshd_authentication_accepted_whitelisted"。
    "搜尋字串" 設定為 eventtype=sshd_authentication source='/var/log/secure' Accepted
    通常我們會有一些專門用來管理用的 IP 位址,如果我們想要過濾來自這些位址的登入事件,可以將 "搜尋字串" 調整為 eventtype=sshd_authentication source='/var/log/secure' Accepted NOT src_ip=192.168.0.1,其中 192.168.0.1 請修改為你用來進行管理的 IP 位址。如果有多個s管理用的 IP 位址,只要重複 NOT src_ip=aaa.bbb.ccc.ddd 即可。
    設定完畢後請點選 "儲存"。3003
  4. 回到搜尋功能。
    點選右上方 "應用程式" –> "Search"。

  5. 建立查詢條件。
    "搜尋" 輸入 eventtype=sshd_authentication_accepted_whitelisted | fields + dest, src_ip, user | fields - _raw | rename dest AS '目的主機', user AS '帳號', src_ip AS '來源IP'
    眼尖的讀者應該已經發現我們指定的事件類型 (eventtype) 正是我們之前所自定的類型 – sshd_authentication_accepted_whitelisted。

  6. 選擇時間。
    選取 "所有時間" –> "即時" –> "30分鐘間隔"。 
    3005
  7. 儲存查詢指令。
    點選 "儲存" –> "儲存搜尋"。3006
  8. 完成查詢指令的儲存。
    "搜尋名稱" 填入 "登入資訊(三十分鐘即時)" 後按下 "完成" 即可。3008 
  9. 建立儀表板。
    選點 "儀表板和檢視" –> "建立儀表板..."。 3004
  10. 完成儀表板的新增。
    "ID (唯一識別碼,無空白特殊字元)" 填入 "login_realtime_information"。
    "名稱 (顯示於功能表中)" 填入 "即時登入相關資訊"。
    輸入完成後按下 "建立"。3007
  11. 開始編輯儀表板內容。
    選取 "編輯: 開"。

  12. 新增資訊面板。
    點選 "+ 新面板" 開始添加資訊到我們剛剛新增的儀表板。3010
  13. 完成即時登入資訊面板的新增。
    "標題" 填入 "登入資訊(三十分鐘即時)"。
    "搜尋命令" 選擇為 "儲存的搜尋"。
    在下拉式選單中選取 "登入資訊(三十分鐘即時)"。
    設定完成後按下 "儲存"。 3011
  14. 新增其他面板。
    我們可以新增其他資訊面板,例如之前我們分享的即時封鎖資訊。3012
  15. 完成儀表板的設定。 選取 "編輯: 關"。

  16. 產生事件。
    我們可以嘗試產生正常的登入事件或封鎖事件,而這些事件就會即時的呈現在我們剛剛設定完成的儀表板上。
    3009
透過簡單的設定,我們就可以利用 Splunk 來即時監看系統內的登入行為 (正常或非正常)。除了即時呈現之外,還可以透過 Splunk 的分析功能了解這些事件的歷史軌跡。這部份在之前的文章已經分享過,相信各位讀者並不陌生才是。

About