反向代理

代理伺服器

在計算機網路中,反向代理是代理伺服器的一種。伺服器根據客戶端的請求,從其關聯的一組或多組後端伺服器(如Web伺服器)上獲取資源,然後再將這些資源返回給客戶端,客戶端只會得知反向代理的IP地址,而不知道在代理伺服器後面的伺服器簇的存在。

與前向代理不同,前向代理作為客戶端的代理,將從網際網路上獲取的資源返回給一個或多個的客戶端,服務端(如Web伺服器)只知道代理的IP地址而不知道客戶端的IP地址;而反向代理是作為伺服器端(如Web伺服器)的代理使用,而不是客戶端。客戶端藉由前向代理可以間接訪問很多不同網際網路伺服器(簇)的資源,而反向代理是供很多客戶端都通過它間接訪問不同後端伺服器上的資源,而不需要知道這些後端伺服器的存在,而以為所有資源都來自於這個反向代理伺服器。

定義


隨著網路技術與計算機的普及與發展,代理服務成為網上應用較多的形式。代理服務是指內部網路對Internert發出連接請求,需要制定代理服務將原本直接傳輸至Web伺服器的HTTP發送至代理伺服器中。換句話來說,代理服務就是網路信息的中轉站。代理伺服器作為瀏覽器與Web伺服器之間的另一類伺服器,配備代理伺服器,瀏覽器無需直接至Web伺服器獲取網頁,只需向代理伺服器發出所需的請求,由代理伺服器傳送給訪問者所需的瀏覽器。普通的Web代理伺服器僅支持對內部網路的訪問請求,反向代理服務與普通的代理方法並不存在明顯衝突。如果一個代理伺服器可以代理外部網路主機訪問內部網路,這類代理服務模式稱之為反向代理服務。因此,系統的防火牆中可以同時配備兩種方式,反向代理用來服務外部網路訪問,從而提供內部網路訪問外部網路的能力。將反向代理功能與拒絕外部訪問防火牆軟體合理結合,從而構建一種既包含內部網路、也能向外部發布Web信息防火牆系統。反向代理功能可以提供全面的連接記錄,從而提供預防、捕獲信息的能力。
反向代理的工作原理是,代理伺服器來接受客戶端的網路訪問連接請求,然後伺服器將請求有策略的轉發給網路中實際工作的業務伺服器,並將從業務伺服器處理的結果,返回給網路上發起連接請求的客戶端。

工作方式


通常的代理伺服器,只用於代理內部網路對Internet的連接請求,客戶機必須指定代理伺服器,並將本來要直接發送到Web伺服器上的http請求發送到代理伺服器中。由於外部網路上的主機並不會配置並使用這個代理伺服器,普通代理伺服器也被設計為在Internet上搜尋多個不確定的伺服器,而不是針對Internet上多個客戶機的請求訪問某一個固定的伺服器,因此普通的Web代理伺服器不支持外部對內部網路的訪問請求。當一個代理伺服器能夠代理外部網路上的主機,訪問內部網路時,這種代理服務的方式稱為反向代理服務。此時代理伺服器對外就表現為一個Web伺服器,外部網路就可以簡單把它當作一個標準的Web伺服器而不需要特定的配置。不同之處在於,這個伺服器沒有保存任何網頁的真實數據,所有的靜態網頁或者CGI程序,都保存在內部的Web伺服器上。因此對反向代理伺服器的攻擊並不會使得網頁信息遭到破壞,這樣就增強了Web伺服器的安全性。
反向代理方式和包過濾方式或普通代理方式並無衝突,因此可以在防火牆設備中同時使用這兩種方式,其中反向代理用於外部網路訪問內部網路時使用,正向代理或包過濾方式用於拒絕其他外部訪問方式並提供內部網路對外部網路的訪問能力。因此可以結合這些方式提供最佳的安全訪問方式。

優點


1)提高了內部伺服器的安全
外部網路用戶通過反向代理訪向內部伺服器,只能看到反向代理伺服器的IP地址和埠號,內部伺服器對於外部網路來說是完全不可見。而且反向代理伺服器上沒有保存任何的信息資源,所有的網頁程序都保存在內部伺服器上,對反向代理服多器的攻擊並不能使真的網頁信息系統受到破壞,這樣就提高了內部伺服器的安全性。
2)加快了對內部伺服器的訪問速度
在內部伺服器前放置兩台反向代理伺服器,分別連接到教育網和公網,這樣公網用戶就可以直接通過公網線路訪同學校伺服器,從而避開了公網和教育網之間擁擠的鏈路。同時反向代理伺服器的緩中功能也加快了用戶的訪問速度。
3)節約了有限的IP資源
校園網內部伺服器除使用教育網地址外,也會採用公網的IP地址對外提供服務,公網分配的IP地址數目是有限的,如果每個伺服器有分配-個公網地址,那是不可能的,通過反向代理技術很好的解決了IP地址不足的問題。

代理伺服器


