在前幾篇的分享當中,我們陸續利用了 Splunk 來即時呈現與分析系統登入與封鎖 (fail2ban) 的相關資訊。雖然這些資訊可以幫助我們快速掌握環境的狀況,但是仍有一些不足的地方。其中一個令人困擾的地方,就是很多事件發生的地點都是以 IP 位址來呈現,例如被封鎖的 IP 位址。在大多時候,看到 125.64.43.102 這樣的數據對我們來說並沒有太大的意義,而其中一種常見的轉換呈現方式,就是列出這個 IP 位址的所在地。
Splunk 可以透過應用程式的擴充來達到轉換 IP 位址為實體位置的功能,其中一個是 Google Maps 這個應用程式。在今天的分享中,我們就來按部就班將 fail2ban 的被封鎖 IP 位址資訊轉換成實體位置,並整合至我們之前建立的儀表板之中。
在開始今天的操作之前,我們至少必須有一個完整運作的 Indexer,並能夠蒐集 fail2ban 的相關訊息。如果你還沒有這樣的環境,請先參考這篇文章吧。
接下來同樣讓我們一步步完成今天的目標囉:
- 進入應用程式管理介面。
"管理員" –> "應用程式" –> "應用程式"。 - 瀏覽線上應用程式。
點選 "線上尋找更多應用程式"。 - 安裝 Google Maps 應用程式。
找到 Google Maps 應用程式後點選 "安裝 Free 版本"。 - 開始安裝。
點選 "安裝"。
- 等待安裝完畢。
- 重新啟動。
安裝成功後必須重新啟動 Splunk 才能正常使用 Google Maps,點選 "重新啟動 Splunk"。 - 確認啟動。
點選 "確定"。
- 等待重新啟動完成。
- 完成重新啟動。
點選 "確定"。
- 重新登入 Splunk。
輸入帳號/密碼後,點選 "登入"。 - 搜尋資料。
"應用程式" –> "Search"。 - 測試 Google Maps 於搜尋功能下的作用。
輸入搜尋指令
眼尖的讀者可以發現我們將之前出現過的指令加上了 | geoip client_ip 這個命令。sourcetype=fail2ban Ban | rex field=_raw "Ban (?<client_ip>.*)" | stats count BY client_ip | geoip client_ip
透過這個命令的作用,此時顯示結果多了許多關於地理位置的資訊,包含國家、城市、經緯度等等。
- Google Maps 應用程式。
Google Maps 本身就是一個圖型化的應用,與 Splunk 的整合當然也不是僅僅多了一些文字描述而已。Google Maps 應用程式提供了圖型化的呈現方式。
選取 "應用程式" –> "Google Maps"。
- 圖型化顯示。
我們輸入與之前相同的指令
此時呈現的方式變成了 Google Maps,圖中的圓圈與數字分別代表 client_ip 的所在地與數量。sourcetype=fail2ban Ban | rex field=_raw "Ban (?<client_ip>.*)" | stats count BY client_ip | geoip client_ip
- 整合 Google Maps 至儀表板中。
前面針對 Google Maps 的操作雖然簡單易用,但是如果能夠整合至我們之前所建立的儀表板之中,就可以讓我們進一步加強對環境狀態的掌握。因此我們先回到搜尋介面。
選取 "應用程式" –> "Search"。
- 選取我們之前建立的儀表板。
我之前建立的儀表板名稱為 "fail2ban 歷史統計",此時需點選
"儀表板和檢視" –> "fail2ban 歷史統計"。
- 顯示儀表板的 XML 設定代碼。
想要將 Google Maps 加入儀表板之中,必須使用被稱為 Advanced XML 的設定方式,採用預設的設定方式是無法支援 Google Maps 的。雖然使用 Advanced XML 的設定方式可以讓我們引用更多方便的功能,但是卻也失去了圖型化設定的能力,所有的設定都必須透過直接修改 XML 來達成。而且這樣的轉換是單方向的,也就是我們無法從 Advanced XML 設定方式轉回一般的設定方式。
在儀表板網址的後方加上 ?showsource=1 ,其中最後的輸入方塊 XML source 就是我們所需要的資訊。將文字區塊內的 XML 字串複製出來。
- 回到儀表板並開始設定。
將儀表板網址後面的 ?showsource=1 拿掉,我們回到原先的儀表板畫面。
選取"編輯" –> "開"。
- 直接編輯 XML 檔。
點選 "編輯 XML"。
- 這是預設的 XML 設定方式。
- 貼上 XML 字串。
將剛剛複製好的 XML 字串原封不動的貼至輸入方塊當中,並覆蓋掉原先的 XML 字串。
- 貼上 Google Maps 的 XML 設定字串。
在倒數第二行插上下列 XML 設定字串
輸入完成後點選 "儲存"。<module name="HiddenSearch" layoutPanel="panel_row5_col1" autoRun="true"> <param name="search">sourcetype=fail2ban Ban | rex field=_raw "Ban (?<client_ip>.*)" | stats count BY client_ip | geoip client_ip</param> <param name="earliest">0</param> <module name="GoogleMaps"> <param name="height">500px</param> <param name="mapType">roadmap</param> <param name="scrollwheel">on</param> </module> </module>
前述的 XML 設定字串有兩個需要特別注意的地方,其中 layoutPanel="panel_row5_col1" 的 5 與 1 分別代表第 5 列與第 1 行。你可以透過修改這個參數來調整 Google Maps 的所在位置。另外一個需要注意的地方是 search 這個參數其實就是我們之前所使用的查詢指令,不過 < 與 > 被分別用 < 與 &tg; 所取代了,原因是 < 與 > 對 XML 來說是特殊字元,因此無法直接使用。
- 儀表板與 Google Maps 的結合。
我們可以清楚看到儀表板之中出現了 Google Maps 的資訊,上面呈現了各個地區被封鎖 IP 的數量。
- 發揮你的想像力。
Google Maps 的應用當然不僅於此,一切都將取決於你的應用與想像力。例如我將之前設定的系統即時登入資訊與 Google Maps 做一結合,只要有任何登入系統的行為發生,我就可以馬上知道登入來自何方。這樣的資訊是不是更加清楚,看起來也更專業了呢?
沒有留言:
張貼留言