網絡代理自動發現協議

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

網絡代理自動發現協議Web Proxy Auto-Discovery ProtocolWPAD)是一種客戶端使用DHCP和/或DNS發現方法來定位一個配置文件URL的方法。在檢測和下載配置文件後,它可以執行配置文件以測定特定URL應使用的代理。

歷史

WPAD協議僅概述了發現該文件位置的機制,而最常被部署的文件格式是最初由網景在1996年為Netscape Navigator 2.0設計的代理自動配置格式。[1]WPAD協議由一個包括Inktomi英語Inktomi Corporation微軟RealNetworks太陽微系統(現為甲骨文公司)公司組成的聯盟起草。WPAD被文檔化的互聯網草案已在1999年12月到期,[2]但WPAD仍被所有主要瀏覽器支持。[3][4]WPAD在Internet Explorer 5.0中被首次引入。

上下文

若要為組織中的所有瀏覽器提供相同的代理策略,而無需手動配置每個瀏覽器,需要使用下列兩種技術:

  • 代理自動配置(PAC)標準:創建和發布一個中央代理配置文件。細節詳見上述條目。
  • 網絡代理自動發現協議(WPAD)標準:確保組織中的瀏覽器在非手動配置的情況下找到文件。這是本條目的範疇。

WPAD標準定義了兩種備用方法,系統管理員可以用它們發布代理配置文件的位置,它們是使用動態主機設置協議(DHCP)或域名系統(DNS):

在獲取第一個頁面前,實現有此方法的網頁瀏覽器給本地DHCP服務器發送一個DHCPINFORM查詢,並使用服務器的回覆中的WPAD選項。如果DHCP服務器沒有提供所需的信息,則再使用DNS。假設用戶的計算機網絡名稱為pc.department.branch.example.com,瀏覽器將依次嘗試下列URL,以期成功在客戶端的域中找到一個代理配置文件:

  • http://wpad.department.branch.example.com/wpad.dat
  • http://wpad.branch.example.com/wpad.dat
  • http://wpad.example.com/wpad.dat
  • http://wpad.com/wpad.dat(在不正確的實現中。參閱下面的「安全」章節)

(注意:上述例子不是實際「在線」的URL,其中的域名被採用保留域名「example.com」替代。)

在Windows上,如果DNS查詢不成功,那麼將使用本地鏈路多播名稱解析英語Link-Local Multicast Name Resolution(LLMNR)或NetBIOS。[5][6]

要點

DHCP比DNS有着更高的優先級:如果DHCP提供了WPAD URL,則不會進行DNS查詢。只能配合DHCPv4使用,WPAD-Option選項沒有在DHCPv6中定義。 應注意Firefox不支持DHCP,只進行DNS查詢,並且非Windows、ChromeOS平台以及版本號小於13的Chrome也是如此。[3][4]

當構造查詢數據包時,DNS查詢將剔除域名的首個部分(客戶端的主機名)並以wpad取代。然後,它通過移除更多域名的部分來在層次結構中「向上移動」,直到它找到一個WPAD PAC文件或者離開當前組織。

瀏覽器會猜測組織的邊界。這種猜測對於「company.com」或「university.edu」等是正確的,但對於「company.co.uk」出錯(見下面的「安全」章節)。

對於DNS查詢,配置文件的路徑始終為wpad.dat。對於DHCP協議,任何URL均可。由於傳統原因,PAC文件通常名為proxy.pac(當然,此名稱的文件將被WPAD DNS搜索忽略)[來源請求]

配置文件的MIME類型必須為「application/x-ns-proxy-autoconfig」。參見代理自動配置了解更多信息。

Internet Explorer和Konqueror是目前唯一同時支持DHCP和DNS方法的瀏覽器;大多數主要瀏覽器都支持DNS方法。[7]

前提條件

