一、ACL概念
Squid提供了強大的代理控制機制,通過合理設置ACL(Access Control List,訪問控制列表)並進行限制,可以針對源地址、目標地址、訪問的URL路徑、訪問的時間等各種條件進行過濾。
ACL訪問控制的步驟:
1、使用acl配置項定義需要控制的條件
2、通過http_access配置項對已定義的列表做“允許”或“拒絕”訪問的控制
二、ACL用法概述
(1)定義ACL訪問列表
定義格式:acl 列表名稱 列表類型 列表內容 ...
例:控制源IP網段
vim etc/squid.conf
acl MYLAN src 192.168.1.0/24 192.168.4.0/24
常用的ACL列表類型
1 src 源地址 2 dst 目標地址 3 port 目標地址 4 dstdomain 目標域 5 time 訪問時間 6 maxconn 最大並發連接 7 url_regex 目標URL地址 # 可以定義大的范圍比如http://www.baidu.com 8 urlpath_regex 整個目標URL路徑 # 可以定位到每個網站的具體目標的url,比如百度音樂的一首歌的url
(2)ACL訪問控制
定義好各種訪問控制列表以后,需要使用httpd_access配置項來進行控制
格式:
~]#vim etc/squid.conf
http_access allow或deny 列表名……
在每一條http_access規則中,可以同時包含多個訪問控制列表名,各個列表之間以空格分隔,為“與”的關系,表示必須滿足所有訪問控制列表對應的條件才會進行限制
規則匹配原理:沒有設置任何規則時,Squid服務將拒絕客戶端的請求,有規則但找不到相匹配的項時,Squid將采用與最后一條規則相反的權限,即如果最后一條規則時allow,就拒絕客戶端的請求,否則允許該請求,但是我們要盡量避免找不到相匹配的情況。
三、ACL列表的詳細應用
1、禁止任何客戶機使用此代理服務:定義一條名為all的列表,匹配來自任意源地址的代理訪問;然后拒絕此列表,注意ACL列表要寫在前面
1 ~]#vi /etc/squid.conf 2 acl all src 0.0.0.0/0.0.0.0 3 http_access deny all 4 ~]#service squid reload
2、允許多個局域網段在工作時間上網
1 ~]#vim /etc/squid.conf 2 acl all src 0.0.0.0/0.0.0.0 (有些版本要這么寫acl all src all) 3 acl MYLAN src 192.168.1.0/24 192.168.4.0/24 4 acl WORKTIME time MTWHF 08:30-17:30 (其中MTWHF是周一到周五的英文首字母) 5 http_access allow MYLAN WORKTIME 6 http_access deny all 7 ~]#service squid reload 8 #注意要先寫http_access allow MYLAN WORKTIME再寫http_access deny all,因為先執行前面的,后面的就不執行了
3、通過黑名單限制目標網站
(1)首先創建地址列表文件(直接在配置文件里寫也行,但是這種用列表文件的方式適合拒絕或允許的網站域名比較多的情況,而且方便增刪管理)
1 ~]#vim /etc/squid/ipblock.list 2 61.135.167.36 3 60.28.14.0/24 4 ~]#vim /etc/squid/dmblock.list 5 .qq.com
(2)配置acl
1 ~]#vim /etc/squid.conf 2 acl IPBLOCK dst "/etc/squid/ipblock.list" 3 acl DMBLOCK dstdomain "/etc/squid/dmblock.list" 4 http_access deny IPBLOCK 5 http_access deny DMBLOCK 6 ~]#service squid reload