Web代理服務器讓企業員工可以快速安全地浏覽網絡。Web代理服務器可以緩存內存,讓用戶之後對相同網頁的請求由本地緩存來處理,這比多次返回網站來得更快速。代理服務器還能掃描入站網絡流量,查找有無惡意內容,並且保護最終用戶遠離病毒;它們還可以控制哪些用戶訪問什麼樣的網絡內容。為了充分利用所有這些功能,本文逐步介紹安裝和配置一台簡單Web代理服務器(帶病毒過濾功能)的整個過程。
一個完美的安全Web代理服務器包括下列組件:
•Squid——主要的軟件和代理服務。
•ClamAV——檢查入站內容的反病毒軟件。
•C-icap——采用互聯網內容適配協議(ICAP)的服務,Squid需要該服務與其他服務進行聯系。
•SquidClamav——基於ClamAV的反病毒服務,Squid通過ICAP服務連接到該服務。
安裝配置
我們將在基本的CentOS 6平台上運行代理服務器,該平台上沒有預先安裝任何軟件包組。如果是最基本的安裝,你可以使用來自官方鏡像頁面的最小鏡像。一旦我們安裝了操作系統,就可以安裝代理服務器的各組件。
鏡像下載:http://www.centos.org/modules/tinycontent/index.php?id=30
Squid
Squid可以從官方的CentOS 6軟件庫獲得。只要執行yum install squid,即可安裝它。確保Squid隨系統自動開啟和關閉,為此借助命令chkconfig squid on,把它添加到默認的系統啟動和關閉級別。
默認情況下,Squid的主配置文件/etc/squid/squid.conf允許通過常見端口的來自本地網站的請求。去掉cache_dir ufs /var/spool/squid 100 16 256這一行的注釋,那樣代理服務器將文件緩存在磁盤上。這個命令的參數指示代理服務器使用默認的ufs存儲格式。緩存目錄是/var/spool/squid,它應該可以存儲最多100MB的內容,16個一級子目錄和256個次級子目錄。考慮將緩存大小從100MB增加到1000MB,因為100MB太低了,滿足不了如今的浏覽需求。
在同一個文件中,在默認配置信息後面,添加下列幾個命令:
icap_enable on icap_send_client_ip on icap_send_client_username on icap_client_username_encode off icap_client_username_header X-Authenticated-User icap_preview_enable on icap_preview_size 2048 icap_service service_req reqmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav adaptation_access service_req allow all icap_service service_resp respmod_precache bypass=1 icap://127.0.0.1:1344/squidclamav adaptation_access service_resp allow all
這個基本配置指示Squid使用在本地主機上運行的SquidClamav ICAP服務,本地主機使用TCP端口1344。對非緩存內容而言,需要使用這項服務。你可以從官方的Squid說明文檔,找到關於所有配置命令的更多信息。
ClamAV
ClamAV並不存在於默認的CentOS 6軟件庫中,所以你要麼從源代碼安裝,要麼使用第三方軟件庫。我建議使用EPEL軟件庫,因為它讓用戶易於安裝和維護。
要將EPEL軟件庫安裝到CentOS 6上,請運行命令rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm。之後,要安裝ClamAV,請執行yum install clamav clamav-db clamd。由於這是從EPEL軟件庫首次安裝,你會看到關於其密鑰的提醒;確認密鑰正確後才能繼續下一步。
執行chkconfig clamd on,確保ClamAV後台守護進程clamd自動啟動和終止。
你可以設置最基本的ClamAV配置,只需編輯文件/etc/clamd.conf。你得至少移除顯示Example的那一行,那樣該服務就能啟動。你可能還考慮更改一些命令的默認值。比如說,可以定義使用ScanPE、ScanELF和ScanPDF來掃描哪些文件擴展名。為了提升性能,可以將待掃描文件的默認最大值(MaxFileSize)由25MB改成其他值,或者更改每個文件的多少數據有待掃描(MaxScanSize)——100MB是默認值。值越大,所需的資源就越多,代理服務器的速度也就越慢。
ClamAV病毒特征數據庫由一個名為freshclam的獨立程序來更新。其配置文件是/etc/freshclam.conf。為了使用它,你同樣得至少移除文件開頭部分顯示Example的那一行。大多數設置不用管,保持默認值就可以了。
如果你執行沒有參數的freshclam,病毒特征更新一次,程序退出。你可以將freshclam配置成一項計劃任務(cron job),定期檢查ClamAV更新版,或者可以在後台守護模式下啟用它,只需運行freshclam -d -c 2,其中-d指明了後台守護模式,-c 2指明了每天更新幾次——這個例子中每天兩次。把這個命令添加到/etc/rc.local文件中,就可以確保下一次服務器重啟時,它會啟用。
在/etc/freshclam.conf中可能需要更改的一項值得關注的設置是SafeBrowsing,它在默認情況下被設置成關閉。這個設置指定了你是不是想使用谷歌的Safe Browsing(安全浏覽)數據庫,該數據庫裡面含有一份更新後的列表,收錄了已知的惡意網站。你應該啟用它,對性能只有一點影響,除非貴企業的最終用戶在使用已經采用該數據庫的浏覽器,比如Mozilla Firefox和谷歌Chrome。你只要指定SafeBrowsing yes,就可以開啟它。
C-icap
C-icap並不存在於默認的軟件庫或EPEL中,所以你得從其網站的源代碼安裝,對其進行解壓縮,然後完成標准的配置、編譯和安裝這個過程。
由於C-icap是從源代碼自定義安裝,並不得到chkconfig的支持。因而,為了讓C-icap服務器在系統啟動時自動開啟,就用新的一行,將其二進制可執行代碼/usr/local/bin/c-icap添加到底部的/etc/rc.local。
你可以找到默認情況下在/usr/local/etc/c-icap.conf的C-icap配置文件。大多數默認選項不用管它。指定ServerLog /var/log/icapserver.log,將服務器的活動記錄到文件/var/log/icapserver.log中;我們以後要用到服務器的日志,確保一切都在正常運行。
你在檢查配置時,要注意ModulesDir和ServicesDir這兩個命令。默認情況下,兩者都指向/usr/local/lib/c_icap。這個目錄是你安裝ICAP服務和模塊(如SquidClamav)的地方。
SquidClamav
你得從源代碼安裝SquidClamav,原因與C-icap一樣。一旦你從其SourceForge網頁下載它,對其進行解壓縮,然後完成標准的配置、編譯和安裝這個過程。
為了確保SquidClamav正確安裝,要檢查目錄/usr/local/lib/c_icap。你應該會看到兩個文件:squidclamav.la(libtool 庫文件)和squidclamav.so(模塊本身)。
SquidClamav並不作為一項獨立的服務來運行,所以沒必要把它添加到默認的運行級別來實現自動啟動。相反,它是通過C-icap服務器來訪問的。
SquidClamav的配置文件位於/etc/squidclamav.conf。這裡,默認配置的大部分選項直接可以拿來用。要更改的其中一個選項是redirect。最終用戶試圖下載病毒時,他們會被重定向至你在這裡指定的URL。創建詳細描述的一個頁面,否則你這個管理員會接到大量投訴,反映下載的內容莫名其妙地無法運行。
為了創建重定向頁面,可以使用腳本cgi-bin/clwarn.cgi,你可以在SqidClamav的源代碼歸檔文件中找到它。只要將它上傳至網站,指定redirect example.org/cgi-bin/clwarn.cgi即可。
測試代理服務器
至此,你的代理服務器應該已安裝完畢、合理配置。為了確保所有服務自動開啟,重啟服務器,然後開始測試。
你開始測試時,確保可以通過TCP端口3128這個默認代理端口,連接到服務器的IP地址。你必須在默認的CentOS 6防火牆中允許連接到這個端口,除非按基本CentOS 6安裝中建議的那樣禁用了防火牆。
一旦你確保了可以連接到這個端口,對浏覽器進行同樣詳細的配置:至於HTTP代理地址,就使用服務器的IP地址;至於端口,使用端口3128。然後開始浏覽網絡,看看代理服務器與未使用代理的浏覽相比結果怎樣。不妨模擬一下許多用戶通常浏覽的場景。你可能會發現,隨著更多的用戶開始使用代理服務器,服務器的資源必須隨之增加。
在服務器端,監控下列日志:
•Squid的日志——默認情況下,它在文件/var/log/squid/access.log中。你會在那裡看到哪些用戶的IP地址在提出什麼樣的請求。
•C-icap服務器的日志——與/usr/local/etc/c-icap.conf中通過ServerLog之前配置的那樣,它應該在/var/log/icapserver.log中。
對你的代理服務器來說最重要的測試就是,試著下載病毒,看看結果如何。網上有眾多資源介紹如何創建含有已知病毒特征的測試文件。一旦創建了這樣一個文件,把它上傳至某個地方,試著使用新建的代理服務器,用浏覽器來下載它。如果一切運行正常,在C-icap服務器的日志中應該會看到這樣的條目:
Wed Feb 22 01:03:57 2012, general, DEBUG squidclamav_end_of_data_handler: received from Clamd: stream: Eicar-Test-Signature FOUND Wed Feb 22 01:03:57 2012, general, DEBUG squidclamav_end_of_data_handler: Virus redirection: http://example.org/cgi-bin/clwarn.cgi?url=http://the_url_of_your_test_virus_file: Eicar-Test-Signature FOUND.
進一步的改進
如果到目前為止你已經做好了本文介紹的各個步驟,應該有一個帶病毒防護功能的基本代理服務器了。你可以在此基礎上繼續改進、添加更多的功能。下面是針對你添加額外組件來加強用戶安全的幾個建議:
•使用安全DNS。這種DNS不僅可以阻止擴散惡意軟件的域耗用資源,還能阻止成人網站,如果進行了相應配置的話。一項廣受歡迎的安全DNS服務是諾頓DNS。
•使用URL過濾(重定向器)。URL過濾器可與分門類別的域列表協同運行,可以根據用戶擁有的許可權限,允許或禁止訪問網站。這類過濾器經常用於阻止員工訪問與工作無關的網站。可與Squid協同運行的一種廣受歡迎的過濾器是SquidGuard。它是免費開源的,可以與隨處可見的黑名單結合使用。
要是由於某個原因,這款開源代理解決方案無法完全滿足你的需要,可以研究一下主要的幾款商用產品,比如SmoothWall,以便最好地滿足貴企業的需要。