2009年10月27日 星期二

安裝Splunk並擷取遠端WMI簡易教學

閱讀完本文後,你將會知道如何安裝設定Splunk,並擷取遠端Server的伺服器的WMI資料,如CPUTime, Memory, LocalNetwork等等。

前言:

假設內網裡有Server A,用作Splunk CenterWindow2k3ServerIP 192.168.2.100Server B用作ClientWindow2k3ServerIP 192.168.2.101.

1. 下載並安裝SplunkA Server上:

a. 安裝成Local System User

b. 安裝完成後檢查80008089是否處於Listen狀態

c. 在瀏覽器上輸入 http://192.168.2.100:8000 是否能顯示Splunk的登入介面。

d. 輸入用戶名:Admin,密碼: changeme

e. 在應用->Search中,搜尋一下本機的Log檢查看看是否已經能找到LogIndex成資料庫。如關鍵字:LogName=Application

f. 修改SplunkAdmin密碼。在Search->管理->使用者

2. 設定擷取遠端Server BWMI資料

a. Server A上新增User,本例使用SplunkAdmin,並配置Administrators權限。設置此使用者的密碼。

b. Server B上新增User,要與點a一樣的User名字與一樣的密碼,本例使用SplunkAdmin,並配置Performance Log UsersPerformance Monitor Users權限。

c. 設置Server BWMI使用權:Computer Management->Services and Applications->WMI Control->Properties->Security,點擊Root->Security->Add User SplunkAdmin並配置Enable AccountRemote Enable權限。Advanced->點擊SplunkAdmin->Edit->設置This namespace and subnamespaces

d. DCOM權限。Control Panel->Administrative Tools->Local Security Policy->Local Policies->Security Options->DCOM:Machine Launch Restriction => Properties->Edit Security => Add User SplunkAdmin-> Remote LaunchRemote Activation打勾。

3. 設置Server A的服務使用者

a. 在「Start-> Run」執行services.msc,找出splunkd服務,右鍵打開Properties

b. Log On裡面,將Local System Account改成This Account,並輸入SplunkAdmin的用戶名和密碼。

c. 重啟splunkd服務。

4. 設定Splunk主動讀取Client端的WMI資料

a. 回到Splunkweb介面。

b. Search->管理->資料滙入->WMI匯集

c. 點擊進入你想要收集資料的類型,裡面有些預設的,如CPUTimeMemory等,並在最下方加入Server BIP位址。

d. 回到Search中,你會發現下方三欄的最右方「主機」欄裡有Server B的資料。

2009年10月16日 星期五

winmgmt 與 限制指定Port口的解決方案

標題沒下的很好。
最近接觸了一套跑WMI的軟件,幫忙管理subnet內的Server的健康情況。
這套軟件是跑WMI的,所以需要WMI Service。但當我做完所有要求的設定並成功地開始監控Client Server時,安全憂慮就開始產生了。

要一台Server A去監管另一台Server B,需要用到網路和端口,可是我一開始留意到的是,當Server A 連線到 Server B後,Server B 卻產生一個動態端口去讓Server A連接,這大大挑戰了防火牆設定的難度。

以下文章記錄了小弟研究解決方案的心路歷程(笑),難度可能是大學階段吧。

整個軟件(似乎太多數軟件)是這樣跑的。
1. A訪問B的135Port(RPC),嘗試與B連線。
2. A與B建立連線後,B的RPC找尋一個可用的端口,呼叫winmgmt聆聽,並將端口資訊傳回給A。(編按:注意! 將端口資訊傳回給A是RPC的工作,並不是winmgmt的工作,因為到現在為止A的Client只有和B的135Port連線,而端口資訊是經由這條連線回傳的,這是由擷取的封包中得到的答案)
3. A收到B的winmgmt聆聽端口後,嘗試對此端口建立連線,一旦成功則從此連線中擷取B的wmi資料。

就是以上這麼簡單的流程,但中間一旦隔一層防火牆,即時出現問題。A->B開B的135Port是肯定的了,問題是步驟2的端口,到底要開甚麼呢? 這將視乎RPC在當時找到哪一個可用的端口給winmgmt用,而預設情況下,RPC會開1025-5000中的其中一個Port,大概會從1025開始一個一個嘗試吧,如果防火牆中把1025-5000開起來,在網絡安全的角度裡似乎不太合理。

既然是RPC找的端口,當然方向是只好從RPC著手。在上述的理據中,很容易讓人聯想到,假如能限制RPC開放端口的範圍,問題就好解決了。當我知道這事實之後,前途一片光明,因為要設定RPC的方法太好找了。

解決:如果你不想手動地搞到註冊表,你需要一件工具去輔助你。
上述網址有個rktool.exe,是給Window Server 2003用的,裡面有很多工具,其中一件叫rpccfg.exe的工具,可以讓你設定RPC。

如果你想讓winmgmt落在一些不常用的端口中,如 60000-60030,只開30個端口,則只要在command prompt執行

rpccfg.exe -pe 60000-60030 -d 0

重新啟動電腦後,所有經由RPC啟動的Service都會落在上述的範圍中。
這方法很簡單,亦稍為對防火牆設定有重要幫助,但我還想找出方法去分派一個固定端口給winmgmt使用的方案。

參考資訊:


Google