Squid ACL

[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 地址的機器則都被拒絕訪問。
  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 規則將在連接數大於設定值。
[space]希望以上資料對squid學習者有幫助…
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章