Linux -- 代理服务器(Squid Server)的配置与应用2
代理客戶端的配置
本節分別以Linux和Windows系統環境下典型的Web瀏覽器Firefox和IE為例,為大家講述代理客戶端的配置工作過程。
16.5.1? Firefox代理設置
在Linux環境下通常都使用Firefox作為Web瀏覽器。下面我們就以在Red Hat Enterprise Linux 5 操作系統中的Firefox V1.5.0.9為例,講解如何進行代理客戶端的配置工作。
在Firefox瀏覽器中,選擇"編輯"菜單中的"首選項"子菜單,如圖16-24所示。
在彈出的"Firfox首選項"對話框中,在"常規"屬性頁中單擊"連接設置"按鈕,如圖16-25所示。
在彈出的"連接設置"對話框中,我們選中"手動代理配置"選項,然后在"HTTP代理"文本框中輸入正確的代理服務器的IP地址和端口號。如果還想通過代理服務器使用SSL、FTP、Gopher和SOCKS協議,則可以選中"為所有協議使用相同代理"復選框,最后單擊"確定"按鈕完成代理客戶端的配置工作,如圖16-26所示。
?
?
IE代理設置
在Windows環境下通常都使用IE作為默認的Web瀏覽器。下面就以配置Windows XP系統的IE 7.0為例,講解如何進行代理客戶端的配置工作。
打開IE瀏覽器,選擇"工具"菜單中的"Internet選項"子菜單,如圖16-27所示。
在彈出的"Internet選項"對話框中,選擇"連接"屬性頁,單擊"局域網設置"按鈕,如圖16-28所示。
?
在彈出的"局域網(LAN)設置"對話框中,首先勾選"為LAN使用代理服務器(這些設置不會應用于撥號或×××連接)"復選框,然后在"地址"文本框中輸入正確的代理服務器的IP地址,在"端口"文本框中輸入正確的代理服務器的端口號。如果還想通過代理服務器使用SSL、FTP、Gopher和SOCKS等協議,則可以單擊"高級"按鈕,如圖16-29所示。
在彈出的"代理服務器設置"對話框中,我們首先去掉已經勾選的"對所有協議均使用相同的代理服務器"復選框,然后根據各個協議代理服務器的配置情況,正確地填寫相應的代理服務器地址和訪問端口,最后單擊"確定"按鈕完成代理客戶端的配置工作。
?
訪問控制應用實例
通過前幾節的學習,我們應該對Squid代理服務從理論上有了一定的認識,接下來通過應用實例的學習,希望能夠使大家對Squid代理服務有一個更為深入的理解。在學習實例之前有必要強調一下,Squid訪問控制列表是順序讀取的,應將配置文件squid.conf中的以下兩個規則始終放置在acl語句的最后,否則這兩條規則會覆蓋其他的acl語句。
acl?all?src?0.0.0.0/0.0.0.0http_access?deny?all
同樣的道理,當配置文件中配置多條訪問控制規則時,必須注意其順序,避免規則相互覆蓋或屏蔽。另外,每次修改完配置文件后,若想使修改后的規則生效就必須重新載入配置文件,即運行命令"/etc/rc.d/init.d/squidreload"。
【實例一】禁止IP地址為192.168.1.102的客戶機上網。
我們可以定義如下規則實現上述要求:
acl?badclientip?src?192.168.1.102http_access?deny?badclientip
該規則定義了一條名為badclientip的acl,acl類型為src源IP地址方式,列表值為192.168.1.102,然后使用http_access參數禁止badclientip規則。也就是在IP地址為192.168.1.102的客戶機通過Squid代理服務上網的模式下,由于Squid服務器增加了如上規則,該終端客戶訪問Internet資源的請求將會被攔截,終端客戶的Web瀏覽器中會顯示拒絕訪問的錯誤提示信息,如圖16-31所示。
?
【實例二】禁止IP地址屬于192.168.1.0這個子網的所有客戶機上網。
我們可以定義如下規則實現上述要求:
acl?badclientsubnet?src?192.168.1.0/24http_access?deny?badclientsubnet
該規則定義了一條名為badclientsubnet的acl,acl類型為src源IP地址方式,列表值為192.168.1.0/24,然后使用http_access參數禁止badclientsubnet規則。也就是在IP地址為192.168.1.0子網的客戶機通過Squid代理服務上網的模式下,由于Squid服務器增加了如上規則,當前定義子網的終端客戶訪問Internet資源的請求將會被攔截,終端客戶的Web瀏覽器中會顯示拒絕訪問的錯誤提示信息。
【實例三】禁止所有終端用戶訪問IP地址為64.233.189.99(www.google.com)的網站。
我們可以定義如下規則實現上述要求:
acl?badserverip?dst?64.233.189.99http_access?deny?badserverip
該規則定義了一條名為badserverip的acl,acl類型為dst目標IP地址方式,列表值為64.233.189.99,然后使用http_access參數禁止badserverip規則。也就是在終端用戶通過Squid代理服務上網的模式下,由于Squid服務器增加了如上規則,當前所有終端客戶訪問IP地址為64.233.189.99的服務器資源的請求將會被攔截,終端客戶的Web瀏覽器中會顯示拒絕訪問的錯誤提示信息。
【實例四】禁止所有終端用戶訪問域名為www.google.com的網站。
我們可以定義如下規則實現上述要求:
acl?baddomain?dstdomain?-i?http_access?deny?dstdomain
該規則定義了一條名為baddomain的acl,acl類型為dstdomain目標域名方式,列表值為www.google.com,然后使用http_access參數禁止baddomain規則。也就是在終端用戶通過Squid代理服務上網的模式下,由于Squid服務器增加了如上規則,當前所有終端客戶訪問域名為www.google.com的服務器的Web資源的請求將會被攔截,終端客戶的Web瀏覽器中會顯示拒絕訪問的錯誤提示信息。但需要大家注意的是,這個限制規則僅對google.com域的WWW服務進行了限制,而對于Mail服務等并未限制。
【實例五】禁止所有終端用戶訪問域名包含為google.com的網站。
我們可以定義如下規則實現上述要求:
acl?badurl?url_regex?-i?google.comhttp_access?deny?badurl
該規則定義了一條名為badurl的acl,acl類型為url_regex URL規則表達式匹配方式,列表值為google.com,然后使用http_access參數禁止badurl規則。也就是在終端用戶通過Squid代理服務上網的模式下,由于Squid服務器增加了如上規則,當前所有終端客戶訪問服務器的URL中含有google.com的所有資源的請求將會被攔截,終端客戶的Web瀏覽器中會顯示拒絕訪問的錯誤提示信息。例如,www.abc.com/google/test.index、www.google.com、mail.google.com等URL均被攔截。
【實例六】限制IP地址為192.168.1.102的客戶機并發連接的最大連接數為5。
我們可以定義如下規則實現上述要求:
acl?clientip?src?192.168.1.102acl?clientmaxconn?maxconn?5
http_access?deny?clientip?clientmaxconn
上述規則定義了一條名為clientip的acl,該acl類型為src源地址方式,列表值為192.168.1.102;還定義了一條名為clientmaxconn的acl,該acl類型為maxconn單一IP的最大連接數方式,列表值為5,然后使用http_access參數禁止clientip、clientmaxconn規則。也就是在終端用戶通過Squid代理服務上網的模式下,由于Squid服務器增加了如上規則,終端用戶通過IP地址為192.168.1.102的客戶機同時訪問Internet資源的線程數不能超過5。這樣可以防止特定客戶開太多線程而占用服務器資源和帶寬。
【實例七】禁止客戶機IP地址在192.168.2.0子網的所有終端客戶在星期一到星期五的9:00到18:00訪問Internet資源。
我們可以定義如下幾條規則實現上述要求:
acl?clientnet?src?192.168.2.0/24acl?worktime?time?MTWHF?9:00-18:00
http_access?deny?clientnet?worktime
上述規則定義了一條名為clientnet的acl,該acl類型為src源地址方式,列表值為192.168.2.0/24;還定義了一條名為worktime的acl,該acl類型為time時間段方式,列表值為MTWHF 9:00-18:00,然后使用http_access參數禁止clientnet、worktime規則。也就是在終端用戶通過Squid代理服務上網的模式下,由于Squid服務器增加了如上規則,終端用戶通過IP地址屬于192.168.2.0網段的所有客戶機不能在星期一到星期五的9:00到18:00期間訪問Internet資源。
【實例八】禁止終端用戶在任何客戶機上下載文件擴展名為mp3、exe、zip和rar類型的文件。
我們可以定義如下規則實現上述要求:
acl?badfile?urlpath_regex?-i?\\.mp3$?\\.exe$?\\.zip$?\\.rar$http_access?deny?badfile
該規則定義了一條名為badfile的acl,該acl類型為urlpath_regex略去協議和主機名的URL規則表達式匹配方式,列表值為\\.mp3$ \\.exe$ \\.zip$ \\.rar$;同時使用-i參數是為了忽略列表值大小寫的檢查,然后使用http_access參數禁止badfile規則。也就是在終端用戶通過Squid代理服務上網的模式下,由于Squid服務器增加了如上規則,所有終端客戶訪問服務器的URL中以mp3、exe、zip和rar結尾的所有資源的請求將會被攔截,終端客戶的Web瀏覽器中會顯示拒絕訪問的錯誤提示信息。例如,http://www.abc.com/google/test.mp3、http://www.cqit.edu.cn/cs/123.zip、http://www.cqit.edu.cn/cs/siyanzhidao.?rar等URL均被攔截。
?Squid日志管理
網絡流量日志分析對于網絡管理員來說非常重要。通過系統記載的流量日志,管理員可以清楚地看到用戶對網絡服務器的使用情況,能夠從中挖掘及發現網絡中可能存在的安全問題。
在Linux下有許多日志及流量分析軟件。Webalizer是一個高效、免費的Web服務器日志分析程序,其官方站點為http://www.webalizer.org/,如圖16-32所示。Webalizer分析結果以HTML文件格式保存,從而可以很方便地通過Web服務器進行瀏覽。Internet上的很多站點都使用Webalizer進行Web服務器日志分析。本節將以對Red Hat Enterprise Linux 5下的代理服務器Squid的流量日志分析為例,詳細地介紹如何使用該軟件進行流量分析。
?
Webalizer具有以下一些特性:
用C語言編寫的程序,所以該系統具有很高的運行效率。在主頻為1.6GHz的機器上,Webalizer每秒鐘可以分析70000條記錄,也就是說,分析一個200MB大小的日志文件只需要30秒。
Webalizer支持標準的一般日志文件格式(Common LogfileFormat);除此之外,也支持幾種NCSA的組合日志格式(CombinedLogfile Format)的變種,從而可以統計客戶情況及操作系統類型。現在Webalizer已經可以支持wu-ftpd/proftpd xferlog日志格式及Squid代理服務器日志文件格式了。
支持命令行配置及配置文件。
支持多種語言,也可以自己進行本地化工作。
支持多種平臺,比如UNIX、Linux、NT、OS/2和Mac OS等。
安裝Webalizer
1.源代碼安裝方式
Webalizer的安裝過程如下:
訪問Webalizer的下載地址http://www.webalizer.org/download.html,如圖16-33所示,單擊"The Completesource distribution"欄目中的"Tar/Gziparchive"超鏈接下載"webalizer-2.20-01-src.tgz"安裝文件,當前最新的穩定版本為2.20-01,文件大小為525KB。
RPM包安裝方式
以RPM包方式安裝Webalizer的過程如下:
可以使用下面的命令檢查系統是否已經安裝了Webalizer,如圖16-34所示。
?
[root@localhost?~]#rpm?-qa|grep?webalizer
如果當前系統還未安裝Webalizer,則需要在Red HatEnterprise Linux 5的安裝盤中找到并安裝以下RPM包文件:
?
webalizer-2.01_10-11.i386.rpm??(位于第2張安裝盤中)
要安裝上述RPM包文件,可以將Red HatEnterprise Linux 5的安裝盤放入光驅,加載光驅后在光盤的Server目錄下找到相應的RPM安裝包文件,然后使用rpm -ivh命令安裝。
?
[root@localhost?~]#?rpm?-ivh?webalizer-2.01_10-11.i386.rpm
配置Webalizer
我們可以通過命令行配置Webalizer,也可以通過配置文件進行配置。下面將重點介紹使用配置文件進行配置,該方法使用形式比較直觀,使用比較普遍。
Webalizer的配置文件的路徑是"/etc/webalizer.conf",它有一個對應的模板文件/etc/webalizer.conf.sample。在一般情況下,該配置文件的默認參數配置都能滿足一定的應用需要,可以直接使用。接下來以實例的方式給大家介紹如何配置該文件。
使用vi編輯Webalizer配置文件。
Squid日志管理知識
Squid是Linux下一個緩存Internet數據的代理服務器軟件,其接收用戶的下載申請,并自動處理所下載的數據。在網絡環境下,本地網絡管理員經常可以通過Squid來代理訪問互聯網上的很多資源,因而對其進行日志審核和管理具有重大意義。
Squid日志管理的功能比較強大。通過查看相關日志文件,用戶可以實時、準確地了解代理服務器的訪問記錄、Cache的存儲狀況、Cache的訪問記錄等許多有用的信息,從而高效地對代理服務器進行管理。
Squid最重要的日志文件就是訪問日志,其訪問路徑為"/var/log/squid/access.log"。該日志文件記錄了客戶使用代理服務器的許多有用信息,包括使用時間、請求的內容、客戶端信息等。該文件的格式如下:
time?eclapsed?remotehost?code/status?bytes?
method?URL?rfc931?peerstatus?/peerhost?type
下面給出了實際應用中的一段真實的訪問日志,只取出了其中的一部分。
?
#cd?/var/log/squid
#cat?access.log
1119263842.955?195?192.168.10.3?TCP_MISS/200
1286?GET?.?cn/sina/ae/ad_src/
popup/pops1.html??-?DIRECT/218.30.108.19?text/html
1119263843.241?286?192.168.10.3?TCP_MISS/200?
44689?GET?.?cn/200506/15/
21135_300x250.GIF?-?DIRECT/218.30.108.18?p_w_picpath/gif
以第一條日志記錄為例,其各個字段的含義如下:
?
客戶訪問代理服務器的時間為1119263842.955毫秒;處理緩存所花費的時間為195毫秒;客戶端的IP地址為192.168.10.3,為內網地址;結果信息編碼/狀態信息編碼為TCP_MISS/200;緩存字節數為1286;HTTP請求方法為GET;訪問的目的地址的URL為:http://ad4.sina.com.cn/sina/ae/ad_src/popup/pops1.html;緩存級別/目的IP地址為:DIRECT/218.30.108.19;緩存對象類型為text/html;rfc913暫未使用,用"-"表示。
?
在上述的10個字段當中,結果信息編碼及狀態信息編碼比較重要,其表明了代理服務器對于客戶請求的信息的返回結果,與代理服務器的Cache命中率及Cache處理過程有直接關系。該信息能夠真實地反映代理服務器的Cache的整體性能,具有較大的參考價值。
應用Webalizer查看Squid網絡流量日志
Webalizer可以將大量的Squid日志信息綜合起來進行統計,得出可視化的顯示結果供網絡管理員或者網絡用戶進行參考和評價Squid服務器的使用情況,對于做出相應的決策有相當的參考價值。
在使用過程中需要注意:由于該軟件的使用結果都是通過Web頁面來顯示的,所以與Web服務器的聯系比較緊密。下面給出該軟件結合Squid服務器的使用示例。在通常情況下,配置好該軟件之后,啟動Web服務器(只有啟動該服務器才能通過Web頁面來查看日志統計的詳細情況)和該軟件即可。
?
[root@localhost?~]#?service?httpd?start
[root@localhost?~]#?/usr/sbin/webalizer?-c?/etc/webalizer.conf
啟動Apache服務及該軟件后,就可以通過瀏覽器來查看Squid代理服務器的流量分析結果了。在IE瀏覽器的地址欄中輸入Apache服務器的地址:http://192.168.1.101/usage,則得到如圖16-35所示的結果。
?
圖16-35中給出了流量分析的示意圖及一些數據說明,可以通過單擊圖中"Summary by Month"表格的"Jul 2005"超鏈接,來顯示更詳細的統計分析數據。通過分析和查看這些統計圖表的結果,用戶可以清楚地知道Squid代理服務器使用的細節情況,并可以根據顯示情況來對服務器做出適當的調整和優化。
使用Webalizer還有一個需要注意的問題是:通常并不需要每個用戶都有權限來查看代理服務器的流量情況,否則對于系統來說是不安全的。非法用戶為了掩蓋自己非法使用代理服務器的目的,可以對流量統計情況的結果進行修改、刪除等操作。所以,我們需要使用訪問控制策略來對上述分析圖表的查看權限進行控制,可以在Apache的主配置文件/etc/htpd/conf/httpd.conf中進行認證和授權配置,如下所示:
<?Directory?"/var/www/html/usage">?
//使用基本認證方式?
AuthType?Basic?
//指定認證域名稱?
AuthName?"admin"?
//指定認證口令文件存放的位置?
AuthUserFile?/var/www/passwd/admin?
//授權給認證口令文件中的所有用戶?
require?valid-user?
<?/Directory>
認證和授權配置成功后,需要創建認證口令文件及添加用戶。
?
[root@localhost?~]#?mkdir?/var/www/passwd
[root@localhost?~]#?cd?/var/www/passwd
[root@localhost?passwd]#?htpasswd?-C?admin?jackiee
New?password:?
Re-type?new?password:?
Adding?passwor?for?user?jackiee
然后,將口令文件的屬主改為apache,并重新啟動Apache。
[root@localhost?~]#?chown?apache.apache?admin?
[root@localhost?~]#?service?httpd?restart
經過上面的配置后,用戶在IE地址欄內輸入路徑http://192.168.1.101/usage后,具有認證和授權的用戶才能通過用戶認證界面,查看Squid代理服務器的流量分析報表信息。
?
參考:http://book.51cto.com/art/200904/119292.htm?
轉載于:https://blog.51cto.com/57388/1554346
總結
以上是生活随笔為你收集整理的Linux -- 代理服务器(Squid Server)的配置与应用2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 众昂矿业:萤石需求异军突起
- 下一篇: python tornado实战_pyt