Windows 的修正檔和安全 現在的操作系統和應用軟體越做越大,不可避免地會出現各種問題。也許是程序設計上的小Bug、也許是與其它軟硬體在使用 上產生的相容性問題、更多的情況則是使用者疏忽造成的安全隱患,這些問題時刻在威脅著我們的系統和資料安全。更重要的 是,已經有越來越多的人安裝了寬帶,有了基本上固定的IP地址,還時常掛在網上。這樣的電腦很容易成為被攻擊的對象。因 此,電腦的安全使用問題已經越來越突出地擺到了我們的面前。如果你也想要消除電腦中安全方面的薄弱環節,就仔細閱讀本 文吧。 操作系統的修正檔下載以及安裝 讓我們先從最常用的軟件,操作系統說起。 使用最普及的操作系統無疑就是微軟的Windows,Windows 98、Windows 2000、Windows XP,可以毫不誇張地說,只要有電腦 的地方,就能見到Windows的身影。雖然Windows操作系統被廣泛採用,不過這並不表示它的穩定性和可靠性最好。相反,早 期的Windows是相當不可靠的,大家廣泛採用它只是因為它的易用性和相容性。不過現在好多了,隨著Windows 2000和Windows XP的廣泛應用,Windows產品的穩定性和可靠性已經不再是那麼突出的問題。相反,現在人們關注最多的,則是Windows的安 全性! 既然是全世界應用最廣泛的軟件產品,研究它的人自然不會少。進而Windows系統上被發現的漏洞和缺陷似乎也特別的多,並 且還有不少的人以製造Windows上傳播的病毒和木馬為樂。我們經常能夠看到提醒大家Windows產品新發現某個漏洞之類的文 章。所以在發現漏洞後的第一時間給我們的系統打修正檔已經成為了Windows用戶的一個必修課。 這裡首先說說Windows操作系統的修正檔,我們主要以Windows 2000/XP的修正檔加以瞭解。一般需要安裝的修正檔有兩種, Hotfix和Service Pack,Hotfix是針對某一具體問題而發佈的專門解決這個問題的小程序(也可以叫做修復程序)。微軟一般會把 在自己的軟件產品中發現的重大問題以安全公告(Security bulletin)的形式通知給大家,這些公告都有一個唯一的編號,即 MS**-***。例如MS02-063,表示微軟公司在2002年發佈的第63個安全公告。而這些公告所涉及的問題還有另外一個編號: Q******。MS02-063安全公告的編號就是Q 329834,這個號碼表明了該問題在微軟知識庫(Knowledge Base)中的編號,只要記 住這個編號,隨時都可以查找到相應的文章和解決方案。因此,每個安全公告所發佈的修正檔也就有了相應的編號,例如 Q329834針對Windows XP系統的修正檔名稱就是Q329834_WXP_SP2_x86_ENU.exe ,這表示這個修正檔解決的問題在知識庫文章 Q329834中討論過,適用於Windows XP,即將被集成到Windows XP SP2中,並且是英文版。 上面我們說到了SP2,SP的全稱是Service Pack,即修正檔包。由於微軟頻繁地發佈各種Hotfix修正檔,對於一般的系統管理員, 要觀察自己的電腦是否安裝了某個Hotfix修正檔就成了一件很麻煩的事情。並且,依次安裝各種Hotfix修正檔在操作上也非常煩 瑣和辛苦。微軟為了解決這個問題就開始發佈Service Pack修正檔。這種修正檔一般在操作系統正式上市一段時間後發佈,包含 了自發佈之日全部的Hotfix修正檔。只要安裝了Service Pack,在這個Service Pack發佈之前的所有Hotfix修正檔就都不用再安裝 了。只有Windows NT/2000/XP才有Service Pack,Windows NT的Service Pack最新版本是SP6a,適用於Windows NT的各種版本; Windows 2000的是SP3,適用於Windows 2000 Professional/Server/Advanced Server;Windows XP的是SP1,適用於Windows XP Professional/Home Edition。Service Pack修正檔不是累加的,也就是說,你對於一個新安裝的操作系統,你不必依次安裝SP1, SP2,SP3,只要裝了最新的Service Pack就可以了。 要觀察你的系統中安裝了哪些Hotfix修正檔,可以打開控制台-增加或刪除程式,所有安裝過的熱修復程序都會顯示在這裡。 而Service Pack,則可以用滑鼠右鍵點擊「我的電腦」圖示,並選擇「屬性」,然後在「一般」選擇項下觀察。 通常我們給Windows操作系統打修正檔,最常用的方法就是通過Windows Update網站。如果要訪問這個網站,可以直接點擊開 始-Windows Update(對於Windows 98和Windows 2000),或者開始-所有程序-Windows Update(相對於Windows XP)。 你也可以直接在瀏覽器的地址欄中輸入http://windowsupdate.microsoft.com 來訪問。 在這裡,網頁可以自動掃瞄你的系統,判斷你需要安裝哪些修正檔,然後協助你安裝。在第一次訪問Windows Update網站的時 候,會相繼出現兩個如同圖三的安全設置警告,因為網頁需要在你的電腦上安裝一些控件,這些控件被用來掃瞄你的系統。所 以如果要進行Windows Update,就必須要點擊「是」,安裝這個控件。當然,你也可以選中「總是信任來自Microsoft Corporate 的內容」,這樣,以後你訪問微軟的網站,並且需要下載其它的控件或者程序的時候,瀏覽器就不會詢問你,而是直接下載和 安裝了。 控件安裝成功後,你可以看到圖四的畫面,點擊「掃瞄以尋找更新」,程序就會自動開始掃瞄你的系統。在掃瞄完成後,你所 有可用的更新都將會顯示在左側的列表中,你可以有選擇的安裝,或者一次把他們全部裝上。修正檔安裝完成後你需要重啟動 一下電腦,至此,Windows Update的操作全部完成,你的Windows相對安全多了! 不過凡事都有例外,有些修正檔程序可能會和你正在使用的什麼軟件有衝突,如果在安裝某個修正檔後系統不穩定或者工作不 正常,你通過在啟動電腦的時候按F8,並選擇進入安全模式,然後卸載那個修正檔。 在通過Windows Update安裝了Hotfix修正檔程序後,你可能會在Windows目錄下發現一些奇怪的資料夾,這些資料夾的名稱一般 是「$NtUninstallQ******$」,在這個資料夾中儲存的就是相應修正檔(在MS 的知識庫文章Q******中提出)的卸載程序,如果 你要卸載一個Hotfix修正檔,就必須保留有相應的卸載文件。 而如果你的硬碟空間緊張,並且不準備卸載任何修正檔,也可以直接刪除這些資料夾。 通過Windows Update,也可以安裝到最新的Service Pack。 你也許就會有這樣的疑問了:如果我已經通過Windows Update安裝了所有的Hotfix修正檔,那麼我還需要Service Pack嗎? 答案是肯定的!如果你很在意系統安全,那麼就一定要裝Service Pack。儘管你可以通過Windows Update安裝修正檔,但是你能 保證所有系統漏洞的修正檔程序都會出現在Windows Update站點中嗎? 訂閱微軟安全通告的人經常會收到一些通知,告訴你某個Windows系統又發現了什麼漏洞,以及怎樣修補這個漏洞。修補漏洞 的方法一般是以修正檔的形式提供的,當你興沖沖地下載了安全通告中所提供的修正檔之後,可能會失望地發現,這些修正檔 只能在英文版的Windows上安裝,並且並沒有提供其它語種的下載。 如果你用的不是英文版操作系統(這也是建議對安全要求高的人用英文版操作系統的原因,因為總能在第一時間安裝新發佈的 修正檔程序),那麼只好等待了,這些修正檔會集成到以後發佈的Service Pack中去,並且Service Pack會提供各種語言的版本。 因此,Service Pack能帶給你更多的安全保障,這是Hotfix修正檔程序所不能替代的。 該說怎麼安裝Service Pack了! Service Pack有兩種安裝方式: 本地安裝和網路安裝。本地安裝要求你下載完整的安裝包,然後執行安裝程序;網路安裝則是下載並執行網路安裝程序,然後 程序自動從網路上下載所有需要的安裝文件。 這兩種方法各有利弊:本地安裝需要一次下載一個較大的文件,一般都在100MB以上,不過如果以後要重裝系統,這個安裝文 件還可以再次使用,不用重複下載。而網路安裝的下載量比較小,安裝程序會決定你所需要的文件並且有選擇地下載,這樣安 裝一次可能會下載少於50MB的文件,因此這種方式更加適合寬帶用戶。 不過如果你即沒有寬帶,也不想用56K的數據機下載100MB的完整安裝文件,則可以在Service Pack發行後關注一下那些送光碟 的IT雜誌,這些雜誌一般都會收錄最新的Service Pack完整安裝文件。 以Windows XP為例,在安裝了Service Pack 1的Windows XP系統中,你可能會經常遇到這樣的問題:在工作中,或者你在命令行 下執行sfc/scannow檢查系統檔案的時候,系統會需要你插入Windows XP SP1光碟。 可是你沒有所謂的Windows XP SP1光碟,這是什麼原因呢? 就是因為你錯誤的刪除了一個資料夾。在安裝Service Pack後,系統會自動把一些安裝文件備份儲存,這些文件被儲存在 Windows目錄下一個名為ServicePackFiles的資料夾中,這個資料夾很大,一般有200M以上,很多人認為沒什麼用處,就刪除 了。其實這樣做是不可取的,因為Windows 2000/XP中有一個文件保護機制,會隨時監視受保護的系統檔案,一旦這些文件丟 失或者被不正確的版本所替換,就可以立刻從備份的文件中恢復出來,而在安裝了Service Pack後,所有Service Pack中新版本的 文件都備份儲存在這個ServicePackFiles資料夾內,所以如果你刪除了這個資料夾,一旦系統檔案被替換,文件保護機制就會要 求你放入Windows XP SP1光碟,而你並沒有這種光碟,被替換的系統檔案也就不能被恢復了,這很可能會造成系統的不穩定。 所以一般情況下,這個資料夾最好不要刪除。 如何儲存和再次安裝已經下載的修正檔 很多人用數據機去上網,每次重裝系統後Update都要花不少的時間和精力,於是就有人在考慮怎樣把從Windows Update下載的 文件儲存起來以便以後新裝了系統可以直接執行。不過遺憾的是,通過Windows Update下載的所有修正檔程序在安裝成功後都 會被自動刪除。好在微軟已經為我們提供了一個很好的方法。 執行瀏覽器,並打開http://windowsupdate.microsoft.com ,在左側的Windows Update面板中點擊「個性化Windows Update」,選中 右側的「在相關主題下顯示到Windows Update目錄的連接」,然後儲存設置。 現在再看看左側的面板,你可以看見,在相關主題列表下增加了一個「Windows Update目錄」的連接,點擊進入。之後點擊右 側的「查找Microsoft Windows操作系統的更新」並選擇你要查找的操作系統和語種。 這裡包括了所有主流的微軟操作系統以及各種不同的語種,選擇好之後點擊「搜尋」,所有可下載的更新就全部找到了。 這些更新不用你親自一個一個地下載,只要分別點擊,加入到下載籃子,就可以一次全部下載回來。 遺憾的是在這裡不能通過Flashget之類的下載工具下載,你只好祈禱在下載的過程中千萬不要斷線了。 下載回來的修正檔全部是可執行文件(假設他們分別為fix1.exe,fix2.exe ……),按照一般的方法,你可能就直接一個一個地 開始安裝,其實這樣是很麻煩的,不僅要依次執行多個安裝程序,並且每個修正檔安裝完成後都要求重新啟動。這樣的安裝簡 直就是一場惡夢。你可能會想,只要分別安裝每個修正檔,最後統一重啟動一下就行了,不過這樣是很不可取的。 如果要替換的文件被系統佔用,那麼新文件將被另外存放並被記錄在註冊表的未決文件重命名隊列(Pending File Rename queue)鍵值中,等下一次重新啟動電腦後再執行替換操作。根據這個特點,如果一次安裝多個Hotfix修正檔而不在每個安裝後 重新啟動電腦,就會存在一定的問題。以下例子就可以說明: 假設我們要安裝Hotfix 1 和Hotfix 2 ,每次安裝後不重新啟動電腦。 2個Hotfix中都包含文件X,Hotfix 1的文件X版本為3.0,Hotfix 2的文件X版本為2.0,電腦中的文件X當前版本為1.0。 首先安裝Hotfix 1,由於電腦中的文件X被佔用,Hotfix 1的文件X被記錄在註冊表的未決文件重命名隊列鍵值中。 然後安裝Hotfix 2,結果是Hotfix 2的文件X被記錄在註冊表的未決文件重命名隊列鍵值中。 最後重新啟動電腦,因為Hotfix 2最後安裝,它的文件X版本2最終替換替換了電腦中的文件X版本1。顯然,這不是我們所期望 的結果。 好在微軟考慮的是很週到的,他為我們提供了一個免費的小工具:Qchain.exe,利用它我們可以一次安裝多個修正檔程序,並且 也不會在每個安裝完成之後都要求重啟動。 你可以直接按照一般方法先執行每個Hotfix程序,不過為了避免安裝後的重啟動,可以在命令行下執行「fix1.exe -z」,其中「- z」這個參數可以在安裝結束後避免重啟動電腦。除了「-z」,你還可以試試「-q」,用這個參數可以不出現詳細的安裝過程, 做到全自動。在所有的Hotfix修正檔都安裝完成後,再次從命令行模式下執行QChain.exe,它將檢查註冊表的未決文件重命名隊 列鍵值,對Hotfix 1和Hotfix 2等的安裝文件進行合適的連接、取捨等操作,最終保證被修改文件是最新版本。 如果你嫌這樣的操作太麻煩,還可以試試用腳本,使得全部的安裝更加自動化。腳本的使用方法是這樣的,把下列文字: @echo off setlocal set PATHTOFIXES=c:\update %PATHTOFIXES%\fix1.exe -z -q %PATHTOFIXES%\fix2.exe -z -q %PATHTOFIXES%\fix3.exe -z -q %PATHTOFIXES%\qchain.exe 輸入到記事本中(c:\update為本例中儲存所有Hotfix文件和Qchain.exe的位置,你需要按照你自己的情況更改),然後儲存成一 個bat文件,雙擊後就可以自動執行,而你只需要在全部的修正檔都安裝完成後重啟動電腦就可以了。而對於每個修正檔所支持 的安裝參數,你可以通過執行fix1.exe /?獲得。 用qchain.exe雖然很方便,不過可能會在有些情況下發生一些問題,就是,一旦修正檔程序中包含HKEY_LOCAL_MACHINE \System\CurrentControlSet\Control\Session Manager\KnownDLLs 這個鍵值所示的二進制文件時就會發生錯誤,因為這裡的文件都是 在啟動時被裝載到記憶體的,所以遇到這種情況,你就只能老老實實地執行安裝程序,然後重啟動了。 微軟安全公告的訂閱 你肯定也想在第一時間得知你所用的Windows或者其它微軟的軟件又有什麼新的安全漏洞被發現吧,如果你不願每天都到微軟 的網站轉轉,也可以訂閱微軟的安全公告。這個服務是免費的,只要你提交你的電子郵件地址,那麼一旦微軟的產品發現什麼 漏洞或者新出了修正檔程序,就會立刻收到微軟發給你的提醒郵件。 立刻訪問http://register.microsoft.com/regsys/pic.asp ,這裡需要使用你的Passport登錄。Passport是微軟在大力推廣的一項身份認證策 略,只要註冊了Passport,你就可以一次登錄然後使用微軟或者其它合作者 提供的所有資源,包括網站訪問,MSN Messenger還 有MSN Explorer等。如果你還沒有Passport,也可以在這裡申請一個。有一個問題需要注意,在你第一次註冊Passport的時候,最 好在選擇首選語言時選擇「英語(美國)」,這樣你才能夠訂閱大量最新的英文信息(中文的信息是很少的),包括我們準備 訂閱的安全通告。如果你已經有了net.Passport,也可以在設置中重新指定首選語言。 登錄成功後可以看見的界面,直接點擊Newsletters Subscribe/Unsubscribe,然後在新的頁面中選中Microsoft Security Notification Service,之後再點擊Update按鈕儲存設置。以後如果有新的安全公告,你登錄net.Passport用的信箱就會收到微軟的郵件提醒。 這份通知是英文的,不過不用擔心看不懂,我們需要的只是其中的幾個最關鍵的部分,就是開頭處的Software,Impact和Max Risk。其中Software告訴你是在哪個微軟產品上發現了漏洞;Impact是漏洞的大概描述;Max Risk則是漏洞的風險等級。只要在 Software中沒有提到你所使用的軟體,那麼你的系統就還算安全;但是如果提到了,就應該立刻尋找解決的辦法,一般在文章 的末尾處會有修正檔的下載連接,只要你在郵件中搜尋Patch Availability就可以找到;即使有時候如果還沒有修正檔發佈,也會 告訴你其它的解決方法,只要照作就可以。 Microsoft Baseline Security Analyzer MBSA(Microsoft Baseline Security Analyzer,基準安全分析器)是微軟提供的一個系統安全分析及解決工具。它是免費的,不過 這個工具只能在Windows 2000/XP上執行,並且要求你的IE版本在5.01以上。MBSA可以對本機或者網路上Windows NT/2000/XP 的系統進行安全性檢測,還可以檢測其它的一些微軟產品,諸如SQL7.0/2000、5.01以上版本的Internet Explorer、IIS4.0/5.0/5.1和 Office2000/XP,並提出相應的解決方法。因此,非常強烈地推薦你使用這個軟件。 MBSA在執行的時候需要有網路連接,執行後的界面如圖九,點擊「Scan a computer」,然後指定你當前使用的或者網路中的某 台電腦,之後按下「Start Scan」就可以了。掃瞄可能需要一段時間,完成後的結果會立刻顯示出來。對於每一項掃瞄出漏洞的 結果,基本上都提供了三個連接,其中What was scanned顯示了在這一步中掃瞄了哪些具體的操作;Result Details顯示了掃瞄的 詳細結果;How to correct this顯示了建議你進行的操作,以便能夠更好地解決這個問題。 下面將對我自己掃瞄的一個結果做詳細說明。我掃瞄的系統的詳細情況為:簡體中文版Windows XP Professional+SP1,安裝IIS 5.1、Office XP Professional、SQL Server 2000。針對掃瞄結果可以看見,MBSA對以上提到的軟件全部進行了可靠的安全評估。 首先是對於Windows的檢查,MBSA對整個系統的掃瞄是很徹底的,小到硬碟採用的文件系統,大到Hotfix修正檔和用戶賬戶的 設置情況,在這裡都可以瞭解得很清楚。而對於需要你重點關注的問題,都會用紅色的叉突出顯示。例如這裡,由於我的一個 硬碟分區使用了FAT32文件系統,就被MBSA認為是一個不安全隱患,並建議我轉換為NTFS分區。不止如此,點擊How to correct this之後,還有很多建議性的東西可以閱讀,例如如何在NTFS、FAT、FAT32文件系統之間取捨,NTFS文件系統上的權限 設定等。 在IIS子系統的檢查中我的機器發現了很多問題,不僅有Hotfix修正檔沒有安裝,沒有執行IIS Lockdown Tool,還有其它的一些 問題。對於缺少的Hotfix修正檔,MBSA會明確地告訴你少了哪些以及到哪裡去下載,還有怎樣安裝。而IIS Lockdown Tool是一 個專門用於IIS的安全鎖定工具,這個我們會在後詳細說明。如果你安裝IIS的時候是使用的默認安裝,IIS本身的一些範例文件 也一同被裝在了你的IIS目錄下,具體的位置是在\Inetpub\iissamples,\Winnt\help\iishelp和\Program Files\common files\system\msadc 目錄下,這些文件為是一些示例或者幫助,單是保留這些文件會給你的系統帶來嚴重的安全隱患,所以安裝IIS的時候最好能選 擇定制安裝。如果已經裝上,則可以直接在服務器上把這些文件刪除。 對於其它的SQL、Office和IE的安全問題,大家有興趣的可以自己研究研究。 IIS Lockdown Tool IIS Lockdown Tool(IIS鎖定工具)是微軟為了提高其信息服務軟件IIS的安全性,專門發佈的一個輔助工具,這個工具可以幫助 你對你的IIS服務做恰當的調整,以便關閉不需要的服務,加強系統的安全性。 這個軟件是免費的,並且不大,只有290K左右。適用於Windows NT 4,Windows 2000和Windows XP以及它們之上執行的IIS 4.0,IIS 5.0和IIS 5.1。 IIS Lockdown Tool在安裝過程中會詢問你的服務器的主要用途,以便程序能針對服務器的不同應用提供不同的解決方案。我們 以動態網頁服務器(支持ASP)為例來演示IIS Lockdown Tool的使用。 選擇了服務器的用途,並選中了View Template Settings後點擊下一步。在這裡需要你決定在服務器上執行哪些服務,你只要選擇 必須的服務就可以了,至於你機器上已經安裝的,但是沒有被選中的服務將會被停止或者刪除。由於我只安裝了IIS的HTTP服 務,因此直接點擊下一步繼續。在這裡允許你禁用一些類型的文件,其中大部分是腳本文件,由於我們的服務器主要用做提供 ASP的動態網頁,因此除了.asp,其它顯示在列表中的文件類型都可以禁用。 點擊繼續後出現的界面,在這裡你可以選擇性地刪除IIS的範例文件,這個原因我們在前面已經說過了。為了更加安全,IIS Lockdown Tool會強制刪除包括IIS Sample、Scripts在內的四種範例文件,只有IIS HELP需要你自己決定是否刪除。當然,安全第 一,我們一定要把這個也一起刪掉。 而下方的「Set the permission to prevent anonymous IIS users from performing these actions」會對系統中的一些程序設置權限,禁止 匿名的IIS用戶訪問,例如cmd.exe,如果匿名的IIS用戶可以訪問到這個程序,那他就可能利用命令行模式觀察你的整個硬碟! 在下一步中,你可以選中「Install URLScan filter on the server」,在你的服務器上安裝URL掃瞄過濾器,URL掃瞄過濾器可以對 所有的HTTP請求進行掃瞄和監控,並禁止可能會危害到服務器安全的請求。 設置到這裡,IIS Lockdown Tool的準備工作就已經全部結束了, 你可以點擊下一步,對所有的設置進行一下複查,如果確認無誤, 繼續點擊下一步,IIS Lockdown Tool會自動根據之前的設置對IIS進行一番調整。到這裡,你的IIS就已經相對比較安全了。如果 日後發現你的設置對服務器的正常執行有影響,還可以再次執行IIS Lockdown Tool的安裝程序,重新設置。 經過以上的實際操作,你的電腦自身已經相對強壯和安全多了,但是為樂抵禦網路上的病毒和黑客,你仍然需要一個好的病毒 防火牆和網路防火牆。並且新的安全漏洞隨時都會被發現,而我們要做的還有很多! |