簡介
網路代理自動發現協定(Web Proxy Autodiscovery Protocol),通過讓瀏覽器自動發現代理伺服器 ,定位代理配置檔案,下載編譯並運行,最終自動使用代理訪問網路。
代理自動配置檔案(Proxy Auto-Config,PAC),定義了瀏覽器和其他用戶代理如何自動選擇適當的代理伺服器來訪問一個URL。要使用 PAC,我們應當在一個網頁伺服器上發布一個PAC檔案,並且通過在瀏覽器的代理連結設定頁面輸入這個PAC檔案的URL或者通過使用WPAD協定告知用戶代理去使用這個檔案。
相關技術
若要為組織中的所有瀏覽器提供相同的代理策略,而無需手動配置每個瀏覽器,需要使用下列兩種技術:
• 代理自動配置(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
要點
DHCP比DNS有著更高的優先權:如果DHCP提供了WPAD URL,則不會進行DNS查詢。只能配合DHCPv4使用,WPAD-Option選項沒有在DHCPv6中定義。 應注意Firefox不支持DHCP,只進行DNS查詢,並且非Windows、ChromeOS平台以及版本號小於13的Chrome也是如此。
當構造查詢數據包時,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方法。
前提條件
為使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: ”頭,在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)或修改註冊表以編輯阻止查詢的列表。
安全
在極大簡化組織中瀏覽器配置的同時,WPAD協定必須被小心使用:簡單的疏失就可能留下漏洞,攻擊者可以篡改用戶瀏覽器中顯示的內容:
• 網路內部的攻擊者可以創建一個DHCP伺服器,提供一個惡意PAC腳本的網址。
• 如果網路是“company.co.uk”並且http://wpad.company.co.uk/wpad.dat檔案未提供,瀏覽器將請求http://wpad.co.uk/wpad.dat。瀏覽器不會測定這是否仍處在公司內部。
• 同樣的方法已被http://wpad.org.uk使用。它提供一個wpad.dat檔案從而將用戶的所有流量重定向到一個網際網路拍賣網站。
• 實施DNS劫持的ISP可能阻斷WPAD協定的DNS查詢,從而將用戶引導至非代理伺服器的主機。
• 泄露的WPAD查詢可能導致與內部網路命名方案的域名衝突。如果攻擊者註冊一個域來回答WPAD查詢並配置一個有效的代理,這有可能進行跨越網際網路的中間人攻擊 。
通過WPAD檔案,攻擊者可以引導用戶的瀏覽器到他們自己的代理,攔截和修改所有WWW流量。儘管2005年對Windows WPAD的處理套用了一個簡單的修復,但它只解決了.com域的問題。在Kiwicon的一次演講表示,世界上的許多地方仍有極其脆弱的安全漏洞,在紐西蘭為測試目的註冊的一個示例域名在幾秒內收到了來自全國各地的代理請求。幾個wpad.tld域名(包括COM, NET, ORG和US)當前指向客戶端環回地址以幫助防範此安全漏洞,雖然還有一些名稱仍是註冊狀態(如wpad.co.uk)。
因此,管理員應確保用戶可以信任組織中的所有DHCP伺服器,並且組織內的所有可能的wpad域都在控制之下。此外,如果沒有為組織配置wpad域,用戶將轉向域層次結構中的下一個(更高層級)wpad站點並使用其配置。這允許能在頂級域註冊wpad子域名的人將自己的代理設為對所有流量或特定站點提供服務,從而施行對特定國家或區域的大範圍中間人攻擊。
除了上述“陷阱”,WPAD方法是獲取一個JavaScript檔案並在所有用戶瀏覽器上執行,即使用戶已禁用查看網頁時使用的JavaScript。