[摘要] 電子商務網站是企業開展電子商務的基礎平臺,網站資源的安全是企業能否成功實施電子商務的關鍵,本文介紹了一種利用反向代理技術來保證網站資源安全的方法。
[關鍵詞] 電子商務 反向代理 網站資源 安全 DNS
一、引言
電子商務是利用先進的電子技術進行商務活動的總稱。它通過網絡、使用先進的信息處理工具,利用計算機這種載體,將買賣雙方的商務信息、產品信息、銷售信息、服務信息,以及電子支付等活動,用相互認同的交易標準來實現。進行電子商務活動的最基礎平臺是電子商務網站,電子商務網站在企業的電子商務體系中有著重要的作用,其安全直接關系企業實施電子商務能否成功。
目前,對電子商務網站的保護,采用最多的方法是使用防火墻技術,只允許用戶訪問網站的WEB服務,過濾掉對網站服務器其他服務的訪問。這種方法有一個問題:網站的WEB服務對外來說是完全暴露的,用戶可以直接和網站服務器通信。
二、反向代理技術
通常的代理一般稱為正向代理,只用于代理內部網絡對外部網絡的連接請求,不支持外部網絡對內部網絡的訪問請求(因為內部網絡對外部網絡來說是不可見的)。當一個代理服務器能夠代理外部網絡上的主機訪問內部網絡時,這種代理的方式稱為反向代理。
反向代理就是通常所說的WEB服務器加速,它是一種通過在繁忙的WEB服務器和外部網絡之間增加一個高速的WEB緩沖服務器來降低實際的WEB服務器的負載的一種技術。反向代理是針對WEB服務器提供加速功能的,作為代理緩存,它并不是針對瀏覽器用戶,而針對一臺或多臺特定WEB服務器,它可以代理外部網絡對內部網絡的訪問請求。
反向代理服務器會強制將外部網絡對要代理的服務器的訪問經過它,這樣反向代理服務器負責接收客戶端的請求,然后到源服務器上獲取內容,把內容返回給用戶并把內容保存到本地,以便日后再收到同樣的信息請求時,它會把本地緩存里的內容直接發給用戶,以減少后端WEB服務器的壓力,提高響應速度,代理的服務器對外部網絡來說是不可見的。
反向代理服務器的工作流程歸納如下:
1.用戶通過域名發出訪問WEB服務器的請求,該域名被DNS服務器解析為反向代理服務器的IP地址,因此用戶的請求被重定向到反向代理服務器。
2.反向代理服務器接受用戶的請求。
3.反向代理服務器在本地緩存中查找請求的內容,找到后直接把內容發送給用戶。
4.如果本地緩存里沒有用戶所請求的信息內容,反向代理服務器會代替用戶向源WEB服務器請求同樣的信息內容,并把信息內容轉發給用戶,如果信息內容是可緩存的還會把它保存到緩存中。
實施反向代理,只要將反向代理服務器放置在要代理的WEB服務器前端并在DNS系統中將要代理的服務器域名解析為反向代理服務器IP地址(達到強制將外部網絡對要代理服務器的訪問經過反向代理服務器的目的)即可,如圖1所示:
在企業的電子商務網站建設中采用反向代理技術后,解決了網站服務器對外可見的問題,還有如下幾個突出優點:
1.節約了有限的IP地址資源。企業內所有的網站共享一個在Internet中注冊的IP地址,這些服務器分配私有地址,采用虛擬主機的方式對外提供服務。
2.保護了真實的WEB服務器。企業內所有網站服務器對外都不可見,外網只能看到反向代理服務器,而反向代理服務器上并沒有存放實際的資源,因此,可以保證真實WEB服務器上資源的安全。
3.加快了對網站的訪問速度,減輕WEB服務器的負擔。反向代理服務器具有緩存網頁的功能,如果用戶需要的內容在緩存中,則可以直接從代理服務器中取得,減輕了WEB服務器的負荷,同時也加快了用戶的訪問速度。
三、反向代理服務器的部署
目前,能夠實現反向代理的軟件有很多,但用的最多還是由美國政府大力助的Squid開源免費軟件,該軟件可運行在任何平臺上,本文選擇Linux操作系統來部署Squid,因為Linux系統也是開源免費的。
1.Squid軟件的獲取。可以從http://www.squid-cache.org網站下載squid軟件的最新版本,本文下載的是squid-2.6.STABLE13.tar.gz。
2.Squid軟件的安裝。
(1)將獲取的文件squid-2.6.STABLE13.tar.gz拷貝到/tmp目錄;
(2)解壓該文件,運行tar xvzf squid-2.6.STABLE13.tar.gz命令,在/tmp目錄中生成名為squid-2.6.STABLE13的目錄;
(3)進入該目錄,執行./configure,系統缺省將軟件安裝在/usr/local/Squid目錄,用戶也可以用--prefix=目錄,指定安裝目錄;
(4)運行make;
(5)運行make install;
(6)如沒有錯誤,安裝結束,Squid的可執行文件在安裝目錄的bin子目錄下,配置文件在ctc子目錄下。
3.Squid軟件的配置。通過squid配置反向代理主要就是配置“squid.conf”這個配置文件,Squid2.6中和反向代理配置相關的主要包含以下三項(詳細配置可參考http://www.squid-cache.org):
(1)http_port 配置反向代理服務器的IP地址(和外網相連地址)和監聽端口http_port 202.115.144.30:80 vhost vport。
(2)cache_peer配置內部的WEB服務資源,該資源可以是真實WEB服務器的IP地址,也可以是的域名(內部可見的域名),一般都采用IP地址,需要反向代理幾個WEB服務器就要有幾個對應。的配置cache_peer 192.168.1.254 parent 80 0 no-query originserver
(3)cache_peer_domain指定對外部發布的資源(外網可見的域名)與真實資源的對應關系,同樣,需要反向代理幾個WEB服務器就要有幾個對應的配置cache_peer_domain 192.168.1.254 www.example.com。
4.DNS系統的配置。在DNS服務器中將所有需要代理的真實WEB服務器的域名對應于反向代理服務器的IP地址www.example.com IN A 202.115.144.30,經過這樣對Squid配置和DNS的修改后,對www.example.com的訪問都會由反向代理服務器202.115.144.30定向到192.168.1.254這臺真實的WEB服務器。
四、反向代理服務器的安全
Squid本身不具有認證程序,但是可以通過外部認證程序來實現用戶認證,最常用的是采用NCSA認證,因為NCSA認證是Squid源代碼包自帶的一個外部認證程序。操作方法如下:
1.cd /tmp/squid-2.6.STABLE13/auth-modules/NCSA。
2.make;make install。
3.編譯成功后,會生成ncsa-auth的可執行文件,拷貝生成的執行文件ncsa-auth到/usr/local/squid/bin目錄cp ncsa_auth /usr/local/squid/bin。
4.修改squid.conf中的相關選項如下所示:
Authenticate_program /usr/local/squid/bin/ncsa_auth /usr/local/squid/etc/passwd。
5.定義相關的用戶類acl auth_user proxy_auth REQUIRED。
注意,REQUIRED關鍵字指明了接收所有合法用戶的訪問。
6.設置http_access。
http_access allow auth_user。
7.利用apache攜帶的工具軟件htpasswd在/usr/local/squid/etc下生成密碼文件并添加相應的用戶信息,該密碼文件每行包含一個用戶的用戶信息,即用戶名和密碼; htpasswd -c /usr/local/squid/etc/passwd test test。這樣就在密碼文件passwd中添加用戶和密碼都是test的用戶。然后重新啟動Squid,密碼認證就生效了,訪問代理服務器就需要輸入賬號和密碼。
五、結束語
反向代理方式不單是一種WEB服務器加速器,而且使也一種對外提供WEB發布時使用的有效的防火墻技術,使用它不但能節約緊缺的IP地址資源,加速WEB服務器的訪問速度,而且能夠保護WEB服務器,因此能夠適應多種應用場合,特別是應用在電子商務這種對安全要求特別高的場合。
參考文獻:
[1]何世曉田鈞:Linux系統管理員.北京:機械工業出版社, 2007
[2]孫青:代理服務器安裝配置與應用.北京:冶金工業出版社,2002
[3]http://www.squid-cache.org