巧用Squid的ACL和访问列表实现高效访问控制
Squid是一個(gè)緩存Internet數(shù)據(jù)的軟件,其接收用戶的下載申請(qǐng),并自動(dòng)處理所下載的數(shù)據(jù)。當(dāng)一個(gè)用戶想要下載一個(gè)主頁時(shí),可以向Squid發(fā)出一個(gè)申請(qǐng),要Squid代替其進(jìn)行下載,然后Squid連接所申請(qǐng)網(wǎng)站并請(qǐng)求該主頁,接著把該主頁傳給用戶同時(shí)保留一個(gè)備份,當(dāng)別的用戶申請(qǐng)同樣的頁面時(shí),Squid把保存的備份立即傳給用戶,使用戶覺得速度相當(dāng)快。Squid可以代理HTTP、FTP、GOPHER、SSL和WAIS等協(xié)議并且,Squid可以自動(dòng)地進(jìn)行處理,可以根據(jù)自己的需要設(shè)置Squid,使之過濾掉不想要的東西。
Squid可以工作在很多的操作系統(tǒng)中,如AIX、Digital、UNIX、FreeBSD、HP-UX、Irix、Linux、NetBSD、Nextstep、SCO、Solaris、OS/2等。
在使用過程中,合理使用訪問控制是非常重要的工作。使用訪問控制特性,可以控制其在訪問時(shí)根據(jù)特定的時(shí)間間隔進(jìn)行緩存、訪問特定站點(diǎn)或一組站點(diǎn)等等。Squid訪問控制有兩個(gè)要素:ACL元素和訪問列表。訪問列表可以允許或拒絕某些用戶對(duì)此服務(wù)的訪問。下面分別介紹ACL元素以及訪問列表的使用方法。
1.ACL元素
該元素定義的語法如下:
acl aclname acltype string1…acl aclname acltype "file"…
當(dāng)使用文件時(shí),該文件的格式為每行包含一個(gè)條目。
其中,acltype可以是src、dst、srcdomain、dstdomain、url_regex、urlpath_regex、time、port、proto、method中的一任意一種。
src:指明源地址。可以用以下的方法指定:
acl aclname src ip-address/netmask ... 客戶ip地址 acl aclname src addr1-addr2/netmask ... 地址范圍dst:指明目標(biāo)地址,即客戶請(qǐng)求的服務(wù)器的IP地址。語法為:
acl aclname dst ip-address/netmask ...srcdomain:指明客戶所屬的域,Squid將根據(jù)客戶IP反向查詢DNS。語法為:
acl aclname srcdomain foo.com ...dstdomain:指明請(qǐng)求服務(wù)器所屬的域,由客戶請(qǐng)求的URL決定。語法為:
acl aclname dstdomain foo.com ...。此處需要注意的是:如果用戶使用服務(wù)器IP而非完整的域名時(shí),Squid將進(jìn)行反向的DNS解析來確定其完整域名,如果失敗,就記錄為“none”。
time:指明訪問時(shí)間。語法如下:
acl aclname time [day-abbrevs] [h1:m1-h2:m2][hh:mm-hh:mm]日期的縮寫指代關(guān)系如下:
另外,h1:m1必須小于h2:m2,表達(dá)式為[hh:mm-hh:mm]。
port:指定訪問端口。可以指定多個(gè)端口,比如:
acl aclname port 80 70 21 ... acl aclname port 0-1024 ... 指定一個(gè)端口范圍proto:指定使用協(xié)議??梢灾付ǘ鄠€(gè)協(xié)議:
acl aclname proto HTTP FTP ...method:指定請(qǐng)求方法。比如:
acl aclname method GET POST ...url_regex:URL規(guī)則表達(dá)式匹配,語法為:
acl aclname url_regex[-i] patternurlpath_regex:URL-path規(guī)則表達(dá)式匹配,略去協(xié)議和主機(jī)名。其語法為:
acl aclname urlpath_regex[-i] pattern在使用上述ACL元素的過程中,要注意如下幾點(diǎn):
2.http_access訪問控制列表
根據(jù)訪問控制列表允許或禁止某一類用戶訪問。如果某個(gè)訪問沒有相符合的項(xiàng)目,則默認(rèn)為應(yīng)用最后一條項(xiàng)目的“非”。比如最后一條為允許,則默認(rèn)就是禁止。通常應(yīng)該把最后的條目設(shè)為“deny all”或“allow all”來避免安全性隱患。
使用該訪問控制列表要注意如下問題:
http_access Action聲明1 AND 聲明2 AND
3.使用訪問控制
上面詳細(xì)講述了ACL元素以及http_access訪問控制列表的語法以及使用過程中需要注意的問題,下面給出使用這些訪問控制方法的實(shí)例:
(1)允許網(wǎng)段10.0.0.124/24以及192.168.10.15/24內(nèi)的所有客戶機(jī)訪問代理服務(wù)器,并且允許在文件/etc/squid/guest列出的客戶機(jī)訪問代理服務(wù)器,除此之外的客戶機(jī)將拒絕訪問本地代理服務(wù)器:
acl clients src 10.0.0.124/24 192.168.10.15/24 acl guests src “/etc/squid/guest” acl all src 0.0.0.0/0.0.0.0 http_access allow clients http_access allow guests http_access deny all其中,文件“/etc/squid/guest”中的內(nèi)容為:
172.168.10.3/24 210.113.24.8/16 10.0.1.24/25(2)允許域名為job.net、gdfq.edu.cn的兩個(gè)域訪問本地代理服務(wù)器,其他的域都將拒絕訪問本地代理服務(wù)器:
acl permitted_domain src job.net gdfq.edu.cn acl all src 0.0.0.0/0.0.0.0 http_access allow permitted_domain http_access deny all(3)使用正則表達(dá)式,拒絕客戶機(jī)通過代理服務(wù)器訪問包含有諸如“sexy”等關(guān)鍵字的網(wǎng)站:
acl deny_url url_regex -i sexy http_access deny deny_url(4)拒絕客戶機(jī)通過代理服務(wù)器訪問文件中指定IP或者域名的網(wǎng)站,其中文件/etc/squid/ deny_ip中存放有拒絕訪問的IP地址,文件/etc/squid/deny_dns中存放有拒絕訪問的域名:
acl deny_ip dst “etc/squid/deny_ip” acl deny_dns dst “etc/squid/deny_dns” http_access deny deny_ip http_access deny deny_dns(5)允許和拒絕指定的用戶訪問指定的網(wǎng)站,其中,允許客戶1訪問網(wǎng)站http://www.sina.com.cn,而拒絕客戶2訪問網(wǎng)站http://www.163.com:
acl client1 src 192.168.0.118 acl client1_url url_regex ^http://www.sina.com.cn acl client2 src 192.168.0.119 acl client2_url url_regex ^http://www.163.com http_access allow client1 client1_url http_access deny client2 client2_url(6)允許所有的用戶在規(guī)定的時(shí)間內(nèi)(周一至周四的8:30到20:30)訪問代理服務(wù)器,只允許特定的用戶(系統(tǒng)管理員,其網(wǎng)段為:192.168.10.0/24)在周五下午訪問代理服務(wù)器,其他的在周五下午一點(diǎn)至六點(diǎn)一律拒絕訪問代理服務(wù)器:
acl allclient src 0.0.0.0/0.0.0.0 acl administrator 192.168.10.0/24 acl common_time time MTWH 8:30-20:30 acl manage_time time F 13:00-18:00 http_access allow allclient common_time http_access allow administrator manage_time http_access deny manage_time
?
更多Linux管理相關(guān)的詳細(xì)內(nèi)容請(qǐng)關(guān)注我的Linux系統(tǒng)全方位管理專題:http://os.51cto.com/art/201009/228849.htm?
本文轉(zhuǎn)自samsunglinuxl51CTO博客,原文鏈接:http://blog.51cto.com/patterson/394338?,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的巧用Squid的ACL和访问列表实现高效访问控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vi 编辑器命令 (share)
- 下一篇: 优化就是在和时间赛跑