為使WPAD生效,需要具備幾個條件:

  • 為使用DHCP,服務器必須配置為提供「site-local」選項252(「auto-proxy-config」及字符串值「http://example.com/wpad.dat」(無須引號),其中「example.com」是網頁服務器的地址(無論點分十進制格式的IP地址或一個DNS名稱)。
  • 為使用僅DNS模式,需要一個主機名為WPAD的DNS項目。
  • 在WPAD地址上的主機必須可以提供網頁
  • 在這兩種情況下,網頁服務器必須配置為提供MIME類型為「application/x-ns-proxy-autoconfig」的WPAD文件。
  • 如果使用了DNS方法,名為wpad.dat的文件必須位於WPAD網頁服務器的根目錄
  • PAC文件的細節見代理自動配置條目。
  • 在一個虛擬主機環境中配置WPAD服務器時請小心使用。在使用自動代理檢測時,Internet Explorer 6及更早版本中的WinHTTP和WinINET會發送「Host: <IP address>」頭,在IE7+和Firefox中則發送「Host: wpad」頭。因此,建議將wpad.dat文件託管在默認虛擬主機而非其自身下。
  • Internet Explorer版本6.0.2900.2180.xpsp_sp2_rtm會向網頁服務器請求「wpad.da」而不是「wpad.dat」。
  • 如果您使用Windows Server 2003(及更新版本)作為您的DNS服務器,您可能必須禁用DNS服務器全局查詢阻止列表(DNS Server Global Query Block List)或修改註冊表以編輯阻止查詢的列表。[8][9]

安全

在極大簡化組織中瀏覽器配置的同時,WPAD協議必須被小心使用:簡單的疏失就可能留下漏洞,攻擊者可以篡改用戶瀏覽器中顯示的內容:

  • 網絡內部的攻擊者可以建立一個DHCP服務器,提供一個惡意PAC腳本的網址。
  • 如果網絡是「company.co.uk」並且http://wpad.company.co.uk/wpad.dat文件未提供,瀏覽器將請求http://wpad.co.uk/wpad.dat。瀏覽器不會測定這是否仍處在公司內部。參見http://wpad.com/ (頁面存檔備份,存於網際網路檔案館)上的例子。
  • 同樣的方法已被http://wpad.org.uk使用。它提供一個wpad.dat文件從而將用戶的所有流量重定向到一個互聯網拍賣網站。
  • 實施DNS劫持的ISP可能阻斷WPAD協議的DNS查詢,從而將用戶引導至非代理服務器的主機。
  • 泄露的WPAD查詢可能導致與內部網絡命名方案的域名衝突。如果攻擊者註冊一個域來回答WPAD查詢並配置一個有效的代理,這有可能進行跨越互聯網的中間人攻擊[10]

通過WPAD文件,攻擊者可以引導用戶的瀏覽器到他們自己的代理,攔截和修改所有WWW流量。儘管2005年對Windows WPAD的處理應用了一個簡單的修復,但它只解決了.com域的問題。在Kiwicon英語Kiwicon的一次演講表示,世界上的許多地方仍有極其脆弱的安全漏洞,在新西蘭為測試目的註冊的一個示例域名在幾秒內收到了來自全國各地的代理請求。幾個wpad.tld域名(包括COM, NET, ORG和US)現在指向客戶端環回地址以幫助防範此安全漏洞,雖然還有一些名稱仍是註冊狀態(如wpad.co.uk)。

因此,管理員應確保用戶可以信任組織中的所有DHCP服務器,並且組織內的所有可能的wpad域都在控制之下。此外,如果沒有為組織配置wpad域,用戶將轉向域層次結構中的下一個(更高層級)wpad站點並使用其配置。這允許能在頂級域註冊wpad子域名的人將自己的代理設為對所有流量或特定站點提供服務,從而施行對特定國家或區域的大範圍中間人攻擊

除了上述「陷阱」,WPAD方法是獲取一個JavaScript文件並在所有用戶瀏覽器上執行,即使用戶已禁用查看網頁時使用的JavaScript。

參考資料

  1. ^ Navigator Proxy Auto-Config File Format. Netscape Navigator Documentation. March 1996 [2015-02-10]. (原始內容存檔於2007-03-07). 
  2. ^ Gauthier, Paul; Josh Cohen; Martin Dunsmuir; Charles Perkins. Web Proxy Auto-Discovery Protocol (INTERNET-DRAFT). IETF. 1999-07-28 [2015-02-10]. (原始內容存檔於2012-04-23). 
  3. ^ 3.0 3.1 Chromium #18575: Non-Windows platforms: WPAD (proxy autodetect discovery) does not test DHCP. 2009-08-05 [2015-02-10]. (原始內容存檔於2015-09-12).  引用錯誤:帶有name屬性「chrome」的<ref>標籤用不同內容定義了多次
  4. ^ 4.0 4.1 Firefox #356831 - Proxy autodiscovery doesn't check DHCP (option 252. 2006-10-16 [2015-02-10]. (原始內容存檔於2021-04-14).  引用錯誤:帶有name屬性「firefox」的<ref>標籤用不同內容定義了多次
  5. ^ Troubleshooting Web Proxy Auto Discovery (WPAD) issues. GFI Software英語GFI Software. [2015-02-10]. (原始內容存檔於2021-04-14). 
  6. ^ Hjelmvik, Erik. WPAD Man in the Middle. 2012-07-17 [2015-02-10]. (原始內容存檔於2020-08-14). 
  7. ^ Konqueror: Automatic Proxy Discovery. KDE. 2013-05-20 [2015-02-10]. (原始內容存檔於2015-02-11). 
  8. ^ King, Michael. WPAD does not resolve in DNS. 2010-02-17 [2015-02-10]. (原始內容存檔於2021-04-14). 
  9. ^ Removing WPAD from DNS block list. Microsoft TechNet. [2015-02-10]. (原始內容存檔於2017-02-14). 
  10. ^ 存档副本. [2016-12-23]. (原始內容存檔於2020-06-18). 

拓展閱讀