squid 的配置詳解 (轉)--SeriesV

squid 的配置詳解 (轉)--SeriesV 收藏
  
SquidProxy的存取控制
 
基本存取控制
在SQUID裏,Access Control List存取列表簡稱ACL用來在SQUID.CONF裏設置客戶端到代理服務器的權限控制。利用ACL可以將不同性質的客戶端分類,以方便管理,也能對某個已經定義的ACL羣組,限制其與代理服務器的聯機。爲什麼可以輕易限制所定義的ACL羣組呢?因爲SQUID代理服務器的運行,需要通過HTTP,ICP等通訊協議,所以可以通過,
HTTP_ACESS ALLOW | DENY ACLNAME
ICP_ACCESS ALLOW | DENY ACLNAME等方式,允許或者拒絕HTTP,ICP達到限制控制的目的
 
在squid裏對客戶端的聯機做存取控制分爲兩個階段進行,第一階段是定義ACL,第二階段是設置ACL存取權限,第一階段定義ACL
在proxy上通過ACL做連接控制
acl member src 192.168.1.10/24
http_access allow member
 
用法:
ACL的定義有以下兩種:
1 acl acl名稱 ACL類型 字符串1 字符串2...(ACLlist)
2 acl acl名稱 ACL類型 “文件的路徑”
說明:
acl命令 ,用來說明要做“存取控制列表”
acl名稱,讀者可以自定義一個acl名稱,如:reject
ACL類型,即做限制的類型。ACL的類型有src,dst,srcdomain,dstdomain,url_pattern,urlpath_pattern,url_regex,urlpath_regex,time,port,proto,method,browser,user等相當多的限制類型
在squid裏面做客戶端的存取控制的定義的時候,最重要的是選擇ACL類型,ACL類型會影響過濾存取的速度,一般建議使用src,dst等以IP地址爲主的ACL類型,在存取規則上會快很多。
 
ACLIST:ACL的List大致可以分爲字符串和文件兩大類,字符串的內容可以是IP地址,FQDN,URL地址,含正則表達式的URL,文件路徑(用雙引號引起來),在所指定的文件裏,再一行一行的寫入ACLLIST
以下針對幾種常用的ACL類型,說明如何完成控制客戶端對SQUID PROXY的聯機限制。
 
1.src限制
這種限制誒行的設置格式如下:
ACL ACL名稱 SRC IP-NETWORK/NETMASK IP-NETWORK/NETMASK
用法:
使用src ACL類型的時候,後面必須是受限制的客戶端的IP地址以及其掩碼,也可以使用CIDR的格式,請注意SRC 是 source(來源)的意思,這種ACL是針對來源客戶端的IP地址進行存取管理,使用src ACL類型的時候不能在後面輸入FQDN
 
acl member src 192.168.1.0/24
主要是用來設定可以使用proxy Server的來源範圍
 
其設置方式如下
acl all src 0.0.0.0/0.0.0.0;ACL名稱爲ALL ,並且限制來源的範圍是0.0.0.0/0.0.0.0(所有)
 
acl local src 127.0.0.1/32 192.168.1.0/255.255.255.0
;這種寫法適合單主機ACL名稱是LOCAL來源範圍是127.0.0.1/32 192.168.1.0/255.255.255.0
 
acl reject src 210.110.0.0/16 163.21.136.100/32
ACL名稱是reject,reject的來源是210.110.0.0/16網域和一個163.21.136.100/32單一主機
 
acl members src 163.21.0.0/16 203.100.77.0/24
ACL的名稱是MEMBER member的來源是163.21.0.0/16 網域 203.100.77.0/24網域
 
SRC限制類型,在squid存取管理裏是運行速度最快的,因此如果需要對下層的客戶或者是squid代理服務器做聯機管理,建議使用src限制類型定義管制的來源對象,這種方式時如果有相當多的來源對象,需不斷將“IP地址/掩碼”加入在src語句後面,不要自動換行,但是加在src語句後面的長度會收到字符串總長度不能超過255字符的限制,因此如果使用src限制的來源對象衆多的時候,請改用第二中方式即 “acl acl名稱 ACL類型 “文件的路徑””來做來源限制,如下所示:
acl members src "/etc/squid/myfriends"
 
接着在/etc/squid/myfriends文件裏,將源IP地址/掩碼,一行,一行寫入,如
163.21.0.0/26
163.21.0.1/32
.................
 
在此強烈建議使用這種方法,這樣可以更加快速的定義受管制的來源對象
 
2http_access命令
定義完ACL之後,暫時還無法對聯機的客戶端做存取控制,必須進入第二個階段,用命令http_access設置ACL的存取權限,其語法如下:
用法:
http_access allow|deny acl名稱
 
