Thursday, April 18, 2024

反向代理(Reverse Proxy)

  反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。
  通常的代理服務器,只用於代理內部網絡對Internet的連接請求,客戶機必須指定代理服務器,並將本來要直接發送到Web服務器上的http請求發送到代理服務器中。由於外部網絡上的主機並不會配置並使用這個代理服務器,普通代理服務器也被設計為在Internet上搜尋多個不確定的服務器,而不是針對Internet上多個客戶機的請求訪問某一個固定的服務器,因此普通的Web代理服務器不支持外部對內部網絡的訪問請求。當一個代理服務器能夠代理外部網絡上的主機,訪問內部網絡時,這種代理服務的方式稱為反向代理服務。此時代理服務器對外就表現為一個Web服務器,外部網絡就可以簡單把它當作一個標準的Web服務器而不需要特定的配置。不同之處在於,這個服務器沒有保存任何網頁的真實數據,所有的靜態網頁或者CGI程序,都保存在內部的Web服務器上。因此對反向代理服務器的攻擊並不會使得網頁信息遭到破壞,這樣就增強了Web服務器的安全性。
  反向代理方式和包過濾方式或普通代理方式並無衝突,因此可以在防火牆設備中同時使用這兩種方式,其中反向代理用於外部網絡訪問內部網絡時使用,正向代理或包過濾方式用於拒絕其他外部訪問方式並提供內部網絡對外部網絡的訪問能力。因此可以結合這些方式提供最佳的安全訪問方式。
代理服務器充當服務器的替身
  如果您的內容服務器具有必須保持安全的敏感信息,如信用卡號數據庫,可在防火牆外部設置一個代理服務器作為內容服務器的替身。當外部客戶機嘗試訪問內容服務器時,會將其送到代理服務器。實際內容位於內容服務器上,在防火牆內部受到安全保護。代理服務器位於防火牆外部,在客戶機看來就像是內容服務器。
  當客戶機向站點提出請求時,請求將轉到代理服務器。然後,代理服務器通過防火牆中的特定通路,將客戶機的請求發送到內容服務器。內容服務器再通過該通道將結果回傳給代理服務器。代理服務器將檢索到的信息發送給客戶機,好像代理服務器就是實際的內容服務器。如果內容服務器返回錯誤消息,代理服務器會先行截取該消息並更改標頭中列出的任何 URL,然後再將消息發送給客戶機。如此可防止外部客戶機獲取內部內容服務器的重定向 URL。
  這樣,代理服務器就在安全數據庫和可能的惡意攻擊之間提供了又一道屏障。與有權訪問整個數據庫的情況相對比,就算是僥倖攻擊成功,作惡者充其量也僅限於訪問單個事務中所涉及的信息。未經授權的用戶無法訪問到真正的內容服務器,因為防火牆通路只允許代理服務器有權進行訪問。
  反向代理服務器就像是真正的內容服務器
  可以配置防火牆路由器,使其只允許特定端口上的特定服務器(在本例中為其所分配端口上的代理服務器)有權通過防火牆進行訪問,而不允許其他任何機器進出。
  安全反向代理 當代理服務器與其他機器之間有一個或多個連接使用安全套接字層 (SSL) 協議加密數據時,即會進行安全反向代理。
  安全反向代理有許多用途:
  可以提供從防火牆外部代理服務器到防火牆內部安全內容服務器的加密連接。
  可以允許客戶機安全地連接到代理服務器,從而有利於安全地傳輸信息(如信用卡號)。
  安全反向代理會造成各安全連接因加密數據所涉及的系統開銷而變慢。但是,由於 SSL 提供了高速緩存機制,所以連接雙方可以重複使用先前協商的安全參數,從而大大降低後續連接的系統開銷。
  配置安全反向代理服務器的方法有三種:
  Secure client to proxy。如果未經授權的用戶很少或根本沒有機會訪問代理服務器與內容服務器之間交換的信息,則此方案很有效。
  客戶機安全連接到代理服務器
  Secure proxy to content server。如果客戶機在防火牆內部而內容服務器在防火牆外部,則此方案很有效。在此方案中,代理服務器可以充當站點之間的安全通道
  代理服務器安全連接到內容服務器
  Secure client to proxy and secure proxy to content server。如果需要保護服務器、代理服務器和客戶機三者間所交換信息的安全,則此方案很有效。在此方案中,代理服務器既可起到站點間安全通道的作用,又可增加客戶機驗證的安全性。
  客戶機安全連接到代理服務器並且代理服務器安全連接到內容服務器
  有關如何設置上述每種配置的信息,參見設置反向代理服務器。
  除了 SSL 之外,代理服務器還可以使用客戶機驗證,這種方法要求向代理服務器提出請求的計算機提供證書(或標識表單)以核實其身份。

基於PHP的反向代理程序:

php-dynamic-mirror 網站:http://code.google.com/p/php-dynamic-mirror/

7ghost 網站:http://code.google.com/p/7ghost/

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.