巧用Squid的ACL和訪問列表實現高效訪問控制

2021-07-27 10:38:56 字數 4291 閱讀 5622

squid可以工作在很多的作業系統中,如aix、digital、unix、freebsd、hp-ux、irix、linux、netbsd、nextstep、sco、solaris、os/2等。

在使用過程中,合理使用訪問控制是非常重要的工作。使用訪問控制特性,可以控制其在訪問時根據特定的時間間隔進行快取、訪問特定站點或一組站點等等。squid訪問控制有兩個要素:acl元素和訪問列表。訪問列表可以允許或拒絕某些使用者對此服務的訪問。下面分別介紹acl元素以及訪問列表的使用方法。

1.acl元素

該元素定義的語法如下:

acl aclname acltype string1…

acl aclname acltype "file"…

當使用檔案時,該檔案的格式為每行包含乙個條目。

其中,acltype可以是src、dst、srcdomain、dstdomain、url_regex、urlpath_regex、time、port、proto、method中的一任意一種。

src:指明源位址。可以用以下的方法指定:

acl aclname src ip-address/netmask ... 客戶ip位址

acl aclname src addr1-addr2/netmask ... 位址範圍

dst:指明目標位址,即客戶請求的伺服器的ip位址。語法為:

acl aclname dst ip-address/netmask ...
srcdomain:指明客戶所屬的域,squid將根據客戶ip反向查詢dns。語法為:

acl aclname srcdomain foo.com ...
dstdomain:指明請求伺服器所屬的域,由客戶請求的url決定。語法為:

acl aclname dstdomain foo.com ...。此處需要注意的是:如果使用者使用伺服器ip而非完整的網域名稱時,squid將進行反向的dns解析來確定其完整網域名稱,如果失敗,就記錄為「none」。

time:指明訪問時間。語法如下:

acl aclname time [day-abbrevs] [h1:m1-h2:m2][hh:mm-hh:mm]
日期的縮寫指代關係如下:

s:指代sunday

m:指代monday

t:指代tuesday

w:指代wednesday

h:指代thursday

f:指代friday

a:指代saturday

另外,h1:m1必須小於h2:m2,表示式為[hh:mm-hh:mm]。

port:指定訪問埠。可以指定多個埠,比如:

acl aclname port 80 70 21 ...

acl aclname port 0-1024 ... 指定乙個埠範圍

proto:指定使用協議。可以指定多個協議:

acl aclname proto http ftp ...
method:指定請求方法。比如:

acl aclname method get post ...
url_regex:url規則表示式匹配,語法為:

acl aclname url_regex[-i] pattern
urlpath_regex:url-path規則表示式匹配,略去協議和主機名。其語法為:

acl aclname urlpath_regex[-i] pattern
在使用上述acl元素的過程中,要注意如下幾點:

acltype可以是任乙個在acl中定義的名稱。

任何兩個acl元素不能用相同的名字。

每個acl由列表值組成。當進行匹配檢測的時候,多個值由邏輯或運算連線;換句話說,任一acl元素的值被匹配,則這個acl元素即被匹配。

並不是所有的acl元素都能使用訪問列表中的全部型別。

不同的acl元素寫在不同行中,squid將這些元素組合在乙個列表中。

2.http_access訪問控制列表

根據訪問控制列表允許或禁止某一類使用者訪問。如果某個訪問沒有相符合的專案,則預設為應用最後一條專案的「非」。比如最後一條為允許,則預設就是禁止。通常應該把最後的條目設為「deny all」或「allow all」來避免安全性隱患。

使用該訪問控制列表要注意如下問題:

這些規則按照它們的排列順序進行匹配檢測,一旦檢測到匹配的規則,匹配檢測就立即結束。

訪問列表可以由多條規則組成。

如果沒有任何規則與訪問請求匹配,預設動作將與列表中最後一條規則對應。

乙個訪問條目中的所有元素將用邏輯與運算連線(如下所示):

http_access action宣告1 and 宣告2 and

多個http_access宣告間用或運算連線,但每個訪問條目的元素間用與運算連線。

列表中的規則總是遵循由上而下的順序。

3.使用訪問控制

上面詳細講述了acl元素以及http_access訪問控制列表的語法以及使用過程中需要注意的問題,下面給出使用這些訪問控制方法的例項:

(1)允許網段10.0.0.124/24以及192.168.10.15/24內的所有客戶機訪問**伺服器,並且允許在檔案/etc/squid/guest列出的客戶機訪問**伺服器,除此之外的客戶機將拒絕訪問本地**伺服器:

http_access deny all其中,檔案「/etc/squid/guest」中的內容為:

172.168.10.3/24

210.113.24.8/16

10.0.1.24/25

(2)允許網域名稱為job.net、gdfq.edu.cn的兩個域訪問本地**伺服器,其他的域都將拒絕訪問本地**伺服器:

http_access deny all(3)使用正規表示式,拒絕客戶機通過**伺服器訪問包含有諸如「***y」等關鍵字的**:

acl deny_url url_regex -i ***y

http_access deny deny_url

(4)拒絕客戶機通過**伺服器訪問檔案中指定ip或者網域名稱的**,其中檔案/etc/squid/ deny_ip中存放有拒絕訪問的ip位址,檔案/etc/squid/deny_dns中存放有拒絕訪問的網域名稱:

http_access deny deny_dns(5)允許和拒絕指定的使用者訪問指定的**,其中,允許客戶1訪問**而拒絕客戶2訪問**

http_access deny client2 client2_url(6)允許所有的使用者在規定的時間內(周一至周四的8:30到20:30)訪問**伺服器,只允許特定的使用者(系統管理員,其網段為:192.168.10.0/24)在周五下午訪問**伺服器,其他的在周五下午一點至六點一律拒絕訪問**伺服器:

本文出自 「卓越始於足下」 部落格,請務必保留此出處

巧用Squid的ACL和訪問列表實現高效訪問控制

2010 09 19 22 52 52 squid可以工作在很多的作業系統中,如aix digital unix freebsd hp ux irix linux netbsd nextstep sco solaris os 2等。在使用過程中,合理使用訪問控制是非常重要的工作。使用訪問控制特性,可...

巧用Squid的ACL和訪問列表實現高效訪問控制

squid可以工作在很多的作業系統中,如aix digital unix freebsd hp ux irix linux netbsd nextstep sco solaris os 2等。在使用過程中,合理使用訪問控制是非常重要的工作。使用訪問控制特性,可以控制其在訪問時根據特定的時間間隔進行快...

許可權和ACL訪問控制 01 許可權

rwxrwrwx 左三位 定義user owner 的許可權,屬主許可權 中三位 定義group的許可權,屬組許可權 有三位 定義other的許可權,其他的許可權 程序對檔案的訪問許可權應用模型 程序的屬主與檔案的屬主是否相同。如果相同,則應用屬主許可權 否則去檢查金證的屬於是否屬於檔案的屬組 如果...