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的安裝程序,重新設置。

經過以上的實際操作,你的電腦自身已經相對強壯和安全多了,但是為樂抵禦網路上的病毒和黑客,你仍然需要一個好的病毒
防火牆和網路防火牆。並且新的安全漏洞隨時都會被發現,而我們要做的還有很多!