歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

搭建Linux安全的Squid代理服務器(圖)

  本文介紹Linux下非常著名、常用的Squid代理服務器的使用,並著重講述如何使用其提供的訪問控制策略,來保證代理服務器的合法使用。    代理服務器的功能是代理網絡用戶取得網絡信息,它是網絡信息的中轉站。隨著代理服務器的廣泛使用,隨之而來的是一系列的安全問題。由於沒有對代理服務器的訪問控制策略作全面細致的配置,導致用戶可以隨意地通過代理服務器訪問許多色情、反動的非法站點,而這些行為往往又很難追蹤,給管理工作帶來極大的不便。    Squid是Linux下一個緩存Internet數據的代理服務器軟件,其接收用戶的下載申請,並自動處理所下載的數據。也就是說,當一個用戶想要下載一個主頁時,可以向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定義了可用的空間總量。    配置訪問控制    使用訪問控制特性,可以控制在訪問時根據特定的時間間隔進行緩存、訪問特定站點或一組站點等。Squid訪問控制有兩個要素:ACL元素和訪問列表。通過使用這些方法,系統管理員可以嚴格、清晰地定義代理服務器的訪問控制策略。    1. ACL元素    該元素定義的語法如下:    acl aclname acltype string1…    acl aclname acltype “file”…    當使用文件時,該文件的格式為每行包含一個條目。其中,acltype可以是任一個在ACL中定義的名稱;任何兩個ACL元素不能用相同的名字;每個ACL由列表值組成,當進行匹配檢測的時候,多個值由邏輯或運算連接,換句話說,任一ACL元素的值被匹配,則這個ACL元素即被匹配; 並不是所有的ACL元素都能使用訪問列表中的全部類型;不同的ACL元素寫在不同行中,Squid將這些元素組合在一個列表中。    2. http_Access訪問控制列表    根據訪問控制列表允許或禁止某一類用戶訪問。如果某個訪問沒有相符合的項目,則默認為應用最後一條項目的“非”。比如最後一條為允許,則默認就是禁止。通常應該把最後的條目設為“deny all”或“allow all”來避免安全性隱患。使用該訪問控制列表需要注意如下問題:    ● 這些規則按照它們的排列順序進行匹配檢測,一旦檢測到匹配的規則,匹配檢測就立即結束;    ● 訪問列表可以由多條規則組成;    ● 如果沒有任何規則與訪問請求匹配,默認動作將與列表中最後一條規則對應;    ● 一個訪問條目中的所有元素將用邏輯與運算連接,如下所示:    http_access Action 聲明1 AND 聲明2 AND 聲明 OR    http_access Action 聲明3    ● 多個http_access聲明間用或運算連接,但每個訪問條目的元素間用與運算連接;    ● 列表中的規則總是遵循由上而下的順序。    3. 使用訪問控制    上面詳細講述了ACL元素以及http_access訪問控制列表的語法以及使用過程中需要注意的問題,下面給出使用這些訪問控制方法的實例。    如果,允許網段10.0.0.124/24以及192.168.10.15/24內的所有客戶機訪問代理服務器,並且允許在文件/etc/squid/guest列出的客戶機訪問代理服務器,除此之外的客戶機將拒絕訪問本地代理服務器。那麼具體操作如下:    acl clients src 10.0.0.124/24 192.168.10.15/24    acl guests src “/etc/squid/guest”    acl all src 0.0.0.0/0.0.0.0    http_access allow clients    http_access allow guests    http_access deny all    其中,文件“/etc/squid/guest”中的內容為:    172.168.10.3/24    210.113.24.8/16    10.0.1.24/25    ……    如果,允許域名為job.net、gdfq.edu.cn的兩個域訪問本地代理服務器,其他的域都將拒絕訪問本地代理服務器。那麼具體操作如下:    acl permitted_domain src job.net gdfq.edu.cn    acl all src 0.0.0.0/0.0.0.0    http_access allow permitted_domain    http_access deny all    如果,使用正則表達式,拒絕客戶機通過代理服務器訪問包含有諸如“sexy”等關鍵字的網站。那麼具體操作如下:    acl deny_url url_regex - sexy    http_access deny deny_url    如果,拒絕客戶機通過代理服務器訪問文件中指定IP或者域名的網站,其中文件/etc/squid/deny_ip中存放有拒絕訪問的IP地址,文件/etc/squid/deny_dns中存放有拒絕訪問的域名。那麼具體操作如下:    acl deny_ip dst “etc/squid/deny_ip”    acl deny_dns dst “etc/squid/deny_dns”    http_access deny deny_ip    http_access deny deny_dns    如果,允許和拒絕指定的用戶訪問指定的網站,其中,允許客戶1訪問網站http://www.sina.com.cn,而拒絕客戶2訪問網站http://www.163.com。那麼具體操作如下:    acl client1 src




Copyright © Linux教程網 All Rights Reserved