共用方式為


安全性

探索 Windows 防火牆

Steve Riley

 

摘要:

  • 輸入與輸出保護
  • Windows 篩選平台
  • 進階安全性介面
  • 網路設定檔

回顧電腦剛萌芽的年代,根本不會有人想到要在個別的電腦上安裝防火牆。何需多此一舉?幾乎沒有人聽說過網際網路,TCP/IP 還沒誕生,而區域網路通訊協定線路也從未跨出社區或校區。重要資料都是放在

大型主機或檔案伺服器上;人們鮮少將事關重大的資訊留在桌上型電腦,且電腦本身的笨重至少還能相當程度地保障實體安全性。如果有機會連上網際網路,中間大概都還隔著好幾台通訊協定轉譯器,邊際上可能也有封包篩選路由器 (我是說「防火牆」) 設定了重重的規則和例外。

當今的運算環境跟以往那種年代比起來相去甚遠。連上網際網路變得司空見慣 (而且現在都用 TCP/IP 溝通),可攜式裝置如今也成為標準配備。老闆也許會給您一台膝上型電腦,可不是因為他賞識您,而是想從您這兒多撈點利用價值;他們充其量只是希望您騰出五倍的時間用 Wi-Fi 連線隨時工作。膝上型電腦可能比桌上型電腦更貴,但以重金投資換回生產力絕對值得。瞧,可攜性就是這麼迷人,讓您自己和競爭對手都深陷其中。

想想這個問題:以您的膝上型電腦開機上網的總時數來算,連線到公司網路的時間佔了幾成?就我來說,最高比例約為兩成。這表示我的膝上型電腦只有 20% 的時間待在 Microsoft 公司網路的範圍內,安然受到網路周邊設備的保護,並防範外部攻擊。那另外 80% 的時間,當我的膝上型電腦直接連上網際網路、進行日常事務的時候呢?(何況我還經常連線到全世界最危險的網路:電腦安全性會議廳的區域網路)!還有就是當我連線到公司網路,如何防範同在那種環境下的其他電腦構成威脅?

安全性控制的發展必須迎頭趕上各種威脅 (但有時卻望塵莫及)。由於人們經手磁片而讓病毒趁機入侵用戶端,所以起先有了用戶端防毒程式。接著電子郵件愈發普及,惡意軟體變種成蠕蟲隨電子郵件發送,以致發展出防惡意軟體的程式且應用於電子郵件閘道。而隨著全球資訊網的興起,惡意軟體又變種成特洛伊木馬程式,故網際網路存取 Proxy 伺服器也開始使用防惡意軟體的程式。這段發展歷史是無庸置疑眾人皆知的過程。

現在讓我們用同樣的邏輯來看看防火牆。儘管網路邊際上的防火牆足以防護、對抗昨日的威脅,但目前情況已非如此,因為威脅早就改頭換面,不但更複雜也更猖獗。更何況裝置和工作方式也跟過去南轅北轍。許多電腦都將機密資訊儲存在本機,而且經常離開公司網路 (也就是在邊際外)。因此,防火牆必須發展成個別用戶端型態的保護機制。可別搞錯了:用戶端防火牆已經不再是選用配備。為了保護您的電腦在公司網路和網際網路上的安全,千萬一定要有用戶端防火牆。

用戶端防火牆與安全性迷思

很多人根本就不知道 Windows® XP 初版附有用戶端火牆。這其實無須大驚小怪,因為防火牆預設為關閉,而且要按好幾次滑鼠才找得到。防火牆本身還相當神秘,就算看到了也搞不懂真正的用途,而且沒有任何使用指南。但它的確能夠發揮作用。如果您啟用了這個防火牆,它就會幫您阻擋 Nimda、Slammer、Blaster、Sasser、Zotob 及其他來路不明試圖強行通過網路連接埠的流量。由於瞭解到用戶端防護的重要性,Windows XP Service Pack 2 (SP2) 預設啟用防火牆,建立兩個設定檔 (網際網路和公司網路) 並可透過群組原則啟用。

