◆趙凱
基于云環境的代理服務研究
◆趙凱
(北京電子科技職業學院 北京 100176)
網絡改變了人們的生活,給人們的生活帶來了諸多便利,云計算和大數據技術的應用加速了技術的革新,越來越多的數據走上云端,客戶享受的服務越來越豐富,同時網絡中的安全問題日益突出,解決安全問題的方案及設備較多,本文針對最為廣泛的Web應用,提出性價比較高的解決方案,即增加安全網關,用代理技術提高網絡的安全性能,文中對代理服務的類型及工作過程予以闡述,結合流行的代理服務軟件,給出了具體的實現過程。
代理;信息安全;防火墻
網絡技術的發展正在改變著人們的生活,網絡已經成為生活中不可或缺的一部分,通過網絡可以方便獲取想要的信息,方便彼此間的溝通,提高效率。云計算技術推動了網絡技術的加速發展,在享受云服務帶來便利的過程中,安全問題日益突出,網絡中的信息和設備成了不法分子攻擊的主要目標。提高安全意識,安裝防火墻,設置合理的安全策略以及定期殺毒成了主要的防范措施,其中防火墻技術是最廣泛的安全應用之一。防火墻的主要作用是控制網絡之間的數據流動,防止網絡外部用戶以非法手段進入內部網絡,保護網絡內部的操作系統及網絡設備,對網絡間傳輸的數據進行檢查并監控網絡的運行狀態,從而保護內部網絡數據的安全。
常見的防火墻產品有堡壘主機、通用防火墻、包過濾路由器、安全網關等[1],其中安全網關又以代理服務器為代表。
代理服務器(proxy server)作為內網和外網的橋梁在實際應用中發揮著非常重要的作用[2],相當于網絡信息的中轉站,可以用作防火墻,負責轉發合法網絡信息,并對轉發的信息進行檢查和控制,將代理服務器放在云端,可以有效隱藏云中的主機信息,如圖1所示。

圖1 代理服務器
根據用途,代理服務器可以分為以下幾類:
(1)Web代理:代理客戶機的HTTP或HTTPS訪問,常用的端口為80、8080、3128、443等。
(2)FTP代理:代理客戶機訪問FTP服務器,常用的端口為21。
(3)RTSP代理:代理客戶機訪問流媒體服務器,端口為554。
(4)SOCKS代理:分為SOCK4和SOCK5兩種,是一個C/S環境的代理協議,SOCKS代理可以快速傳輸數據包,對傳輸數據的應用協議不敏感,傳遞數據包的速度高于其他類型的代理服務。
根據使用方式可以分為正向代理、反向代理及透明代理。
(1)正向代理:其功能類似于防火墻,可以屏蔽掉指定的網站,需要在客戶機中設置代理服務器的地址及端口,客戶的請求會由代理服務器轉發給目標資源,再將目標資源的響應轉發給客戶端。
(2)反向代理:對外表現為真實的服務器[3],其作用是接收來自網絡的數據,將這些數據轉發給內部網絡,同時將內部網絡的響應數據轉發給客戶端,反向代理設置在服務器端,客戶端不需要設置,反向代理經常用于負載平衡、緩存靜態內容、安全外網發布等。
(3)透明代理:對客戶端透明,客戶端需要設置正確的DNS信息并將網關設置為透明代理的地址即可,透明代理與正向代理類似,用于攔截客戶端發送的數據并代為訪問服務器,將獲得的響應再轉發給客戶端。
Web代理服務是以HTTP協議為基礎的,是建立在TCP/IP協議應用層上的一種服務類型,代理服務器作為外網和內網的緩沖地帶,對網絡安全起到了非常重要的作用。對于Web客戶端,代理服務器扮演的是服務器角色,接收請求報文,返回響應報文;對于Web服務器,代理服務器扮演的是客戶端角色,發送Web請求報文,接收Web響應報文。代理服務器的工作過程如下:
(1)客戶端將請求數據發送給代理服務器。
(2)代理服務器根據策略檢查客戶端請求的合法性,如請求合法則檢索自己的數據,如請求不合法則拒絕請求。如果代理服務器中有相應的數據,則將結果直接返回給客戶端;如果代理服務器沒有符合要求的數據,代理服務器會代替客戶端向網絡中其他服務器提出請求并與網絡中的其他服務器進行交互。
(3)代理服務器將獲取的數據存儲在本地并把相應的數據轉發給客戶端。
代理服務作為提高網絡安全的主要方法被廣泛應用于網絡環境中,根據應用場景的不同將其功能總結為以下幾點:
(1)隱藏IP地址,提高網絡安全性能
代理服務器可以減少對IP地址數量的需求并可以隱藏內部IP地址,外部網絡只能看到代理服務器,從而減少內部網絡被攻擊的概率。代理服務器對內部網絡起到了較好的屏障作用。
(2)提高訪問速度
代理服務器需要有較大的磁盤空間作為緩沖區,當用戶訪問外部網絡資源時,會先在代理服務器的緩沖區中查找,如果能找到,則由代理服務器將數據傳輸給用戶,如找不到,則代理服務器會到外網查找,將數據返給客戶的同時也會將找到的資源存儲于自己的緩沖區中,方便用戶的下一次查詢,由于信息是從代理服務器傳輸給用戶,減少了到網絡中查找相關資源的過程,從而節約了帶寬,提高了訪問速度。
(3)對信息進行監控,控制流量
代理服務器可以設置用戶驗證和記賬功能,只有得到合法授權的用戶才可以訪問Internet,同時代理服務器可以控制這些用戶訪問哪些服務,在什么時間內訪問這些服務等,通過這些控制也可以實現用戶流量的計費功能。通過代理服務器還可以過濾Internet與內網間的數據信息并對用戶的行為進行監控。
代理服務可以由硬件實現也可以由軟件實現,提供代理服務的軟件較多,下面對常用代理軟件做一介紹。
(1)Wingate:是一個綜合互聯網網關和通信服務器的軟件,應用于Windows平臺,是集控制、安全和通信的企事業級軟件,可以支持絕大多數類型的網絡連接,允許多個用戶同時上網,可以實現Internet共享、訪問控制及防火墻功能。
(2)Microsoft Proxy Server:微軟代理服務器,應用于Windows平臺,包括Web Proxy服務器、Winsock 服務器和Socks Proxy服務器,安裝簡單,可以很好利用Windows Server內建的安全性,允許網絡管理員對進入網絡或來自Internet的訪問做出有效控制,支持全部的Internet協議。
(3)WinProxy:功能強大,方便易用,支持透明代理,應用于Windows平臺,可以實現復雜的用戶控制、緩存與防火墻技術及NAT技術,除保護局域網不受外來攻擊外還提供了防病毒保護。WinProxy可以阻塞廣告,通過黑名單或白名單方式過濾站點,調整用戶的流量。
(4)WinRoute:應用于Windows平臺的代理軟件,除實現代理功能外,該軟件還提供了NAT功能及DHCP功能,網絡功能強大,但幫助系統不完善,操作界面較簡單。
(5)Squid:一款高性能的代理緩存服務器軟件,應用于Unix/Linux平臺,支持FTP、Https、Gopher等協議,能夠實現正向代理、反向代理及透明代理應用,可用于網絡服務器的前置Cache服務器來提高Web服務器的速度,也可用于流量的控制和數據的審計,還可用作防火墻提高安全性能,是應用廣泛的自由軟件。
(6)Varnish:是一款高性能的反向代理服務器和HTTP加速器軟件,主要應用于Unix/Linux平臺,支持多種協議,支持對虛擬內存的使用,可以控制緩存的時間屬性,具有速度快,管理方便等特點,是應用廣泛的自由軟件。
(7)Nginx:是一款高性能的HTTP和反向代理Web服務器軟件,也可作為電子郵件代理服務器,由俄羅斯設計師開發,主要應用于Unix/Linux平臺,支持多種協議,軟件的穩定性非常好,對系統資源占用較少,適合用作并發量較大的前臺服務器場景,具有負載均衡功能,是優秀的自由軟件。
代理服務作為提高網絡安全性能的重要措施之一得到了廣泛的應用,常見的代理服務軟件有Microsoft Proxy,Microsoft ISA,WinProxy、WinGate、WinRoute、Squid、Nginx等,本文基于Linux系統以Squid軟件為例,實現代理服務,控制客戶機對Web服務器的訪問,如圖2所示,圖中各設備的地址詳見表1。

