Windows XP是微軟融合了Win 2K/NT之安全、堅固與Win Me/98之易用、靈活的第一代操作系統。為了提高安全性和易用性,Win XP不僅改進了許多原有的GUI工具和命令行工具,同時還增加了一些新的工具,而且這些工具不再通過Resource Kit(資源工具包)發布,而是直接把最有用的工具作為Support Tools包裝到了OS軟件包,放在安裝CD的Support\Tools目錄下。如果你打算深入、全面地管理XP,這些工具能夠幫你完成日常的監視、管理任務,加固Win XP的安全。 一、獲得系統信息 知己知彼,百戰不殆,這句話表明了要想百戰不殆,一個重要的前提就是“知己”。以前,你需要運行一大堆工具才能獲知操作系統已經安裝了哪些Service Pack、Hotfix以及系統的網絡配置。Win XP新增了一個命令行工具Systeminfo(Systeminfo.exe),幫你輕而易舉地完成這些工作。Systeminfo通過WMI(Windows管理規范)API列舉出系統配置信息,輸出信息按照OS、硬件平台、安裝配置、已安裝的補丁分門別類,一目了然。 圖一 圖一是不帶任何命令行參數運行Systeminfo的結果片斷,如果要診斷遠程機器,只要加上一個“/s ”參數。另外,,Systeminfo還允許通過“/u ”和“/p ”參數指定運行Systeminfo的用戶身份,如果只提供用戶名字但省略密碼,Systeminfo將提示輸入密碼,輸入密碼時屏幕上不會有回顯——如果旁邊有人看著你運行Systeminfo,這個功能讓你無所顧忌。 另一個檢測系統配置的實用工具是Spcheck(Spcheck.exe),用於檢測Service Pack級的組件信息,以前這個工具只通過 Product Support Service(PSS)提供,但現在加入到了Support Tools。Spcheck要用到一個數據文件spcheck.ini,這個文件包含了各個網絡組件的每一個文件的信息,鑒於操作系統需要不斷更新,所以spcheck.ini不隨XP一起提供,而是通過網絡發布,?scid=kb;en-us;q279631頁面提供了針對Win XP/2K/NT 4和Exchange Server 5.5等的各個spcheck.ini版本的鏈接。 圖二 下載spcheck.ini的XP版本,把它保存到安裝Support Tools的目錄,解開壓縮,然後運行spcheck。spcheck將生成報告文件spcheck.rpt——其實這是一個文本文件,可以用記事本打開,圖二顯示了spcheck.rpt文件的一個片斷。 二、監視系統 說到監視系統狀態,人們最熟知的就是按Ctrl Alt Del彈出的“任務管理器”。不過任務管理器的功能有限,如果要了解哪個進程啟動了子進程,或者有哪些進程服務在運行,你可能會想到tlist.exe命令行工具。 不過XP沒有提供tlist.exe,代之以另一個工具Tasklist(Tasklist.exe)。Tasklist是針對XP多用戶環境開發的,能夠報告每一個正在運行進程的會話信息,但和tlist.exe不同的是,Tasklist不會列出父進程的每一個子進程(但願以後的版本會增加這個非常實用的功能)。Tasklist能夠查詢遠程系統,用/v參數可得到詳細信息(包括窗口標題、用戶名字)。如圖三所示,用/m參數可以顯示出裝入某個DLL的進程——如果你懷疑某個DLL實際上是一個木馬程序,這一功能非常有用。 圖三 當網絡防火牆/路由器的通信指示燈開始狂閃,在以前的Windows上,我用Netstat工具(netstat.exe)查找哪些TCP或UDP端點正在使用我的系統,然後大致地判斷應該是哪個或哪些進程正在發送或接收數據,但如果要精確地判斷端點和進程的從屬關系就必須使用第三方工具。 在XP中,Netstat命令的功能已經改進,能夠顯示出哪些進程正在使用端點。只要加上/o參數,Netstat會在端點之後顯示出進程ID,如圖四所示。如果使用/a參數,Netstat能夠顯示出所有端點——不管是活動狀態的,還是監聽狀態的。 圖四 有時監視每一個進程打開了哪些文件也是非常有用的。在以前的Windows中,我們可以安裝資源工具包的oh.exe。但在XP中,雖然Support Tools的幫助文件提到了oh.exe,安裝好的Support Tools卻不帶oh.exe。但是,XP提供了一個新的Openfiles命令行工具(Openfiles.exe),它能夠報告進程打開的各個文件。和oh.exe相似,Openfiles也要求打開系統內核監視,而這會消耗一些內存,降低文件、打印、郵件、數據庫等操作的性能。打開系統監視的命令是openfiles /local on,它會啟用系統全局標志“維護對象列表”,需要重新啟動系統才能生效(你可以執行gflags.exe查看Openfiles命令設置了哪些標志)。 重新啟動系統後,不帶參數執行Openfiles就可以看到一個進程清單以及各個進程打開的文件(包括共享文件),圖五就是Openfiles執行結果的一個片斷。如果要查看哪個用戶正在運行打開文件的進程,執行openfiles /query /v,如圖六。 圖五 圖六 Openfiles還有其他一些命令行參數,主要用來控制輸出格式,另外還可以用Openfiles來監視遠程系統打開的文件,前提是遠程系統必須啟用監視功能。 就監視系統狀態而言,事件日志屬於最難的部分。在運行了大量應用軟件或者啟用了安全審計的系統上,審計/事件信息可能很快達到數兆之多,要在如此龐大的事件信息庫中尋找特定的事件紀錄是相當困難的——至少是相當耗時的。XP新增了一個Eventtriggers工具(eventtriggers.exe),能夠在事件日志中發生任意事件時執行指定的命令。假設當有人試圖登錄系統但驗證身份失敗時,我們想要執行 C:\Admin\InvalidLogon.cmd腳本,可設置如下:eventtriggers /create /l security /eid 529 /tr“登錄失敗”/tk c:\admin\InvalidLogon.cmd /ru:administrator。
InvalidLogon.cmd腳本將在本地系統管理員的身份下運行。系統將要求為/ru參數指定的用戶輸入密碼。如果不指定運行InvalidLogon.cmd腳本的用戶,系統默認使用“Local System”,但使用Local System可能導致某些命令無法執行,所以本人的建議是最好指定一個具有適當權限的用戶。經試驗發現,從事件出現到觸發/運行指定的命令之間會有約60秒的延遲。就象許多其他XP新增的工具一樣,eventtriggers也能夠操作遠程的XP系統。 三、監視網絡 如果你曾經排解過服務器/客戶機之間的通信問題,可能已經熟悉網絡監視工具Netmon.exe,不過這個工具是隨著服務器操作系統提供的。XP的Support Tools有一個Netcap工具(netcap.exe),它和Netmon.exe一樣也能夠捕獲網絡通信。第一次運行Netcap時它會提示說正在安裝網絡監視驅動程序。Netcap能夠讀取Netmon 2.0以上版本創建的篩選文件,Netmon也能夠讀取Netcap捕獲的數據。 在網絡上運行IP Security(IPSec)的用戶都知道,Ipsecmon是一個監視IPSec組件的實用工具。奇怪的是,XP並沒有提供這個工具,不過不必擔心,在XP中Ipsecmon已被一個稱為“IP安全監視器”的MMC管理單元替代,後者的監視功能進一步加強,而且兼具監視本地/遠程系統的能力。 選擇菜單“文件”→“添加/刪除管理單元”,點擊“添加”打開“添加獨立管理單元”對話框,從管理單元清單中找到並選中“IP安全監視器”,點擊“添加”,再在“添加/刪除管理單元”對話框中點擊“確定”返回MMC控制台,如圖七。本地機器的節點包含兩個子節點:主模式,快速模式。兩種模式分別對應IPSec協商過程的第一、二兩個階段。 圖七 四、管理系統 在以前的Windows中,使用Support Tools中的kill.exe工具可以關閉一個進程。XP把kill.exe換成了taskkill.exe,增加了關閉遠程系統上進程的能力,能夠根據進程名稱、窗口標題關閉進程,能夠關閉子進程,甚至能夠根據一組指定的條件關閉一系列進程,允許定義的條件包括:進程狀態,內存使用情況,CPU使用情況,裝入的DLL,用戶名字,服務名字。 從最早的NT 3.1開始,Windows就能夠注銷連接到共享資源的用戶或關閉用戶打開的文件。在XP中,你可以要求操作系統關閉本地或遠程用戶打開的文件。例如,如果要關閉文件,只要執行Openfiles命令時加上/disconnect參數。就象tasklist.exe一樣,Openfiles允許指定用戶名字、文件名字和打開模式等條件。 利用Logoff命令行工具(logoff.exe)能夠強行注銷XP上的用戶。雖然早期的Windows版本也提供了Logoff命令,但它們只能注銷遠程登錄到服務器的用戶;在XP中,Logoff命令能夠注銷控制台用戶了。 總地看來,本文介紹的安全管理工具是人們長久以來盼望Windows提供的工具。雖然說操作系統的易用性在不斷提高,但從另一方面理解,操作系統正變得越來越復雜——當你要穿過易用的界面深入掌握、控制Windows時,不得不運用大量的工具,即使你是一個普通的愛好者而不是專職管理員也一樣。本文介紹的許多工具是從原來的資源工具包轉移到安裝操作系統CD,這本身就說明現在該是我們掌握這些工具的時候了。