搜尋此網誌

2012年7月16日 星期一

[工具介紹] 利用 Splunk 收集與分析 fail2ban 的相關數據 (上)


logo_splunk_black_mini在之前的文章中,我提到可以利用 fail2ban 這個套件來避免系統遭受暴力嘗試登入的攻擊。只要設定無誤,當你佈署 fail2ban 一段時間之後就會發現原來真的有這麼多人很"無聊",沒事就到處敲門,想要當個便宜的駭客。對一般的管理者而言,其實這樣做也就夠了。但是如果你是一個好奇的管理員,或者你同時管理了許多的系統,你可能就需要更多的資訊來幫助你做好管理的工作。我們可以透過日誌管理系統或是功能更為強大的知識管理系統來收集並分析相關數據,而我今天要跟各位分享的就是這麼一份收集與分析資訊的好工具 – Splunk。
Splunk 簡單來說,就是幫助使用者收集各式各樣的 IT 相關資料,並加以彙整後從中取得有用的資訊。別看說明這麼簡單就以為 Splunk 只是個小玩意,Splunk 本身可是一個很複雜的系統。除了強大的分析能力與眾多的外掛模組,Splunk 並支援相當彈性的佈署方式,以因應數量龐大的 IT 資料。這麼好的工具,當然是所費不貲,好在 Splunk 有提供免費使用的版權,比較大的限制就是每天只能收集 500MB 的資料。別看 500 MB 數字很大,對於多系統的環境,500 MB 實在是不夠塞牙縫。不過如果是有特定的目的,500 MB 還是有可能給予我們不少的幫助。除了 500 MB 的限制之外,免費版權的 Splunk 也不支援認證功能。因此想要使用的人,可得好好限制可以存取 Splunk 介面 (Web 形式,預設採用 TCP Port 8000) 的 IP 了,免得變成 IT 資料全都露。
在接下來的兩篇文章中,我會跟各位分享如何將 fail2ban 的資訊整合到 Splunk 當中,以提供更具價值的即時資訊與歷史分析能力。在第一篇文章中,我會採用較為簡單的單機作業模式。而第二篇文章則著重在同時管理多個系統的佈署方式以及報表功能。
廢話不多說,同樣來一步步完成今天的任務吧。今天我準備的環境是 CentOS 6.2 64 位元的版本,步驟完成後我們就可以利用 Splunk 來找出所有過去曾被本系統上的 fail2ban 套件所封鎖的 IP 了。
  1. 下載 Splunk 安裝程式。
    Splunk 提供多種安裝格式,其中包含 RPM 的套件,所以我們直接選擇 64 位元的 RPM 檔案即可。下載網址是
    http://www.splunk.com/download
  2. 安裝 RPM 套件。
    指令是
    rpm –ivh  splunk-4.3.3-128297-linux-2.6-x86_64.rpm
    請把 splunk-4.3.3-128297-linux-2.6-x86_64.rpm 替換成你實際下載的檔案名稱。預設的安裝路徑為 /opt/splunk。
  3. 設定防火牆。
    通常我們會透過瀏覽器來操作稱之為 Splunk Web 的使用者介面,而 Splunk Web 預設使用 TCP Port 8000。如果我們想要從遠端操作系統上的 Splunk Web,就必須設定防火牆並取消相關的存取限制。
  4. 啟動 Splunk。
    指令為
    /opt/splunk/bin/splunk start
  5. 設定 splunk 開機後自動啟動。
    修改 /etc/rc.local,加上下列設定:
    /opt/splunk/bin/splunk start
  6. 連結 Splunk Web 並登入 Splunk。
    開啟瀏覽器並連結 Splunk Web,Splunk Web 預設透過 TCP Port 8000 提供服務。雖然免費授權的 Splunk 不支援帳號認證的功能,但是 Splunk 預設提供 60 天的試用授權,因此在這段期間還是必須使用帳號/密碼進行登入。預設的帳號/密碼是 admin/changeme,登入後請記得馬上改掉預設的密碼。
  7. 安裝 fail2ban。
    如果你的系統還沒有安裝 fail2ban 這個套件,請先參考我之前的另外一篇文章並完成 fail2ban 的安裝。
  8. 修改 fail2ban 的設定。
    在預設的情況下,fail2ban 會將相關訊息透過 syslog 機制寫入系統的日誌檔之中。以 CentOS 的環境來說,這些訊息會被寫入 /var/log/messages。為了讓 Splunk 能夠抓取到 fail2ban 的相關訊息,我們有下列幾種選擇:
    1. 修改 syslog 的設定,將 fail2ban 的相關訊息寫入獨立的日誌檔。
    2. 設定 Splunk 直接抓取 /var/log/messages 內的資訊,並過濾掉不相關的訊息。
    3. 直接設定 fail2ban 將相關訊息寫入獨立的日誌檔。
    在此我採用第 3 個做法,在設定檔 /etc/fail2ban/fail2ban.local 內加入下列設定
    [Definition]
    logtarget = /var/log/fail2ban.log
  9. 重新啟動 fail2ban。
    指令是
    service fail2ban restart
  10. 設定 Splunk 的資料來源。
    接下來的幾個步驟,就是這篇分享的重點,也就是設定 Splunk 取得並分析 fail2ban 的相關訊息。首先點選 "管理員" –> "資料" –> "資料輸入"。0001

  11. 點選 "檔案與目錄"。
    0002

  12. 點選 "新增"。
    0003

  13. 選取 "Skip preview" 後點選 "Continue"。0004

  14. 依據完成下列設定。
    "指令來源" 選取 "從此 Splunk 執行個體可存取的檔案或目錄持續檢索資料"。
    "您資料的完整路性" 設定為 "/var/log/fail2ban.log"。
    勾選 "更多設定"。
    "設定來源類型" 選取為 "手動設定"。
    "來源類型" 設定為 "fail2ban"。
    設定完成後點選 "儲存"。0005

  15. 尋找另外一台機器,並嘗試錯誤登入這個系統一直到被 fail2ban 封鎖為止。

  16. 選取右上角選單的 "應用程式" –> "Search"。
    在"搜尋"欄位輸入下列字串:
    sourcetype="fail2ban"
    按下 Enter 後就可以看到剛剛 fail2ban 封鎖的相關訊息了。 0006
透過幾個簡單的設定,我們就可以在 Splunk Web 中看到 fail2ban 套件運作的所有相關訊息。這樣的用途看起來確實還不夠有趣,也尚未發揮到任何 Splunk 的特色。別急,下一篇的分享絕對會讓你對 Splunk 有完全不一樣的看法。

About