ACL訪問控制
ACL是squid提供的一個強大的控制機制,通過合理的設置ACL(Access Control List)並進行限制,可以針對源地址、目標地址、訪問的URL 路徑、訪問的時間等各種條件進行過濾。通過allow 和deny 進行控制。
在squid中設置ACL分爲兩步
1、定義ACL
2、調用ACL
定義ACL格式:
格式: acl 列表名稱 列表類型 列表內容……
列表名稱:自己設定
列表類型:
src 源地址,
dst 目標地址,
port 目標端口
dstdomain 目標域名
time 訪問時間
maxconn 最大併發量
url_regex 目標URL
urlpath_regex 整個目標URL 路徑
列表內容:要控制的具體對象,可以是多個值,以空格分號,“或”的關係
例如:
定義:
來自200網段和100網段的acl,(這裏只是定義還沒有調用不能做到範文控制,允許或者拒絕這兩個網段使用squid代理要在調用的時候設置通過allow、deny來決定)
acl IP src 192.168.100.0/24 192.168.200.0/24
時間的ACL定義:
acl work time 8:30-17:30
目標或者源地址等的控制也可以是一個文件。把ip寫在這個文件裏面然後調用
acl IPBLOCK dst “/etc/squid/ipblock.list”
URL路徑的定義可以是具體的也可以使用通配符來限制範圍的url
acl MP3 urlpath_regex .*\.mp3$
通過上面大概知道的ACL定義的方法了吧!現在只是定義了但是並不能啓動控制的效果,還需要調用這些定義的ACL來實現訪問控制。
格式:
格式:
http_access allow 或deny 列表名…….
例如以上面幾個ACL爲例
允許100網段200網段在8:30-17:30使用squid進行上網,且不能聽歌(MP3結尾的url路徑拒絕)
http_access deny MP3
http_access allow IP work
注意些的時候要注意邏輯思維,ACL匹配時從上往下匹配,匹配到就不在往下繼續,以此爲例如果先寫允許的,那麼squid一匹配到100網段或者200網段就直接允許了不在往下匹配,那麼禁止MP3的url路徑講不在匹配此條就會失效。
沒有設置任何規則時,squid 服務將拒絕客戶端的請求。有規則但是找不到匹配項時,squid 將採用與最後一條規則相反的權限,即如果最後一條規則是allow,就會拒絕客戶端的請求,否則允許該請求。
定義的ACL 要全部用上否則啓動時會報錯,如果不用的話可以先註銷掉。