說明:
1.http_access申明設置ACL存取權限的命令
2.allow|deny 控制權限的方式。allow是允許,deny是拒絕
3.acl名稱:用acl命令定義的acl名稱,如前例的reject,member
以前設置的acl,all,local,reject,member爲例,說明怎樣設置acl的存取權限
 
http_access allow all
上式表示所有的網域都可以聯機到本機的代理服務器,如果要限定特定的聯機客戶端,就要取消以上定義式,而改用
 
#http_access allow all
http_access allow mebmers
 
如果要定義ACL reject所定義的來源範圍,拒絕使用本代理服務器,則可以定義如下:
http_access deny reject
 
在定義ACL存取權限的時候,allow和deny可以一起混用,但是必須注意存取的權限對象的先後順序,在排列存取對象的先後順序時,應當吧權限限制最低的項目放在前面,而權限限制最高的項目放在後面,如下列所示:
 
http_access dney rejector
http_access allow members
http_access allow local
http_access deny all
 
注意,由於members與local的來源範圍有所重複,因此,需將範圍交大的ACL放在範圍較小的ACL的前面,習慣上做ACL存取權限定義的時候,會在定義權限限制的最末行加上“http_access deny all”,以明確的拒絕其他客戶的聯機要求。
 
在用http_access allow(deny)對acl對象做如上例的members做設置的時候,可以使用“!”符號做反向存取控制,如:members的定義是acl members src 163.21.110.0/24,如果設置如下:
http_access allow !members
 
表示客戶端的來源IP只要不是163.21.110.0/24這個IP網域的用戶,都可以使用代理。
 
當設置好存取控制之後,就先存儲,並退出/etc/squid/squid.conf文件,然後讓squid重新獲得配置文件 squid -k reconfigure
 
補充:
讀者可能已經注意到上面的使用http_access allow |deny設置存取權限的時候,acl名稱都只有一個這是因爲在,如果在這個命令後面接多個acl名稱的話,其作用是對member1和member2的交集做存取控制,也就是說,如果這兩個對象如果沒有交集(一般情況)那麼這條存取控制就實效,導致客戶端無法使用代理服務器。如果acl名稱定義的是time類型的存取控制類型,則可以與src,dst,srcdomain,dstdomain,url_pattern,urlpath_pattern,url_regex,urlpath_regex等存取控制類型搭配使用
 
3dst限制類型
 
用法
acl acl名稱 dst ip-network/netmask ip-network/netmask
說明:
dst,就是distance,目的地。使用這種限制類型,可以用來對客戶端要存取的“目的地”做權限控制,dst限制類型的對象是目的地的ip地址/掩碼對
 
範例:
acl sex dst “/etc/squid/sex.list"
acl violence dst 210.96.0.0/16 210.128.1.0/24
http_access deny sex
http_access deny violence
 
上述設置可以用來防止不健康的網站的聯機,不過一般而言,蒐集不健康的網絡的IP比較麻煩,所以通常防止不健康網站聯機的時候,使用dstdomain限制類型較爲方便
 
4srcdomain限制類型
用法:
acl acl名稱 srcdomain 來源網址1 來源網址2.......
說明:
src限制類型適用於來源範圍是IP地址,而srcdomain限制類型則適用於來源範圍是域名或FQDN(完整域名)。
範例:
acl friends srcdomain tp.edu.cn tpc.edu.cn tmtc.edu.cn
acl 客戶s srcdomain "/etc/squid/客戶_list"
http_access allow friends
http_access allow clients
 
上述定義表示,允許來自tp.edu.cn tpc.edu.cn tmtc.edu.cn三個網域,以及客戶_list文件裏所列的域名的主機,使用本機的代理服務器。srcdomain之後通常接“域名”,如:tp.edu.cn。當然,也可以使用單一主機的FQDN,如:proxy.dfes.bj.edu.cn
注意:
用srcdomain限制類型,由於代理服務器要用DNSSERVER做域名解析在做來源範圍過濾時,速度會很慢。
 
5.dstdomain限制類型
用法:
acl acl名稱 dstdomain 目的網域1 目的網域2.......
說明:
dst限制類型適用於目的範圍地址是IP地址,而dstdomain限制類型,則適用於目的範圍是域名或FQDN(完整域名)
 
範例:
acl sex dstdomain "etc/squid/sex.list"
acl violence dstdomain "etc/squid/violence.list"
 
http_access deny sex;拒絕聯機到×××網站
http_access deny violence;拒絕聯機到暴力網站
 
/etc/squid/sex.list文件內容
www.playboy.com
www.sex.com
girl.com
 
