1. 程式人生 > >ubuntu 使用代理伺服器 squid

ubuntu 使用代理伺服器 squid

一、代理伺服器

簡介:

  代理伺服器是目前網路中常見的伺服器之一,它可以提供檔案 快取、複製和地址過濾等服務,充分利用有限的出口頻寬,加快 內部主機的訪問速度,也可以解決多使用者需要同時訪問外網但公 有IP地址不足的問題。同時可以作為一個防火牆,隔離內網與外 網,並且能提供監控網路和記錄傳輸資訊的功能,加強區域網的 安全性等。它的主要作用有以下幾點。 1.共享網路 2.加快訪問速度,節約通訊頻寬 3.防止內部主機受到攻擊 4.限制使用者訪問,完善網路管理

原理: 

① 客戶端A向代理伺服器提出訪問Internet的請求。 ② 代理伺服器接受到請求後,首先與訪問控制列表中的訪問規則相對照

,如果滿足規則,則在快取中查詢是否存在需要的資訊。 ③ 如果快取中存在客戶端A需要的資訊,則將資訊傳送給客戶端。如果不存在,代理伺服器就代替客戶端向Internet上的主機請求指定的資訊。 ④ Internet上的主機將代理伺服器的請求資訊傳送到代理伺服器中,同時代理伺服器會將資訊存入快取中。 ⑤ 代理伺服器將Internet上主機的迴應資訊傳送給客戶端A。 ⑥ 客戶端B向代理伺服器提出相同的請求。 ⑦ 代理伺服器也首先與訪問控制列表中的訪問規則相對照。 ⑧ 如果滿足規則,則將快取中的資訊傳送給客戶端B。

image

二、squid簡介  

  Squid是Linux和UNIX平臺下最為流行的高效能免費應用 層代理伺服器,它具有許可權管理靈活、效能高和效率快等特 點。Squid是一個由眾多在網際網路上的開發人員共同努力完 成的高效能的代理緩衝伺服器,它的具體開發是由國家網路 應用研究室(the National Laboratory for Applied Network Research)的Duane Wessels主持,由NSF出資支援的。     Squid的另一個優越性在於它使用訪問控制列表(ACL)

訪問許可權列表(ARL)進行許可權管理內容過濾。訪問控 制清單和訪問許可權清單通過阻止特定的網路連線來減少潛在 的Internet非法連線,可以使用這些清單來確保內部網的主 機無法訪問有威脅的或不適宜的站點。

三、CDN簡介:

image

image

image

image

image

image 

image

image 

檔案下載加速服務:

image

四、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域名。

型別選項

image 

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

六、具體案例

案例一:傳統代理:

image

介紹:

代理伺服器(squid):Red Hat Linux 5.4

(eth1 :Host-only 到vmware1 

   eth0: Bridged 到本地連線)

內網主機:windows xp  (虛擬機器Host-only)

實機(windows 7)通過無線路由器直接上網!

1.用setup配網路引數:

imageimageimageimageimage

2. 安裝squid

[[email protected] ~]# mkdir /mnt/cdrom

[[email protected] ~]# mount /dev/cdrom /mnt/cdrom mount: block device /dev/cdrom is write-protected, mounting read-only

image

