[space]架設完squid以後,最重要的就是配置了!而 acl又是重頭戲!
使用訪問控制特性,可以控制在訪問時根據特定的時間間隔進行緩存、訪問特定站點或一組站點等等。 Squid 訪問控制有兩個要素:ACL 元素和 訪問列表。訪問列表可以允許或拒絕某些用戶對此服務的訪問。
下面列出一些重要的 ACL 元素類型
* src : 源地址 (即客戶機IP地址)
* dst : 目標地址 (即服務器IP地址)
* srcdomain : 源名稱 (即客戶機名稱)
* dstdomain : 目標名稱 (即服務器名稱)
* time : 一天中的時刻和一週內的一天
* url_regex : URL 規則表達式匹配
* urlpath_regex: URL-path 規則表達式匹配,略去協議和主機名
* proxy_auth : 通過外部程序進行用戶驗證
* maxconn : 單一 IP 的最大連接數
爲了使用控制功能,必須先設置 ACL 規則並應用。ACL 聲明的格式如下:
acl acl_element_name type_of_acl_element values_to_acl
注:
1. acl_element_name 可以是任一個在 ACL 中定義的名稱。
2. 任何兩個 ACL 元素不能用相同的名字。
3. 每個 ACL 由列表值組成。當進行匹配檢測的時候,多個值由邏輯或運算連接;換言之,即任一 ACL元素的值被匹配,則這個 ACL 元素即被匹配。
4. 並不是所有的 ACL 元素都能使用訪問列表中的全部類型。
5. 不同的 ACL 元素寫在不同行中,Squid 將把它們組合在一個列表中。
我們可以使用許多不同的訪問條目。下面列出我們將要用到的幾個:
* http_access: 允許 HTTP 訪問。這個是主要的訪問控制條目。
* no_cache: 定義對緩存請求的響應。
訪問列表的規則由一些類似 ‘allow’ 或 ‘deny’ 的關鍵字構成,用以允許或拒絕向特定或一組 ACL 元素提供服務。
注:
1. 這些規則按照它們的排列順序進行匹配檢測,一旦檢測到匹配的規則,匹配檢測就立即結束。
2. 一個訪問列表可以又多條規則組成。
3. 如果沒有任何規則與訪問請求匹配,默認動作將與列表中最後一條規則對應。
4. 一個訪問條目中的所有元素將用邏輯與運算連接:
http_access Action 聲明1 AND 聲明2 AND 聲明 OR.
http_access Action 聲明3 #多個 http_access 聲明間用或運算連接,但每個訪問條目的元素間用與運算連接。
5. 請記住列表中的規則總是遵循由上而下的順序。
Squid 默認不做任何用戶訪問控制。若要允許某個訪問,必須進行定製規則。在 squid.conf 中 http_access deny 行前輸入下述文字:
acl mynetwork 192.168.0.1/255.255.255.0
http_access allow mynetwork
mynetwork 是 acl 名稱,下一行則是適用於特定 acl (即 mynetwork ) 的規則。192.168.0.1 指明是網絡中掩碼爲 255.255.255.0 的子網。mynetwork 主要是爲了給出網絡上一組機器,下一條規則則允許這些
機器訪問 http 服務。上述修改配合 http_port 就可以讓 Squid 很好的工作起來了。 修改完成後,Squid
可以用下述命令啓動:
service squid start
注:
Squid 也可以在系統啓動的時候自動運行,方法是在 ntsysv 或 setup(系統服務菜單)中打開 Squid。在
對配置文件做了任何更改之後,當前正運行的 Squid 進程必須重新啓動。可以用下面的命令來完成:
1. service squid restart 或
2. /etc/rc.d/init.d/squid restart
使用訪問控制
多個訪問控制及其規則爲客戶端訪問控制提供了一種靈活的機制。下面給出通常所用到的例子:
1. 允許列表中的機器訪問 Internet。
acl allowed_clients src 192.168.0.10 192.168.0.20 192.168.0.30
http_access allow allowed_clients
http_access deny !allowed_clients
這個規則只允許 IP 地址爲 192.168.0.10、192.168.0.20 及 192.168.0.30 的機器
訪問 Internet,其他 IP 地址的機器則都被拒絕訪問。
下面列出一些重要的 ACL 元素類型
* src : 源地址 (即客戶機IP地址)
* dst : 目標地址 (即服務器IP地址)
* srcdomain : 源名稱 (即客戶機名稱)
* dstdomain : 目標名稱 (即服務器名稱)
* time : 一天中的時刻和一週內的一天
* url_regex : URL 規則表達式匹配
* urlpath_regex: URL-path 規則表達式匹配,略去協議和主機名
* proxy_auth : 通過外部程序進行用戶驗證
* maxconn : 單一 IP 的最大連接數
爲了使用控制功能,必須先設置 ACL 規則並應用。ACL 聲明的格式如下:
acl acl_element_name type_of_acl_element values_to_acl
注:
1. acl_element_name 可以是任一個在 ACL 中定義的名稱。
2. 任何兩個 ACL 元素不能用相同的名字。
3. 每個 ACL 由列表值組成。當進行匹配檢測的時候,多個值由邏輯或運算連接;換言之,即任一 ACL元素的值被匹配,則這個 ACL 元素即被匹配。
4. 並不是所有的 ACL 元素都能使用訪問列表中的全部類型。
5. 不同的 ACL 元素寫在不同行中,Squid 將把它們組合在一個列表中。
我們可以使用許多不同的訪問條目。下面列出我們將要用到的幾個:
* http_access: 允許 HTTP 訪問。這個是主要的訪問控制條目。
* no_cache: 定義對緩存請求的響應。
訪問列表的規則由一些類似 ‘allow’ 或 ‘deny’ 的關鍵字構成,用以允許或拒絕向特定或一組 ACL 元素提供服務。
注:
1. 這些規則按照它們的排列順序進行匹配檢測,一旦檢測到匹配的規則,匹配檢測就立即結束。
2. 一個訪問列表可以又多條規則組成。
3. 如果沒有任何規則與訪問請求匹配,默認動作將與列表中最後一條規則對應。
4. 一個訪問條目中的所有元素將用邏輯與運算連接:
http_access Action 聲明1 AND 聲明2 AND 聲明 OR.
http_access Action 聲明3 #多個 http_access 聲明間用或運算連接,但每個訪問條目的元素間用與運算連接。
5. 請記住列表中的規則總是遵循由上而下的順序。
Squid 默認不做任何用戶訪問控制。若要允許某個訪問,必須進行定製規則。在 squid.conf 中 http_access deny 行前輸入下述文字:
acl mynetwork 192.168.0.1/255.255.255.0
http_access allow mynetwork
mynetwork 是 acl 名稱,下一行則是適用於特定 acl (即 mynetwork ) 的規則。192.168.0.1 指明是網絡中掩碼爲 255.255.255.0 的子網。mynetwork 主要是爲了給出網絡上一組機器,下一條規則則允許這些
機器訪問 http 服務。上述修改配合 http_port 就可以讓 Squid 很好的工作起來了。 修改完成後,Squid
可以用下述命令啓動:
service squid start
注:
Squid 也可以在系統啓動的時候自動運行,方法是在 ntsysv 或 setup(系統服務菜單)中打開 Squid。在
對配置文件做了任何更改之後,當前正運行的 Squid 進程必須重新啓動。可以用下面的命令來完成:
1. service squid restart 或
2. /etc/rc.d/init.d/squid restart
使用訪問控制
多個訪問控制及其規則爲客戶端訪問控制提供了一種靈活的機制。下面給出通常所用到的例子:
1. 允許列表中的機器訪問 Internet。
acl allowed_clients src 192.168.0.10 192.168.0.20 192.168.0.30
http_access allow allowed_clients
http_access deny !allowed_clients
這個規則只允許 IP 地址爲 192.168.0.10、192.168.0.20 及 192.168.0.30 的機器
訪問 Internet,其他 IP 地址的機器則都被拒絕訪問。
2. 限制訪問時段。
acl allowed_clients src 192.168.0.1/255.255.255.0
acl regular_days time MTWHF 10:00-16:00
http_access allow allowed_clients regular_days
http_access deny !allowed_clients
這個規則允許子網192.168.0.1中的所有客戶機在週一到週五的上午10:00到下午4:00
訪問 Internet。
3. 爲不同的客戶機分配不同的訪問時段。
acl hosts1 src192.168.0.10
acl hosts2 src 192.168.0.20
acl hosts3 src 192.168.0.30
acl morning time 10:00-13:00
acl lunch time 13:30-14:30
acl evening time 15:00-18:00
http_access allow host1 morning
http_access allow host1 evening
http_access allow host2 lunch
http_access allow host3 evening
http_access deny all
在這個規則中,主機 host1 可以在 morning 和 evening 時段訪問 Internet,主機
host2 和 host3 分別只能在 lunch 和 evening 時段訪問 Internet。
注:
一個訪問條目中所有的元素之間用與運算按下述方式連接 :
http_access Action statement1 AND staement2 AND statement OR.
多個 http_access 聲明之間用或運算連接而每個訪問條目中的元素用與運算連接,見
下:
http_access allow host1 morning evening
無法在時段 morning 和時段 evening 同時進行(morning AND evening ),這個表達
式將不會返回真值(TRUE),從而這個條目將不會引發任何動作。
4. 站點屏蔽
Squid 可以屏蔽某些特定站點或含有某些特定字詞的站點。可以用下面的規則實現:
acl allowed_clients src 192.168.0.1/255.255.255.0
acl banned_sites url_regex abc.com *()(*.com
http_access deny banned_sites
http_access allow allowed_clients
也可以用以屏蔽含有某些特定字詞(比如說 dummy、fake)的站點
acl allowed_clients src 192.168.0.1/255.255.255.0
acl banned_sites url_regex dummy fake
http_access deny banned_sites
http_access allow allowed_machibes
在實際應用中,不需要把需屏蔽的所有站點或字詞都列在上面,可以先保存在一個文件
中(請查看 /etc 目錄中的 banned.list文件)ACL 將從這個文件中讀出所需信息用以 bitsCN.com中國網管聯盟
屏蔽被禁止的站點。
acl allowed_clients src 192.168.0.1/255.255.255.0
acl banned_sites url_regex “/etc/banned.list”
http_access deny banned_sites
http_access allow allowed_clients
5. 優化
Squid 可以通過使用 maxconn 元素來限制客戶端連接的數目。 要使用這個選項,必須
先允許 client_db。
acl mynetwork 192.168.0.1/255.255.255.0
acl numconn maxconn 5
http_access deny mynetwork numconn
注:
maxconn ACL 使用小於(less-than)對比。此 ACL 規則將在連接數大於設定值。
acl allowed_clients src 192.168.0.1/255.255.255.0
acl regular_days time MTWHF 10:00-16:00
http_access allow allowed_clients regular_days
http_access deny !allowed_clients
這個規則允許子網192.168.0.1中的所有客戶機在週一到週五的上午10:00到下午4:00
訪問 Internet。
3. 爲不同的客戶機分配不同的訪問時段。
acl hosts1 src192.168.0.10
acl hosts2 src 192.168.0.20
acl hosts3 src 192.168.0.30
acl morning time 10:00-13:00
acl lunch time 13:30-14:30
acl evening time 15:00-18:00
http_access allow host1 morning
http_access allow host1 evening
http_access allow host2 lunch
http_access allow host3 evening
http_access deny all
在這個規則中,主機 host1 可以在 morning 和 evening 時段訪問 Internet,主機
host2 和 host3 分別只能在 lunch 和 evening 時段訪問 Internet。
注:
一個訪問條目中所有的元素之間用與運算按下述方式連接 :
http_access Action statement1 AND staement2 AND statement OR.
多個 http_access 聲明之間用或運算連接而每個訪問條目中的元素用與運算連接,見
下:
http_access allow host1 morning evening
無法在時段 morning 和時段 evening 同時進行(morning AND evening ),這個表達
式將不會返回真值(TRUE),從而這個條目將不會引發任何動作。
4. 站點屏蔽
Squid 可以屏蔽某些特定站點或含有某些特定字詞的站點。可以用下面的規則實現:
acl allowed_clients src 192.168.0.1/255.255.255.0
acl banned_sites url_regex abc.com *()(*.com
http_access deny banned_sites
http_access allow allowed_clients
也可以用以屏蔽含有某些特定字詞(比如說 dummy、fake)的站點
acl allowed_clients src 192.168.0.1/255.255.255.0
acl banned_sites url_regex dummy fake
http_access deny banned_sites
http_access allow allowed_machibes
在實際應用中,不需要把需屏蔽的所有站點或字詞都列在上面,可以先保存在一個文件
中(請查看 /etc 目錄中的 banned.list文件)ACL 將從這個文件中讀出所需信息用以 bitsCN.com中國網管聯盟
屏蔽被禁止的站點。
acl allowed_clients src 192.168.0.1/255.255.255.0
acl banned_sites url_regex “/etc/banned.list”
http_access deny banned_sites
http_access allow allowed_clients
5. 優化
Squid 可以通過使用 maxconn 元素來限制客戶端連接的數目。 要使用這個選項,必須
先允許 client_db。
acl mynetwork 192.168.0.1/255.255.255.0
acl numconn maxconn 5
http_access deny mynetwork numconn
注:
maxconn ACL 使用小於(less-than)對比。此 ACL 規則將在連接數大於設定值。
[space]希望以上資料對squid學習者有幫助…