可惜的是,兩大阻礙導致 Windows XP SP2 防火牆難以廣受採納:應用程式考量和安全性迷思。很多人會擔心防火牆可能致使應用程式無法正常運作。不過由於防火牆設計上的緣故,這種情況倒很罕見。防火牆允許所有輸出流量離開您的電腦,但會封鎖不是針對先前若干輸出要求做回應的所有輸入流量。這樣的設計只會在一種情況下阻絕用戶端應用程式,亦即應用程式建立了接聽通訊端而希望接收輸入要求時。Windows XP 防火牆提供簡易方式讓您設定程式或連接埠的例外清單 (但遺憾的是無法透過群組原則設定)。

更大的阻礙在於其他用戶端防火牆製造商所促成的安全性迷思。很多人都深信 Windows XP 防火牆的設計由於允許所有輸出流量毫無限制地離開,而不足以發揮用戶端防火牆的功能。其所持的論點是,用戶端防火牆應該封鎖所有輸入和輸出流量才算勝任,除非使用者特別授與權限。

現在且讓我們仔細想想是否果真如此。請看以下這兩個案例。

  • 假設您以本機系統管理員身分執行時感染了惡意軟體,且惡意軟體只停用防火牆而已。這下子您就中招了。
  • 假設您不是以本機系統管理員身分執行時感染了惡意軟體,而惡意軟體又讓協力廠商防火牆跳出一個對話方塊,上面用外國話寫著連接埠和 IP 位址,還問了非常嚴重的問題:「您是否要允許這麼做?」您只有一個選擇,按 [是];但是電腦可不知道您的原意是「笨蛋,別再騷擾我!」隨著對話方塊的消失,您的電腦安全也泡湯了。或者更常有的情形是,您將不會看到任何對話方塊,惡意軟體就悄悄地綁架了已獲您授權的程式現有的工作階段。這下子您又中招了。

關於安全性,有一條重要的真理請您務必瞭解:防護應將眼光擺在您想要保護的資產,而非試圖防範的威脅。正確的作法是,組織中的每一部電腦都使用精簡卻有效的 Windows 防火牆,以防範世界上所有其他電腦。若您嘗試封鎖來自已遭感染電腦的輸出連線,那麼要如何確定該電腦真的會照您的要求辦事?答案是:一籌莫展。輸出保護就是一種安全性迷思,只是讓人覺得對安全性有幫助而已的噱頭,卻無法實質改善安全性。這就是為何 Windows XP 防火牆不提供輸出保護,而 Windows Vista™ 防火牆也沒有的原因 (稍後我將深入說明 Windows Vista 中的輸出控制)。

Windows Vista 有何新功能?

Windows 篩選平台是 Windows Vista 防火牆的基礎,屬於新網路堆疊的一部分。和 Windows XP 一樣,Windows Vista 預設會封鎖輸入流量。視您的電腦所使用的設定檔而定,網路服務可能預設了一些例外 (待會我將討論設定檔)。如果要的話,您可以編寫規則來允許輸入連線。而且就像 Windows XP,Windows Vista 預設也允許所有來自互動式處理程序的輸出流量,但會限制來自已加入服務限制之服務的輸出流量。此外,您同樣可以編寫規則來封鎖其他輸出連線。

Windows XP 與 Windows Vista 最大的差別在於新的進階安全性介面,以及群組原則完整支援設定和規則 (請參閱 [圖 1])。原有的 [控制台] UI 仍然保留且幾乎毫無改變,只不過新 UI 如今已提供記錄功能和網際網路控制訊息通訊協定 (ICMP) 設定。這個新 UI 即 [進階安全性] MMC 嵌入式管理單元,提供了所有的新功能和靈活性。此外 netsh 命令也有新的用法 netsh advfirewall,可用來編寫指令碼新增與刪除規則、設定與顯示通用和每個設定檔原則,及顯示防火牆的作用狀態。開發人員還可使用 FirewallAPI.dll 和 Netfw.h 透過程式設計方式控制防火牆的一切設定。