圖2 代理應用舉例

表1 設備地址表
配置分別在Web服務器、代理服務器及客戶機中完成,演示的代理功能的使用,具體操作如下:
(1)指定Web服務器IP地址
[root@localhost ~]# ifconfig eth0 200.1.1.200 netmask 255.255.255.0
(2)指定默認網頁
[root@localhost ~]# echo this is Web site > /var/www/html/index.html
(3)啟動Web服務器
[root@localhost ~]# service httpd start
(1)指定代理服務器IP地址
[root@localhost ~]# ifconfig eth0 192.168.1.100 netmask 255.255.255.0
[root@localhost ~]# ifconfig eth1 200.1.1.100 netmask 255.255.255.0
(2)安裝代理服務軟件
[root@localhost ~]# yum install squid –y
(3)配置代理服務
[root@localhost ~]# vim /etc/squid/squid.conf
修改參數:http_access allow all
http_port 3128
(4)啟動代理服務
[root@localhost ~]# service squid start
(5)檢查代理服務的運行情況
[root@localhost ~]# netstat -anpt | grep "squid"
tcp 0 0 :::3128:::* LISTEN 2963/(squid)
(6)設置地址轉換
[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT --to-source 200.1.1.100
[root@localhost ~]# iptables -t nat -A PREROUTING -i eth1:1 -d 200.1.1.100 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100
(1)設置代理服務器
在客戶端中可以使用firefox瀏覽器也可以使用curl命令完成,以firefox為例,設置代理服務器地址及端口,路徑為“編輯”à“首選項”à“網絡”à“設置”,如圖3所示。

圖3 客戶端設置
(2)測試
在瀏覽器中輸入Web服務器的地址,如代理服務配置正確,則可以看到圖4的結果。

圖4 配置成功截圖
如果代理服務器配置不正確,則會出現圖5的結果。

圖5 客戶配置失敗截圖
針對Web的應用越來越廣泛,結合日益突出的網絡安全問題,使用代理服務提高網絡安全性能是最為常見也是性價比最高的方法,代理服務器具有防火墻的功能,按使用方式可以分為正向代理、反向代理和透明代理,不同的代理方式,其工作原理略有差異,正向代理更多用于控制內網對外網的訪問,反向代理更多用于負載均衡及安全外網發布等,透明代理功能與正向代理類似,但比正向代理應用更加廣泛,通過代理服務器的方法可以有效提高網絡安全,這也是針對Web安全最廣泛最重要的防護措施之一。
[1]張馨蕊.論防火墻技術在計算機網絡安全中的應用[J].電腦編程技巧與維護,2021(1):18.
[2]陳志鵬,張鵬,等.一種基于多維特征分析的網頁代理服務發現方法[J].信息安全學報,2018(07):15.
[3]粟毅.Linux系統下Web網站服務器反向代理設計與實現[J].信息與電腦(理論版),2018(09):25.
北京電子科技職業學院院內課題“基于云計算的代理技術研究”(編號:2020Z076-KXY)