[[email protected] 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的主配置檔案

[[email protected] 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也不用配置(無需地址解析)

image

3.2 代理設定

IE 右擊屬性----連線-----區域網(LAN)設定

image

3.3 參考文件:

image

image

3.4 主檔案配置:

[[email protected] Server]# ll /var/spool/squid/ total 0

說明:squid還沒有被初始化!

[[email protected] Server]# vim /etc/squid/squid.conf

image 修改成:

image

image

image

3.5 支援代理的軟體

瀏覽器支援代理、聊天工具(qq支援代理)、下載工具(如:網路螞蟻):

登陸時設定:

image 

image 

3.6 客戶機訪問外網測試:

image

image 該為允許所有!

image image

重新整理頁面

image 

[[email protected] Server]# tail -f /var/log/squid/ access.log  cache.log   squid.out   store.log   [[email protected] Server]# tail -f /var/log/squid/access.log

t_search_word_style/piddomain.js - DIRECT/220.181.124.108 application/x-javascript 1346398516.767  17157 192.168.2.22 TCP_MISS/000 0 GET http://www.gougou.com/js/input-ac.js - DIRECT/www.gougou.com - 1346398516.767  17188 192.168.2.22 TCP_HIT/000 0 GET http://www.gougou.com/ - DIRECT/www.gougou.com -

修改squid.conf 檔案,避免其他人使用此代理伺服器訪問外網!

squid.confimage 

image 

型別參考:

image

4.代理伺服器安全應用測試:

4.1.拒絕某個人:禁止IP地址為192.168.2.22的客戶機上網。

image

允許其他人:

image

[[email protected] Server]# service squid restart

測試:日誌監視:

[[email protected] ~]# tail -f /var/log/squid/access.log

1346401928.431      2 192.168.2.22 TCP_DENIED/403 1415 GET http://www.baidu.com/ - NONE/- text/html 1346401938.105      1 192.168.2.22 TCP_DENIED/403 1417 GET http://www.google.com/ - NONE/- text/html

image

換了個ip,就能正常上網!(參考日誌資訊)

1346402102.080    897 192.168.2.21 TCP_MISS/302 934 GET http://www.google.com/ - DIRECT/74.125.71.106 text/html 1346402106.243   4162 192.168.2.21 TCP_MISS/302 648 GET http://www.google.com.hk/url? - DIRECT/74.125.71.199 text/html 1346402109.660   3416 192.168.2.21 TCP_MISS/200 169690 GET http://www.google.com.hk/ - DIRECT/74.125.71.199 text/html 1346402113.359   3596 192.168.2.21 TCP_MISS/404 1310 GET http://www.google.com.hk/compressiontest/gzip.html - DIRECT/74.125.71.199 text/html

4.2 拒絕某個網段的人:禁止192.168.2.0這個子網裡所有的客戶機上網。 image

任選該網段的三個ip段作為測試:

1346402829.564      4 192.168.2.21 TCP_DENIED/403 1415 GET http://www.baidu.com/ - NONE/- text/html 1346402881.349      2 192.168.2.1 TCP_DENIED/403 1417 GET http://www.gougou.com/ - NONE/- text/html 1346402926.390      2 192.168.2.254 TCP_DENIED/403 1415 GET http://www.baidu.com/ - NONE/- text/html

4.3 拒絕訪問某個ip的網站   禁止使用者訪問IP地址為119.75.218.77的網站

image 

主配置檔案的590行!

image

image

image

以上證明:拒絕ip,卻拒絕不了訪問該網站,因為一個伺服器可對應於多個ip

4.4 拒絕訪問帶某個域名的網站 :禁止使用者訪問域名包含有sina.com的網站。

image 

日誌資訊:

1346407353.802     12 192.168.2.22 TCP_DENIED/403 1413 GET http://www.sina.com/ - NONE/- text/html 1346407365.210      3 192.168.2.22 TCP_DENIED/403 1415 GET http://news.sina.com/ - NONE/- text/html

4.5 禁止使用者訪問域名包含有sex關鍵字的URL。

image

image 

4.6  禁止使用者訪問域名為 www.163.com的網站 acl baddomain1 dstdomain -i www.163.com http_access deny baddomain1

image

image

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

下班時間可以正常上網:

[[email protected] ~]# date Fri Aug 31 18:37:49 CST 2012

image

調整為上班時間:

[[email protected] ~]# date 083112302012 Fri Aug 31 12:30:00 CST 2012

日誌資訊:

1346387408.908      1 192.168.2.22 TCP_DENIED/403 1415 GET http://www.baidu.com/ - NONE/- text/html

image

4.9 禁止客戶機下載*.mp3、*.exe、*.zip和*.rar型別的檔案image

測試:迅雷中:

image

禁止的是用下載工具下載如(迅雷)如果網頁上直接儲存,可以下載! 4.10 禁止QQ通過Squid代理上網。 acl qq url_regex -i tencent.com http_access deny qq

正常情況下,qq工具只要設定代理方式中的任意一種也可登陸qq

image 

qq已無法正常登陸!

image