[圖 1] 具有進階安全性的 Windows 防火牆

[圖 1]** 具有進階安全性的 Windows 防火牆 **(按影像可放大)

[進階安全性] MMC 屬於精靈引導式介面。建立規則時,您可以選擇四種類型之一:程式、連接埠、預先定義或自訂。[圖 2] 說明這些規則類型。

Figure 2 四種規則類型

類型 目的
程式 用來允許或封鎖特定程式的流量。
連接埠 用來允許或封鎖特定 TCP 或 UDP 連接埠上的流量。
預先定義 使用現存的一組規則,在網路上啟用 Windows 功能 (例如檔案及列印共用或遠端協助)。
自訂 提供所有的選擇鈕、刻度盤、按鈕和核取方塊,讓您可自行設定所需的特定規則。

您可以參考多種元素來編寫規則,這些元素全都適用於本機規則及透過群組原則套用的規則。其中包括:Active Directory® 使用者和電腦帳戶與群組、來源和目標 IP 位址、來源和目標 TCP 與 UDP 連接埠、IP 通訊協定編號、程式和服務、介面類型 (有線、無線或遠端存取) 以及 ICMP 類型和 ICMP 碼。

設定完成後,防火牆將依下列順序處理規則:

服務限制 Windows Vista 中的某些服務會自行限制,以盡可能阻絕疾風 (Blaster) 病毒式攻擊。其中一項限制為服務所需的連接埠清單。防火牆會強制此項以防止服務使用 (或被誘導使用) 任何其他連接埠。

連線安全性規則 [進階安全性] MMC 納入了 IPsec 還有防火牆。接下來會處理的就是設有 IPsec 原則的任何規則。

已驗證的略過項目 這可讓特定已驗證的電腦略過其他規則。

封鎖規則 這可明確封鎖指定的傳入或傳出流量。

允許規則 這可明確允許指定的傳入或傳出流量。

防火牆規則儲存在登錄中,但我並不打算說出確切的位置。喔!好啦,您可以在這幾個地方找到:

  • HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\SharedAccess\Defaults\FirewallPolicy\FirewallRule
  • HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules
  • HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\Static\System

請勿直接在登錄中編輯規則。萬一您這麼做而被我發現,小心您的寵物到時被我抓到 eBay 上拍賣!嗯,也許不至於,但唯一保險的作法是使用 [進階安全性] MMC 編輯規則。

網路設定檔

Windows Vista 定義了三個網路設定檔:網域、私用和公用。如果電腦是網域的成員並已順利登入網域,電腦就會自動套用網域設定檔;這由不得您自行選擇。如果電腦連線到沒有網域的內部網路 (例如住家或小型辦公室網路),您自己或系統管理員即應套用私用設定檔。最後,如果電腦直接連上網路,則請套用公用設定檔。

Windows Vista 如何決定應將您的電腦放在何處?每當網路有所變更 (例如收到新的 IP 位址、發現新的預設閘道或取得新介面),名為「網路定位知悉」(NLA) 的服務就會偵測到變更。此服務會建立網路設定檔,其中包含現有介面的相關資訊、電腦是否驗證為網域控制站、閘道的 MAC 位址等資訊,並為設定檔指派 GUID。NLA 接著將通知防火牆,而由防火牆套用對應的原則 (三個設定檔各定義了一項原則)。

如果是電腦未曾見過的全新介面,且 NLA 並非選擇網域設定檔,將會出現對話方塊要求您指定電腦連線的網路種類。奇怪的是,竟然有三種選擇:住家、工作和公用。您可能會認為「工作」意味著網域設定檔,但其實並非如此。請記住,您絕對不會看到網域設定檔,因為那是 NLA 在電腦登入網域時私下自動選取的。事實上,「住家」和「工作」都對應到私用設定檔。就功能來說,這兩者旗鼓相當,只不過圖示不同罷了 (注意:您必須是本機系統管理員或可提升權限到本機系統管理員,才能選取私用設定檔)。可想而知,「公用」對應到公用設定檔。