如果您的內容伺服器具有必須保持安全的敏感信息,如信用卡號資料庫,可在防火牆外部設置一個代理伺服器作為內容伺服器的替身。當外部客戶機嘗試訪問內容伺服器時,會將其送到代理伺服器。實際內容位於內容伺服器上,在防火牆內部受到安全保護。代理伺服器位於防火牆外部,在外部客戶機看來就像是內容伺服器。
當客戶機向站點提出請求時,請求將轉到代理伺服器。然後,代理伺服器通過防火牆中的特定通路,將客戶機的請求發送到內容伺服器。內容伺服器再通過該通道將結果回傳給代理伺服器。代理伺服器將檢索到的信息發送給客戶機,好像代理伺服器就是實際的內容伺服器(參見圖1)。如果內容伺服器返回錯誤消息,代理伺服器會先行截取該消息並更改標頭中列出的任何 URL,然後再將消息發送給客戶機。如此可防止外部客戶機獲取內部內容伺服器的重定向 URL。
這樣,代理伺服器就在安全資料庫和可能的惡意攻擊之間提供了又一道屏障。與有權訪問整個資料庫的情況相對比,就算是僥倖攻擊成功,作惡者充其量也僅限於訪問單個事務中所涉及的信息。未經授權的用戶無法訪問到真正的內容伺服器,因為防火牆通路只允許代理伺服器有權進行訪問。
可以配置防火牆路由器,使其只允許特定埠上的特定伺服器(在本例中為其所分配埠上的代理伺服器)有權通過防火牆進行訪問,而不允許其他任何機器進出。
安全反向代理 當代理伺服器與其他機器之間有一個或多個連接使用安全套接字層(SSL) 協議加密數據時,即會進行安全反向代理。

配置方法


配置安全反向代理伺服器的方法有三種:
Secure client to proxy。如果未經授權的用戶很少或根本沒有機會訪問代理伺服器與內容伺服器之間交換的信息,則此方案很有效。
Secure proxy to content server。如果客戶機在防火牆外部而內容伺服器在防火牆內部,則此方案很有效。在此方案中,代理伺服器可以充當站點之間的安全通道。
Secure client to proxy and secure proxy to content server。如果需要保護伺服器、代理伺服器和客戶機三者間所交換信息的安全,則此方案很有效。在此方案中,代理伺服器既可起到站點間安全通道的作用,又可增加客戶機驗證的安全性。
除了 SSL 之外,代理伺服器還可以使用客戶機驗證,這種方法要求向代理伺服器提出請求的計算機提供證書(或標識表單)以核實其身份。

資源保護措施


(一)反向代理伺服器
反向代理伺服器對外的表現是Web伺服器,其主要的技術就是地址轉換。通過反向代理,客戶端計算機無需任何設置就可以使用數字資源。反向代理技術中每個Web伺服器現代感與反向代理伺服器的某個目錄。反向代理可以把伺服器的目錄映射在需要進行代理的伺服器上。但是,這種設置只能解決用戶一次訪問出現的問題,無法讓用戶藉助反向代理連續訪問。因此,必須藉助正規表達式檢測、替換所用的鏈接,達到藉助反向代理實現連續訪問的效果。
(二)訪問控制
藉助反向代理技術構建Web緩存,從而提升Web站點自身的安全性及訪問速度。採用反向代理設置在原伺服器前端,配備較大容量的內存及高速磁帶,緩存用戶的請求。反向代理伺服器可以訪問用戶的源地址,從而拒絕非法用戶惡意騷擾和訪問。依據實現設置的控制策略及用戶表或IP地址控制參數達到合理控制的目的。訪問控制模式可根據伺服器控制策略、IP地址等參數掌控代理伺服器和Web資源控制系統的記錄。用戶源地址信息可採用accept函數獲取,可以藉助getpeername函數獲得。進行配置文件時,把拒絕IP地址全部羅列出來,在啟動反向代理伺服器時讀入其中,隨之把用戶源IP地址與列表內的地址進行比較,如果相同則拒絕該用戶訪問。為了節約內存並提升網速,對於IP地址列表使用子網/子網掩碼的結構,從而使用子網/子網掩碼對源IP地址進行連續性描述。因部分伺服器無法合理管理用戶控制和訪問數,極易出現盜用信息資源的情況。
(三)流量計算
反向代理伺服器及時統計流量的功能,因內部用戶可以免費運用反向代理伺服器,因此,反向大力伺服器可以判定訪問者是否為內部用戶。如果是內部用戶,則無需統計其所用流量。如果並非內部用戶,及時讀取客戶端所發出的請求信息,統計其流量作為輸入量。向客戶端返回結果后,累計流量看做流出量。如果一次TCP之間的連接結束,把所累積的流量量或流出量進行存檔。因CERNET可以對國內、國外流入量實施相應的計費價格,因此,反向代理伺服器可以區別所用國內流量或國際流量。伺服器統計的流量數據採用二進位文件進行存檔,由專門的程序觀看其數據信息。
(四)設置域名解析
Web伺服器應用反向代理技術時,必須設置合理的域名解析,對於外界的網站域名伺服器均解析為同一個IP地址,這些地址都指向代理服務的IP地址。溶蝕,必須設置內部的DNS,通過Web伺服器區分各種伺服器。