Squid服務的ACL訪問控制

簡介:
squid服務提供了強大的訪問控制功能,經過定義各類ACL(Access Control List,訪問控制列表),這些列表中包含了必定的過濾和控制條件,而後只要對這些列表設置時allow(容許)或deny(拒絕)就能夠實現訪問控制了。linux

在squid.conf配置文件中,HTTP的訪問控制主要由acl和http_access配置項共同實現,兩個配置項分別用來定義控制的條件(列表)和實施控制。正則表達式

  1. 定義ACL列表
    acl配置項用於設置訪問控制列表的內容,能夠爲每組特定的控制目標制定一個名稱。
    格式:
    acl 列表名稱 列表類型 列表內容 ...
    列表名稱:用戶自定義名稱便可
    列表類型:必須使用squid預約義的值
    列表內容:即控制的對象
    常見的squid預約義列表類型:
    類型1:src
    列表內容示範:
    192.168.1.1/32
    192.168.1.0/255.255.255.0
    192.168.1.0-192.168.3.0/24
    用途:
    客戶端IP地址或網絡段、地址範圍
    類型2:dst
    列表內容示範:
    www.XXX.COM網絡

    216.163.137.3/32
    用途:
    用戶訪問的目標主機名或者IP地址
    類型3:port
    列表內容示範:
    80 8080 21
    用途:
    用戶訪問的端口
    類型4:srcdomain
    列表內容示範:
    .linuxfan.cn
    .llfa.cn
    用途:
    客戶端來源域名(根據ip地址做反向解析)
    類型5:dstdomain
    列表內容示範:
    .qq.com .msn.com .verycd.com
    用途:
    用戶訪問的目標域,匹配域內全部站點
    類型6:time
    列表內容示範:
    MTWHF 8:30-17:30
    12:30-13:30
    AS
    用途:
    用戶上網的時間段
    字母表示一星期各天的英文縮寫
    M-monday
    T-tuesday
    W-wednesday
    H-thursday
    F-friday
    A-saturday
    S-sunday
    列表類型7:Maxcon
    列表內容示範:
    15
    用途:
    客戶端的併發HTTP鏈接數
    列表類型8:url_regex
    列表內容示範:
    url_regex -i ^rtsp:// ^mms://
    url_regex -i ^emule://
    用途:
    用戶訪問的整個URL網址,
    可使用正則表達式,
    加-i表示忽略大小寫
    列表類型9:urlpath_regex
    列表內容示範:
    urlpath_regex -i sex adult nude
    urlpath_regex -i \.mp3$ \.rar$
    用途:
    匹配用戶訪問的URL路徑(部分),
    可使用正則表達式
    2.設置acl訪問權限
    針對定義的各類acl列表,使用http_access配置項控制其訪問權限,容許(allow)或者拒絕(deny)。
    http_access配置行必須在對應的acl列表定義以後。
    每一行http_access配置肯定一條權限控制規則。
    在每一條http_access規則中,能夠同時包含多個acl列表名,各個列表之間使用「與」的關係,只有知足全部acl列表對應的條件纔會進行限制,
    可使用「!」符號設置相反條件
    格式:
    http_access allow或deny 列表名.....
    生效的順序:
    在squid.conf中http_access各條規則按順序進行匹配,匹配即中止;
    沒有任何規則是:squid訪問將拒絕客戶端的請求。
    有規則但找不到匹配項是:
    採用與最後一條相反的權限,
    即若是最後一條是allow,則拒絕,不然容許。
    一般狀況下把最經常使用的控制規則放在最前面,以減少squid的負載。
    在訪問控制的整體策略上採用:先拒絕後容許或先容許後拒絕,在最後添加一條「http_access allow all」或者「http_access deny all」併發

  2.  

3.實現步驟:
定義列表
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl LAN1 src 192.168.1.0/24
acl LAN2 src 192.168.2.0/24
acl PC1 src 192.168.1.66/32
acl lan_Domain .linuxfan.cn .benet.com
acl to_localhost dst 127.0.0.0/8
acl Black_IP dst 61.143.79.86/32 217.23.45.77/32
acl Black_host dst www.xxxx.comwww.adult.com  ##squid啓動時會嘗試解析
acl Black_Domain dstdomain .qq.com .msn.com j.gamezone.net
acl Max10_Conn maxconn 10
acl Max20_Conn maxconn 20
acl Black_URL url_regex -i ^rtsp:// ^mms:// ^emule://
acl Illegal_words urlpath_regex -i sex adult fake
acl MediaFile urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$ \.rm$ \.mov$ \.mpg$
acl Lunch_Hours time MTWHF 12:30-13:30
acl Work_Hours time MTWHF 08:30-17:30
實現權限控制
http_access deny LAN1 Black_IP
http_access deny LAN1 Black_Host
http_access deny LAN1 Black_Domain
http_access deny LAN2 Black_URL
http_access deny LAN2 Illegal_words
http_access deny LAN2 MediaFile
http_access deny PC1 Max10_conn
http_access deny LAN1 Max20_conn
http_access allow LAN_Domain Work_Hours
http_access allow LAN1 Work_Hours 
http_access allow LNA2 Work_Hours
http_access deny alldom

相關文章
相關標籤/搜索