共用方式為


The Cable Guy強式和弱式主機模型

Joseph Davies

將網路主機設定為包含數個網路介面的多重主目錄主機,已經越來越普遍。多重主目錄主機能提供增強的連接性,因為它可同時連線到多個網路,例如內部網路或網際網路。但是正由於它們可以同時連線到內部網路與

網際網路,在多重主目錄上執行的服務會比較容易遭受攻擊。為了協助防止攻擊,以及介紹多重主目錄主機處理 IP 流量的方式,我將說明多重主目錄主機的弱式和強式主機模型,然後解釋在 Windows® 中如何支援這些模型。

RFC 1122 是描述多重主目錄主機的兩個模型的規格,其中的多重主目錄主機並非當做路由器使用,而且只會傳送和接收單點傳播 IP 流量。這些模型稱為強式主機和弱式主機,會指定傳送或接收的單點傳播流量是否必須與此流量流經的網路介面建立關聯。這些模型會決定主機如何傳送和接收封包,而且會影響主機上執行之服務的安全性風險。

雖然 RFC 1122 是針對 IPv4 定義這些模型,但 IPv6 也同樣適用。舉例而言,IPv6 的多重主目錄主機可以是同時使用 IPv4 與 IPv6 的電腦,其中包含連線到內部網路和 IPv6 通道介面的網路介面卡。

弱式主機模型

在弱式主機模型中,IP 主機 (無論是 IPv4 或 IPv6) 可以在未指派所傳送之封包的來源 IP 位址的介面上傳送封包。這就是所謂的弱式主機傳送行為。IP 主機也可以在未指派所接收之封包的目的地 IP 位址的介面上接收封包。這就是所謂的弱式主機接收行為。

當您使用包含多重介面的多重主目錄 IP 主機時,在這些介面上啟用弱式主機接收行為有時會使得主機容易遭受多重主目錄攻擊。譬如說,[圖 1] 顯示主機 A 同時連線到網際網路與內部網路。主機 A 的公用 IPv4 位址 131.107.89.211 已指派給網際網路介面,而私人 IPv4 位址 192.168.17.48 則指派給內部網路介面。

圖 1 多重主目錄電腦的範例

圖 1** 多重主目錄電腦的範例 **

同時在網際網路與內部網路介面上啟用弱式主機傳送行為時,主機 A 可以傳送來自網際網路介面上 131.107.89.211 的封包、來自網際網路介面上 192.168.17.48 的封包、來自內部網路介面上 131.107.89.211 的封包,以及內部網路介面上 192.168.17.48 的封包。

啟用弱式主機接收行為時,主機 A 可以接收下列封包類型 (假設主機防火牆規則允許連入流量):在網際網路介面上傳送到 131.107.89.211 的封包、在網際網路介面上傳送到 192.168.17.48 的封包、在內部網路介面上傳送到 131.107.89.211 的封包、在內部網路介面上傳送到 192.168.17.48 的封包。

當您啟用弱式主機接收行為時,網際網路上的惡意使用者可以傳送封包到主機 A 的網際網路介面,藉此攻擊在主機 A 上面執行但僅提供給內部網路之主機使用的服務。如果網際網路基礎結構支援將目的地為 192.168.17.48 的封包轉送到主機 A 的網際網路介面,就可能發生此類型的攻擊。您可以透過在主機 A 的網際網路介面上設定適當的防火牆規則,來防止此類型的攻擊。不過,即使這麼做,在主機 A 上執行且適用於內部網路用戶端的服務仍然具有風險。

強式主機模型

在強式主機模型中,傳送和接收行為不太一樣。進行強式主機傳送時,主機只能在已被指派所傳送封包之來源 IP 位址的介面上傳送封包。進行強式主機接收時,主機只能在已被指派所接收封包之目的地 IP 位址的介面上接收封包。

在網際網路和內部網路介面上啟用強式主機傳送行為時,[圖 1] 中的主機 A 只能在網際網路介面上傳送來自 131.107.89.211 的封包,以及在內部網路介面上傳送來自 192.168.17.48 的封包。

啟用強式主機接收行為時,主機 A 只能在網際網路介面上接收傳送到 131.107.89.211 的封包,以及在內部網路介面上接收傳送到 192.168.17.48 的封包。

[圖 1] 中,您無須設定防火牆規則,主機 A 的強式主機模型便會刪除在網際網路介面上傳送到位址 192.168.17.48 的所有連入封包,有效地隔離主機 A 的內部網路介面與網際網路。

當您選擇強式主機模型時,請記得這會影響某些專為弱式主機行為而設計的連線類型。例如,某些負載平衡實作可能會使用弱式主機接收行為,以便在任何介面上接收封包,然後從內部將這些封包路由到適當的介面。使用弱式主機傳送的主機,在傳送來自任何來源位址的流量至連線較快的介面時,也可能會受到影響。

強式主機傳送和接收

