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 ... 其中aclname是該list的名稱,可由用戶自由定義,acltype也就是ACL element 定義string 爲用戶的設置,也可以通過file從外部調用。Squid不允許一個aclname對應不同的acltype。
Access List是squid規定的規則列表,如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
5、web過濾測試
測試用例a: 規則描述: 1)允許http和FTP協議 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 connect method CONNECT
此時將客戶端IP設置爲192.168.88.30 在IE中輸入http://192.168.88.31,能正常彈出apache默認頁面。FTP能正常連接。 若將客戶端IP改爲192.168.89.30,則http和FTP請求都失敗。 結論: http_access allow allowedIP和http_access deny all 規則生效 可以利用squid對客戶端IP地址(段)進行過濾。
測試用例b: 將測試用例a中 acl safeports port 80 21 443 規則改爲 acl safeports port 80 443 此時將可戶端IP設置爲192.168.88.30,http請求成功,ftp請求失敗 結論:可以利用squid進行端口訪問控制。
測試用例c: 在squid.conf中加入以下規則: acl badip dst "/usr/local/squid/etc/somebadip"
則文件/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等路徑的權限。查看syslog,cache.log。 4、 要保證規則設置的書寫和邏輯都是合法的。 5、 前臺運行:squid -NCd1
|