一、代理伺服器
簡介:
代理伺服器是目前網絡中常見的伺服器之一,它可以提供檔案
緩存、複制和位址過濾等服務,充分利用有限的出口帶寬,加快
内部主機的通路速度,也可以解決多使用者需要同時通路外網但公
有IP位址不足的問題。同時可以作為一個防火牆,隔離内網與外
網,并且能提供監控網絡和記錄傳輸資訊的功能,加強區域網路的
安全性等。它的主要作用有以下幾點。
1.共享網絡
2.加快通路速度,節約通信帶寬
3.防止内部主機受到攻擊
4.限制使用者通路,完善網絡管理
原理:
① 用戶端A向代理伺服器提出通路Internet的請求。
② 代理伺服器接受到請求後,首先與通路控制清單中的通路規則相對照,如果滿足規則,則在緩存中查找是否存在需要的資訊。
③ 如果緩存中存在用戶端A需要的資訊,則将資訊傳送給用戶端。如果不存在,代理伺服器就代替用戶端向Internet上的主機請求指定的資訊。
④ Internet上的主機将代理伺服器的請求資訊發送到代理伺服器中,同時代理伺服器會将資訊存入緩存中。
⑤ 代理伺服器将Internet上主機的回應資訊傳送給用戶端A。
⑥ 用戶端B向代理伺服器提出相同的請求。
⑦ 代理伺服器也首先與通路控制清單中的通路規則相對照。
⑧ 如果滿足規則,則将緩存中的資訊傳送給用戶端B。
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_13464152630BoJ.png"></a>
二、squid簡介
Squid是Linux和UNIX平台下最為流行的高性能免費應用
層代理伺服器,它具有權限管理靈活、性能高和效率快等特
點。Squid是一個由衆多在網際網路上的開發人員共同努力完
成的高性能的代理緩沖伺服器,它的具體開發是由國家網絡
應用研究室(the National Laboratory for Applied Network
Research)的Duane Wessels主持,由NSF出資支援的。
Squid的另一個優越性在于它使用通路控制清單(ACL)
和通路權限清單(ARL)進行權限管理和内容過濾。通路控
制清單和通路權限清單通過阻止特定的網絡連接配接來減少潛在
的Internet非法連接配接,可以使用這些清單來確定内部網的主
機無法通路有威脅的或不适宜的站點。
三、CDN簡介:
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_13464152688ytf.png"></a>
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415273S4v1.png"></a>
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415278PEqK.png"></a>
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415283WHap.png"></a>
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415291vk32.png"></a>
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415306NlRP.png"></a>
檔案下載下傳加速服務:
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415316dijh.png"></a>
四、Web緩存的類型和特點:
Web緩存的位置可以有三種,一是可以防止在用戶端,二是放在伺服器,三是放在用戶端與伺服器之間的某個網絡節點上,這個網絡節點就是web代理伺服器。
1 用戶端緩存
2 代理伺服器緩存
3 伺服器緩存
三種典型的代理方式
1 傳統代理
2 透明代理
3 反向代理
五、配置簡介
1.檢視是否已安裝squid
Red Hat Enterprise Linux 5安裝程式預設沒有安裝Squid
服務,讀者可以使用下面的指令檢查系統是否已經安裝了
Squid服務或檢視已經安裝了何種版本。
rpm -q squid
2.Squid代理服務的基本配置
2.1 Squid主配置檔案是/etc/squid/squid.conf ,最基本的設定如下。
http_port 192.168.16.1:8080
cache_mem 64 MB
cache_dir ufs /var/spool/squid 4096 16 256
cache_effective_user squid
cache_effective_group squid
dns_nameservers 61.144.56.101
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
visible_hostname 192.168.16.1
cache_mgr [email protected]
acl all src 0.0.0.0/0.0.0.0
http_access allow all
2.2 acl選項的格式如下:
acl清單名稱 清單類型 [-i] 清單值
清單名稱:用于區分Squid的各個通路控制清單,任何兩個通路控制清單不能用相同的清單名。雖然清單名稱可以随便定義,但為了避免以後不知道這條清單是幹什麼用的,應盡量使用有意義的名稱,如badurl、clientip和work time等。
清單類型:是可被Squid識别的類别。Squid支援的控制類别很多,可以通過IP位址、主機名、MAC位址和使用者/密碼認證等識别使用者,也可以通過域名、域字尾、檔案類型、IP位址、端口和URL比對等控制使用者的通路,還可以使用時間區間對使用者進行管理
-i選項:表示忽略清單值的大小寫,否則Squid是區分大小寫的。
清單值:針對不同的類型,清單值的内容是不同的。例如,對于類型為src或dst,清單值的内容是某台主機的IP位址或子網位址;對于類型為time,清單值的内容是時間;對于類型為srcdomain和dstdomain,清單值的内容是DNS域名。
類型選項
2.3 http_access 的使用
Squid會針對客戶HTTP請求檢查http_access規則,
定義通路控制清單後,就使用http_access選項根據訪
問控制清單允許或禁止通路了。
該選項的基本格式為:
http_access [allow | deny] 通路控制清單名稱
? [allow | deny]:定義允許(allow)或禁止(deny)通路控制清單定義的内容。
? 通路控制清單名稱:需要http_access控制的ACL名稱
2.4 初始化Squid
1.建立Squid使用硬碟緩沖區的目錄結構
/usr/sbin/squid –z
2.設定Squid錯誤提示資訊為中文
在Squid的主配置檔案/etc/squid/squid.conf中添加下
列語句,并使用指令“/etc/init.d/squid reload”重新載
入配置檔案
error_directory /usr/share/squid/errors/Simplify_Chinese
2.5啟動和停止代理伺服器
1.啟動代理服務
/etc/init.d/squid start
2.停止代理服務
/etc/init.d/squid stop
3.重新啟動代理服務
/etc/init.d/squid restart
4.重新載入配置檔案
/etc/rc.d/init.d/squid reload
六、具體案例
案例一:傳統代理:
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415331UrDl.png"></a>
介紹:
代理伺服器(squid):Red Hat Linux 5.4
(eth1 :Host-only 到vmware1
eth0: Bridged 到本地連接配接)
内網主機:windows xp (虛拟機Host-only)
實機(windows 7)通過無線路由器直接上網!
1.用setup配網絡參數:
2. 安裝squid
[root@gjp99 ~]# mkdir /mnt/cdrom
[root@gjp99 ~]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415343voGv.png"></a>
[root@gjp99 Server]# rpm -ql squid |less
檢視注釋語句:
/etc/httpd/conf.d/squid.conf //和Apache的代理捆綁在一起
/etc/pam.d/squid //支援pam
/etc/rc.d/init.d/squid //獨立守護程序
/etc/squid/squid.conf // squid的主配置檔案
[root@gjp99 Server]# grep -v "^#" /etc/squid/squid.conf |grep -v "^$"
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all 預設拒絕所有
icp_access allow all
http_port 3128 代理伺服器的監聽端口,最好在前面寫上具體ip位址,
hierarchy_stoplist cgi-bin ?
access_log /var/log/squid/access.log squid
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
coredump_dir /var/spool/squid
3.測試機配置:
3.1 配ip
走代理,dns也不用配置(無需位址解析)
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415346HaBT.png"></a>
3.2 代理設定
IE 右擊屬性----連接配接-----區域網路(LAN)設定
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415348jw55.png"></a>
3.3 參考文檔:
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415354Tjcy.png"></a>
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415361fKGh.png"></a>
3.4 主檔案配置:
[root@gjp99 Server]# ll /var/spool/squid/
total 0
說明:squid還沒有被初始化!
[root@gjp99 Server]# vim /etc/squid/squid.conf
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415367g2PY.png"></a>
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415368rC6E.png"></a>
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415370I6So.png"></a>
3.5 支援代理的軟體
浏覽器支援代理、聊天工具(qq支援代理)、下載下傳工具(如:網絡螞蟻):
登陸時設定:
3.6 客戶機通路外網測試:
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415391DNK3.png"></a>
重新整理頁面
[root@gjp99 Server]# tail -f /var/log/squid/
access.log cache.log squid.out store.log
[root@gjp99 Server]# tail -f /var/log/squid/access.log
t_search_word_style/piddomain.js - DIRECT/220.181.124.108 application/x-javascript
修改squid.conf 檔案,避免其他人使用此代理伺服器通路外網!
類型參考:
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_13464154013c1A.png"></a>
4.代理伺服器安全應用測試:
4.1.拒絕某個人:禁止IP位址為192.168.2.22的客戶機上網。
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415402vor8.png"></a>
允許其他人:
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415403S1pA.png"></a>
[root@gjp99 Server]# service squid restart
測試:日志監視:
[root@gjp99 ~]# tail -f /var/log/squid/access.log
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415403P0SB.png"></a>
換了個ip,就能正常上網!(參考日志資訊)
4.2 拒絕某個網段的人:禁止192.168.2.0這個子網裡所有的客戶機上網。
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415405ydbM.png"></a>
任選該網段的三個ip段作為測試:
4.3 拒絕通路某個ip的網站 禁止使用者通路IP位址為119.75.218.77的網站
主配置檔案的590行!
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415408CHjs.png"></a>
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415409a5pe.png"></a>
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415410T8EI.png"></a>
以上證明:拒絕ip,卻拒絕不了通路該網站,因為一個伺服器可對應于多個ip
4.4 拒絕通路帶某個域名的網站 :禁止使用者通路域名包含有sina.com的網站。
日志資訊:
4.5 禁止使用者通路域名包含有sex關鍵字的URL。
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415412jT6I.png"></a>
acl baddomain1 dstdomain -i www.163.com
http_access deny baddomain1
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415417w8RX.png"></a>
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415418Pn8D.png"></a>
4.7 限制IP位址為192.168.2.100的客戶機并發最大連接配接數為5。
acl clientip1 src 192.168.2.100
acl conn5 maxconn 5
http_access deny client1 conn1
4.8 禁止192.168.2.0這個子網裡所有的客戶機在周一到周五的9:00到18:00上網。
acl clientnet1 src 192.168.2.0/255.255.255.0
acl worktime time MTWHF 9:00-18:00
http_access deny clientnet1 worktime
下班時間可以正常上網:
[root@gjp99 ~]# date
Fri Aug 31 18:37:49 CST 2012
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415419nnGJ.png"></a>
調整為上班時間:
[root@gjp99 ~]# date 083112302012
Fri Aug 31 12:30:00 CST 2012
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415420biOS.png"></a>
4.9 禁止客戶機下載下傳*.mp3、*.exe、*.zip和*.rar類型的檔案。
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415421L5tC.png"></a>
測試:迅雷中:
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415421OLdb.png"></a>
禁止的是用下載下傳工具下載下傳如(迅雷)如果網頁上直接儲存,可以下載下傳!
4.10 禁止QQ通過Squid代理上網。
acl qq url_regex -i tencent.com
http_access deny qq
正常情況下,qq工具隻要設定代理方式中的任意一種也可登陸qq
qq已無法正常登陸!
<a href="http://5645432.blog.51cto.com/attachment/201208/31/5635432_1346415987sn6l.png"></a>
本文轉自 gjp0731 51CTO部落格,原文連結:http://blog.51cto.com/guojiping/978839