我們現在來看一下,當您允許每個介面啟用或停用強式主機傳送和接收時,傳送和接收程序將如何在 IPv4 或 IPv6 的一般主機上運作。

針對要傳送的封包,IP 首先會檢查是否已經指定來源位址。若未指定,IP 便會在路由表中,針對封包進行目的地位址的無限制查詢。無限制查詢會考慮路由表中的所有路由。根據目的地所選定的路由,IP 會決定下個躍點介面 (用來在連結階層放置封包的介面) 和下個躍點位址。根據下個躍點介面,IP 會視需要使用 RFC 3484 中定義的位址選擇程序,來決定最佳的來源位址。此時,IP 已經做好傳送封包的準備:來源和目的地位址、下個躍點介面,以及下個躍點位址。

來源位址一旦指定,就會知道來源介面。來源介面會被指派來源位址。接著 IP 會判斷來源介面上是否有啟用強式主機傳送。

如果已停用,IP 便會在路由表中,執行封包目的地位址的無限制查詢。IP 會根據目的地的最佳路由,來決定下個躍點介面和躍點位址。IP 具有來源與目的地位址、下個躍點介面,以及下個躍點位址。請注意,若在來源介面上停用強式主機傳送行為,則下個躍點介面可能會與來源介面不同。

如果來源介面上有啟用強式主機傳送,則 IP 會在路由表中進行封包目的地位址的有限制查詢。在有限制查詢中,只會考慮包含來源介面之下個躍點介面的路由。根據為目的地選取的路由,IP 會決定下個躍點位址。IP 具有來源與目的地位址、下個躍點介面,以及下個躍點位址。請注意,若在來源介面上啟用強式主機傳送行為,則下個躍點介面永遠會與來源介面相同。[圖 2] 顯示一般 IP 傳送主機的處理程序。

圖 2 一般 IP 傳送主機的處理程序

圖 2** 一般 IP 傳送主機的處理程序 **(按影像可放大)

一旦指定來源位址之後,有限制路由查詢就可以在路由表的數個最接近目的地的路由中,選取公制較高的路由。例如,[圖 1] 中的主機 A 有兩個預設路由;其中一個指向網際網路且公制為 10,另一個則指向內部網路且公制為 20。強式主機行為在兩個 LAN 介面上均已啟用。

如果主機 A 上的傳送應用程式並未指定來源位址,那麼路由查詢的結果將會是公制較低的預設路由;主機 A 一定會透過來源位址 131.107.89.211 從網際網路介面傳送流量。但是,如果主機 A 上的傳送應用程式指定來源位址為 131.107.89.211,那麼查詢結果就是網際網路介面的預設路由;主機 A 會從網際網路介面傳送流量。如果主機 A 上的傳送應用程式指定來源位址為 192.168.17.48,那麼查詢會選取內部網路介面的預設路由;主機 A 會從內部網路介面傳送流量。使用有限制路由查詢時,IP 會使用公制較高的預設路由,透過來源位址 192.168.17.48 來傳送流量。

針對接收的流量,IP 首先會確定此流量的目的地是否為該主機。若否,則 IP 會以無訊息的方式放棄此封包,因為主機並非當作路由器使用。IP 接著會判斷連入介面 (接收封包的介面) 上是否有啟用強式主機接收。若已停用,IP 便會處理此封包。若已啟用,IP 會確定封包中的目的地位址,是否指派到連入介面。如果是的話,IP 便會處理此封包。否則,IP 會以無訊息的方式放棄此封包。[圖 3] 顯示一般接收主機的處理程序。

圖 3 接收主機處理程序

圖 3** 接收主機處理程序 **

Windows 中的弱式和強式主機行為

Windows XP 及 Windows Server® 2003 會使用弱式主機模型來進行所有 IPv4 介面的傳送與接收,並使用強式主機模型來進行所有 IPv6 介面的傳送與接收。您無法設定此行為。根據預設,Windows Vista 和 Windows Server 2008 中的下一代 TCP/IP (Next Generation TCP/IP) 堆疊,將可支援在 IPv4 與 IPv6 的所有介面上同時啟用強式主機傳送與接收,但 Teredo 主機特定轉送的 Teredo 通道介面除外。[圖 4] 列出可用來為 IPv4 和 IPv6 的各個介面設定傳送與接收行為的命令。請注意,InterfaceNameOrIndex 是 [網路連線] 資料夾的介面名稱,或是它的介面索引。您可以從下列命令所顯示的資料中,取得介面的介面索引:

Figure 4 設定強式和弱式傳送與接收行為的命令

• netsh interface ipv4 set interface [InterfaceNameOrIndex] weakhostsend=enabled|disabled
• netsh interface ipv4 set interface [InterfaceNameOrIndex] weakhostreceive=enabled|disabled
• netsh interface ipv6 set interface [InterfaceNameOrIndex] weakhostsend=enabled|disabled
• netsh interface ipv6 set interface [InterfaceNameOrIndex] weakhostreceive=enabled|disabled
 
