測試web過濾的功能

Server:
IP 192.168.88.39
DNSSERVER 218.106.182.69

操作系統 rh9 內核 2.4.20-8 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

測試時,運行其自帶的apache web server



訪問控制其實只是squid的功能之一,別的用不上的功能可以在編譯的時候屏蔽掉。在本次測試中屏蔽了其緩存功能。

squid中,用access control list(acl)來管理規則,主要包括ACL elements Access List

 

其中ACL element 包括src, dst, myip, srcdomain, dstdoman, method等等,參照附件1,是squid規定的acl類別(acltype),主要用來設置aclname設置格式如下:

acl aclname acltype string1 ...
acl aclname acltype "file"

其中aclname是該list的名稱,可由用戶自由定義,acltype也就是ACL element 定義string 爲用戶的設置,也可以通過file從外部調用。Squid不允許一個aclname對應不同的acltype

 

Access Listsquid規定的規則列表,如http_access等等,參照附件1,設置規則時,每個access list後面跟一個關鍵字allow或者是deny,然後再是一串 aclname。如果一條規則中含有多個aclname,那麼它們之間是邏輯與的關係,也就是說,只有當該規則中的所有aclname都匹配的時候,該規則才匹配。可以用以下描述來表示同一條規則中各個acl之間的關係以及每條規則之間的關係。

acl all src 0.0.0.0/0.0.0.0

http_access deny all

 

 

1、  下載squid http://www.squid-cache.org/Versions/v2/2.5/, configure(指定安裝路徑和其他參數), make, make install

 

2、  安裝成功後,在安裝目錄下應該有以下目錄:bin, etc, libexec, man, sbin, share, var

其中sbin下有squid執行程序,share 路徑下是文擋等輔助資料,var目錄下是運行日誌,etc下是配置文件,以下所有的測試用例都是通過修改etc下的squid.conf中的相關規則來實現的。

 

 

3、  基本的規則設置:(squid.conf

#defaults

    acl all src 0.0.0.0/0.0.0.0

http_access deny all

以上的兩條規則保證,當請求未能匹配任何一條用戶定義的規則時,http access deny all 規則將被應用,於是該http請求被拒絕。

 

 

4、  root登陸,運行./squid z

在本測試中,由於未用到其緩存功能,在配置中將: cache_dir null /tmp

且編譯時帶參數 --enable-storeio=ufs,null

 

5web過濾測試

 

測試用例a

規則描述:

1)允許httpFTP協議

2)允許對80端口和21端口的連接

3)允許192.168.88.0/24網段的IP

4)屏蔽192.168.89.0/24網段的IP

則在squid.conf文件中添加規則如下,然後重新啓動squid.

#acl manager proto HTTP FTP 

acl allowedIP src 192.168.88.0.24
acl safeports port 80 21 443 

acl connect method CONNECT
 http_access deny !safeports  
http_access allow allowedIP

 

此時將客戶端IP設置爲192.168.88.30

IE中輸入http://192.168.88.31,能正常彈出apache默認頁面。FTP能正常連接。

若將客戶端IP改爲192.168.89.30,則httpFTP請求都失敗。

結論:

http_access allow allowedIPhttp_access deny all 規則生效

可以利用squid對客戶端IP地址(段)進行過濾。

 

測試用例b

將測試用例a acl safeports port 80 21 443 規則改爲 acl safeports port 80  443 

此時將可戶端IP設置爲192.168.88.30http請求成功,ftp請求失敗

結論:可以利用squid進行端口訪問控制。

 

測試用例c:

squid.conf中加入以下規則:

acl badip dst "/usr/local/squid/etc/somebadip" 
http_access deny badip 

 

則文件/usr/local/squid/etc/somebadip中列出的目標地址被屏蔽。

NOTE 在此例中,文件中保存的是一些站點的IP地址,如果要用域名代替,則應用dstdomain代替規則中的dst

結論: 可以用squid進行目標地址過濾

以上只是簡單地測試了squid的源地址過濾,目標地址過濾,端口過濾等功能。

在實際的應用中,可以實現更加複雜的功能,比如在將測試用例a中增加

acl allowedusers proxy_auth REQUIRED

http_access allow allowedusers

即變88網段的IP可以直接通過,而其餘的用戶則需要認證才能通過。

 

結論:通過不同的邏輯組合,以及access list不同的順序對其進行靈活的設置,可以利用squid滿足web過濾的需求。

1、  squid在啓動時會檢查DNS,所以要保證DNS的設置是正確的。

2、  第一次運行squid前,要先運行squid z ,用來創建緩存,即使象本例中將其路徑設成NULL,也要保證cache路徑存在。(squid在運行後將chdir到該路徑,好象當coredump_dir被打開的話,cachedir路徑可以不存在。未嘗試。)

3、  若不能啓動squid,通常是因爲權限不對(特別是以非root用戶運行時),請重點檢查 /squid/var/logs

/squid/var/cache等路徑的權限。查看syslogcache.log

4、  要保證規則設置的書寫和邏輯都是合法的。

5、  前臺運行:squid -NCd1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章