在 Windows Vista 中,網路設定檔套用到電腦上所有的介面。NLA 決策樹的流程大致如下:

  1. 檢查所有連線的網路。
  2. 連線到網路的介面當中是否有任一者歸類為公用?如果有,便將電腦的設定檔設為公用並結束流程。
  3. 連線到網路的介面當中是否有任一者歸類為私用?如果有,便將電腦的設定檔設為私用並結束流程。
  4. 是否所有的介面都見到網域控制站,而且電腦已經順利登入?如果是,便將電腦的設定檔設為網域並結束流程。
  5. 如果以上皆非,便將電腦的設定檔設為公用。

其目標是盡可能選取限制最嚴格的設定檔。不過,會有兩個明顯的副作用。首先,如果電腦的乙太網路連接埠連線到公司網路,而無線網卡又連線到樓下的 Starbucks,那麼電腦就會選取公用設定檔而非網域設定檔。其次,如果電腦直接連線到網際網路 (套用公用設定檔) 或連線到住家區域網路 (套用私用設定檔),而又透過 VPN 連線到公司網路,那麼電腦就會依舊套用公用或私用設定檔。

這是什麼意思呢?防火牆套用到網域設定檔的原則包含遠端協助、遠端管理、檔案及列印共用等規則。如果您仰賴這些規則連線到遠端用戶端,則一旦該用戶端選擇了其他設定檔,您就無法連上對方。但是別沮喪!您可以編寫防火牆規則來允許任何需要的輸入連線,然後只對 VPN 連線套用這些規則。這樣一來,即使遠端用戶端並非套用網域設定檔,您仍然能夠透過 VPN 管理對方。

控制輸出連線

剛才我曾說過,用戶端防火牆典型的輸出保護型式只不過是安全性迷思。然而,有一種輸出控制型式卻非常有用:由系統管理員控制某些已確知不希望允許的流量類型。Windows Vista 防火牆在服務限制方面就做了這項管制。防火牆只允許服務透過其認為需要的連接埠進行通訊,並且封鎖服務試圖使用的任何其他連接埠。您可以配合組織的安全性原則,編寫其他規則來允許或封鎖特定流量,進而建構這類控制 (請參閱 [圖 3])。

[圖 3] 新增輸入規則精靈

[圖 3]** 新增輸入規則精靈 **(按影像可放大)

舉例來說,假設您要禁止使用者執行特定的立即訊息用戶端。這時您即可建立規則 (當然是使用群組原則) 封鎖該用戶端對登入伺服器的連線。

不過,這種作法有一些實務上的限制。例如,Windows Live™ Messenger (您可能仍習慣稱之為 MSN® Messenger) 就有各式各樣可供登入的伺服器,而且清單總是經常變動。再說,如果預設連接埠 1863/tcp 被封鎖,它還會切換回連接埠 80/tcp。禁止 Windows Live Messenger 連線到登入伺服器的規則可能過於複雜而且需要不時修改。我之所以提到這,是要說明系統管理式輸出控制或許有用,但若您需要對使用者所能安裝和執行的軟體維持嚴格控制,則不如使用軟體限制原則。

保護您的電腦

如今已無周邊之分;每一部電腦都必須負責自我保護。就如同防惡意軟體的程式從用戶端移往邊際的發展一樣,防火牆也得從邊際移往用戶端。請立即採取行動,啟用您已安裝的防火牆。

無論您的系統是執行 Windows XP 或已經移轉到 Windows Vista,所有用戶端都能使用 Windows 防火牆獲得所需的保護,以增進組織內部的安全性,就算是遠在千里之外的行動工作者也沒問題。

其他相關資源

Steve Riley 是 Microsoft 高可信度電腦運算小組的資深安全性策略人員,也是 TechNet Magazine 的特約編輯,常飛到世界各地參與會議演說並幫助客戶取得並維持安全性。他最新的一本著作是 Protect Your Windows Network (Addison-Wesley,2005)。您可以透過電子郵件地址 steve.riley@microsoft.com 與他連絡。

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.