dstdomain限制類型由於可對客戶端所要緩衝的目的域做聯機控制,因此非常適用於對不健康網站進行保護。以上例來說,建議讀者將不見看的網域分爲多個ACL,例如SEX,VIOLENCE等,再將不健康的網站一一列在指定的文件裏,如sex.list,violence.list如此一來,就可以很輕鬆的做好限制訪問不健康的網站的工作。
 
6.url_regex限制類型
用法:
acl acl名稱 url_regex URL1 URL2
說明:
dstdomain限制類型對限制不健康網站的訪問很有用,但卻把整個網站都設置爲拒絕聯機,例如很多的著名的商業網站,在提供各類服務的同時也包含×××,暴力等網站的查詢,當進行不見看的網站限制訪問時,不能因爲這個因素將其納入黑名單,必須正對URL地址做控制纔對,但是通過dstdomain限制無法做到的。此時,可改用URL_REGEX限制類型
 
範例:
acl sex1 url_regex^http
//dir.kimo.com/recreation/sex/$
acl sex2 url_regex^http://dir.kimo.com/recreation/sex$
acl violence url_regex "etc/squid/violence.list"
 
http_access deny sex1;拒絕聯機到特定的URL地址
.......
 
URL_REGEX限制類型後面所接的是用正則表達式regular express表示的匹配對象,最簡單的形似是"^URL$",也就是說在URL地址的前面加上^,表示匹配的開頭,在URL的地址後面加上$標識匹配的結尾,請注意,我們在範例中給出的第一和第二個例子是不同的,請注意區分,如果您熟悉正則表達式,那麼可以自己定製相應的URL
 
正則表達式的相關基礎,詳細在網絡上有很多的介紹,在這裏就不再累述了。
 
7.urlpath_regex限制類型
用法
acl acl名稱 urlpath_regex URL1,URL2
 
說明:URL_REGEX限制類型主要適用於匹配網站的URL 如:“http://dir.kimol.com.cn/$" 如果針對某個網頁,文件,圖片的URL地址做存取控制,就得改用urlpath_regex限制類型。urlpath_regex限制類型主要用來對"http://bj.edu/works/js/js001.gif"這種完整的網頁,文件,圖形的URL地址來做存取控制。
範例:
acl dst urlpath_regex
^http://www.bj.edu/works/js001.gif$
 
http_access deny dst1 ;拒絕聯機到特定URL地址
http_access deny dst2 ;拒絕聯機到特定URL地址
 
urlpath_regex限制類型其後所接的也是正則表達式描述的URL地址。最簡單的形式也是:”^URL$",也就是說在URL地址前面加上“^”,標識樣式匹配的開頭,在URL地址的後面加上"$",表示樣式匹配的結果,如“
^http://www.bj.edu/works/js001.gif$”
 
8.time限制類型
用法:
acl acl名稱 time [day-abbrevs] [h1:m1-h2:m2]
說明:
squid的ACL的限制類型,除了前面幾種常用的類型外,還有一種相當特殊的ACL限制類型,TIME限制類型:time限制類型,time限制類型不能單獨使用,必須配合其他限制類型結合使用,使用TIME限制類型的時候,請在 [day-abbrevs]欄填入所控制的“天”(星期幾的英文所寫),如:SM(表示SUNDAY,MONDAY)在[h1:m1-h2:m2]填入控制的時間,用24小時制計算,如:09:00-22:30。以下列出time限制類型用法:
 
#acl aclname time [day-abbrevs] [h1:m1-h2:m2]
#day-abbreves:
#S-Sunday
#M-Monday
#T-Tuesday
#W-Wednesday
#H-Thursday
#F-Friday
#A-Saturday
#h1:m1必須小於h2:m2
 
範例一:
acl members src "/etc/squid/myfriends"
acl Do_work time MTWHF 07:00-20:00
 
http_access allow Do_work members
http_access deny Do_work
 
上例是先用SRC限制類型指定來源範圍的MEMBERS ACL:第二行用TIME限制類型定義限制聯機的時間是:星期一到星期5,每天從早上7點到晚上8點,指定給Do_work ACL:第三行是重點,將Do_work,members放在http_access allow後,表示允許members聯機,且限制在Do_works指定的時間裏
 
範例二
 
acl members src "/etc/squid/myfriends"
acl Do_work time MTWHF 07:00-20:00
acl all src 0.0.0.0/0
acl Don’t_work time s 01:00-02:00
 
http_access deny Dont_work all
http_access allow Do_work members
http_access deny Do_work
 
這個範例,增加了一個設定,是設置每個星期天凌晨1點到2點間不允許所有的客戶端聯機,通常這段時間用來做系統整理LOG文件或者重新啓動SQUID_DEAMON


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zinking3/archive/2007/06/20/1659884.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章