本文介紹Linux下非常著名、常用的SquidProxy 伺服器的使用,並著重講述如何使用其提供的存取控制策略,來保證Proxy 伺服器的合法使用。
Proxy 伺服器的功能是代理網路使用者取得網路資訊,它是網路資訊的
中轉站。隨著Proxy 伺服器的廣泛使用,隨之而來的是一系列的安全問題。由於沒有對Proxy 伺服器的存取控制策略作全面細緻的配置,導致使用者可以隨意地通過Proxy 伺服器訪問許多色情、反動的非法網站,而這些行為往往又很難追蹤,給管理工作帶來極大的不便。
Squid是Linux下一個緩衝Internet資料的Proxy 伺服器軟體,其接收使用者的下載申請,並自動處理所下載的資料。也就是說,當一個使用者想要下載一個首頁時,可以向Squid發出一個申請,要Squid代替其進行下載,然後Squid串連所申請網站並請求該首頁,接著把該首頁傳給使用者同時保留一個備份。當別的使用者申請同樣的頁面時,Squid把儲存的備份立即傳給使用者,使使用者覺得速度相當快。目前,Squid可以代理HTTP、FTP、 GOPHER、SSL和WAIS協議,暫不能代理POP3、NNTP等協議。Squid可以工作在很多作業系統中,如AIX、Digital、Unix、 FreeBSD、HP-UX、Irix、Linux、NetBSD、Nextstep、SCO、Solaris、OS/2等。
安裝和配置Squid Server
通常說來,安裝Squid有兩種方法:一是從Red Hat Linux 9中擷取該軟體的RPM包進行;二是安裝從Squid的官方網站http://www.squid-cache.org/ 下載該軟體的源碼進行編譯後安裝。目前網上最新的穩定版本為squid-2.5.STABLE10,下面以此版本為例對兩種安裝方法進行介紹。
Squid伺服器工作原理
1. RPM包的安裝
首先,查看是否已經安裝了squid:
#rpm -qa | grep squid
Red Hat Linux9內建了Squid安裝軟體包,將第一張安裝光碟片放入光碟機後掛裝光碟片分區:
#mount /mnt/cdrom
然後,進入/mnt/cdrom/Red Hat/RPMS目錄:
#cd /mnt/cdrom/Red Hat/RPMS
最後,執行安裝:
#rpm -ivh squid-2.5.STABLE1-2.i386.rpm
當然,我們也可以在開始安裝系統的過程中安裝該軟體。
2. 原始碼包的安裝
從http://www.squid-cache.org/下載squid軟體的最新原始碼包squid-2.5.STABLE10.tar.gz,然後,按照如下步驟進行安裝。
首先,將該檔案拷貝到/tmp目錄:
#cp squid-2.5.STABLE10.tar.gz /tmp
然後,解開該檔案:
#tar xzvf squid-2.5.STABLE10.tar.gz
解開後,在/tmp產生一個新的目錄squid-2.5.STABLE10,為了方便使用mv命令,將該目錄重新命名為squid:
#mv squid-2.5.STABLE10 squid
切換進入squid目錄:
#cd squid
接著,執行/configure,可以用./configure --prefix=/directory/you/want指定安裝目錄,系統預設安裝目錄為/tmp/squid:
#./configure
最後,分別執行make all、make install:
#make all
#make install
安裝結束後,Squid的可執行檔在安裝目錄的bin子目錄下,設定檔在etc子目錄下。
Squid軟體向使用者提供了許多與配置、應用程式和庫、日誌等相關的文檔進行配置和管理,Squid有一個主要的設定檔squid.conf。同時,在 Red Hat環境下所有Squid的設定檔都位於/etc/squid子目錄下。在該目錄當中,系統同時提供了一個預設的設定檔,其名稱為 squid.conf.default,然而,在實際的應用當中,該預設的設定檔存在某些問題,所以在使用Squid之前,必須首先對該設定檔的有關內容進行修改。
下面介紹squid.conf檔案的結構以及一些常用的選項。squid.conf設定檔可以分為13個部分。雖然Squid的設定檔很龐大,該設定檔的規模達到了3000多行。然而,如果只是為一個中小型網路提供代理服務,並且只準備使用一台伺服器,那麼,配置問題將會變得相對簡單,只需要修改設定檔中的幾個選項即可滿足應用需求。這些幾個常用選項分別是:
1. http_port
該選項定義Squid監聽HTTPD客戶串連請求的連接埠。預設是3128,如果使用HTTPD加速模式,則為80。可以指定多個連接埠,但是所有指定的連接埠都必須在一條命令列上出現,程式才能正確地識別。
2. cache_mem(bytes)
該選項用於指定Squid可以使用的記憶體的理想值。這部分記憶體被用來儲存以下對象:In-Transit objects(傳入的對象)、Hot Objects(熱對象,即使用者常訪問的對象)、Negative-Cached objects(消極儲存的對象)。
3. cache_dir Directory-Name Mbytes Level1 Level2
該選項指定Squid用來儲存物件的交換空間的大小及其目錄結構。可以用多個cache_dir命令來定義多個交換空間,並且這些交換空間可以分布在不同的磁碟分割。“directory”指明了該交換空間的頂級目錄。如果想用整個磁碟作為交換空間,那麼可以將該目錄作為裝載點將整個磁碟掛裝上去。預設值為/var/spool/squid。Mbytes定義了可用的空間總量。