netsh interface ipv6 show interface

弱式和強式主機行為與 RFC 3484

為了提供標準化方法來選擇要進行連線的來源及目的地 IPv6 和 IPv4 位址,RFC 3484 定義了兩個演算法。第一個是來源位址選擇演算法,可用來選擇搭配目的地位址的最佳來源位址。另一個是目的地位址選擇演算法,可根據喜好設定順序來排序可能的目的地位址清單。

針對特定目的地位址選擇來源位址候選清單時,強式和弱式主機行為會產生作用,而這也會影響到最終排序的目的地位址清單。就強式主機傳送行為而言,來源位址候選清單是由指派給目的地之傳送介面的單點傳播位址所組成。就弱式主機傳送行為而言,候選清單可能包含已指派給啟用弱式主機傳送之任何介面的位址。如需有關來源與目的地位址選擇的詳細資訊,請造訪 microsoft.com/technet/community/columns/cableguy/cg0206.mspx

根據預設,弱式主機傳送與弱式主機接收都會在 IPv4 和 IPv6 的所有介面上停用,但 Teredo 主機特定轉送的 Teredo 通道介面除外。

如需有關 RFC 3484 的詳細資訊,請參閱「弱式和強式主機行為與 RFC 3484」資訊看板。

停用遠端存取 VPN 連線的預設路由

遠端存取虛擬私人網路 (VPN) 用戶端,是多重主目錄主機的另一個範例。即使它可能有連線到網際網路的單一 LAN 介面,但是當遠端存取 VPN 用戶端完成 VPN 連線時,它就算是多重主目錄。其中包含兩個介面:LAN 介面,以及用於 VPN 連線並以點對點通訊協定 (Point-to-Point Protocol,PPP) 為基礎的介面。其中也有兩個 IPv4 位址:網際網路服務提供者 (ISP) 為 LAN 介面指派的 IPv4 位址,以及 VPN 伺服器為 PPP 型介面指派的 IPv4 位址。

為了確保 VPN 用戶端會經由 VPN 連線傳送預設路由流量到內部網路,Windows XP 和 Windows Server 2003 修改了 IPv4 路由表,其中提高了現有預設路由的公制,並新增了使用 PPP 介面且公制較低的預設路由。這項預設行為讓內部網路上的位置可供連接,而且讓網際網路上的幾乎所有位置在 VPN 連線期間都不可連接。藉由不新增 VPN 連線的預設路由,並且新增內部網路目的地的特定路由,便可為 VPN 用戶端設定分割通道,使其同時具有網際網路與內部網路的存取能力。不過,風險是分割通道 VPN 用戶端可以在網際網路與內部網路之間路由封包。如需詳細資訊,請參閱 microsoft.com/technet/community/columns/cableguy/cg1003.mspx

Windows XP 和 Windows Server 2003 中的預設 VPN 用戶端行為,是專為弱式主機傳送行為所設計。路由查詢永遠會使用 VPN 連線的預設路由,因為它的公制最低。但是當您使用強式主機傳送行為時,傳送流量所使用的預設路由將取決於封包中的來源 IP 位址。針對由 ISP 指派且來自 IPv4 位址之流量的路由查詢將使用預設路由,而此預設路由會使用 LAN 介面,讓所有網際網路位置都可供連接。針對由 VPN 伺服器指派且來自 IPv4 位址之流量的路由查詢將使用預設路由,而此預設路由會使用 PPP 介面,讓所有內部網路位置都可供連接。因此,當您使用強式主機傳送行為時,VPN 用戶端會因為具有分割通道設定,而可以同步存取網際網路與內部網路,即使是沒有系統管理員層級權限來直接修改 IPv4 路由表的應用程式也是如此。

為了防止強式主機傳送行為在預設情況下建立分割通道設定,Windows Vista® 和 Windows Server 2008 中的 VPN 用戶端會在 VPN 連線完成時,自動停用 LAN 介面的預設路由。這個行為可確保在路由表中,只有單一作用中預設路由會使用 PPP 介面。此外,這項行為也可確保沒有系統管理員層級權限的應用程式,將無法執行分割通道。

由於來自 VPN 用戶端電腦的流量必須源自由 VPN 伺服器指派的 IPv4 位址,因此這項行為更能有效隔離內部網路與網際網路。當 VPN 連線終止時,停用的預設路由便會啟用。

您可以使用以下命令來控制這項行為:

netsh interface ipv4 set interface [InterfaceNameOrIndex]
ignoredefaultroutes=enabled|disabled

Joseph Davies 是 Microsoft 的技術作家,從 1992 年開始教導和編寫 Windows 網路方面的主題。他寫過五本 Microsoft Press 的書,同時也是每月線上 TechNet Cable Guy 專欄的作家。

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