Web代理服務(wù)器讓企業(yè)員工可以快速安全地瀏覽網(wǎng)絡(luò)粱胜。Web代理服務(wù)器可以緩存內(nèi)存灿里,讓用戶之后對相同網(wǎng)頁的請求由本地緩存來處理,這比多次返回網(wǎng) 站來得更快速阱州。代理服務(wù)器還能掃描入站網(wǎng)絡(luò)流量,查找有無惡意內(nèi)容捶朵,并且保護最終用戶遠離病毒;它們還可以控制哪些用戶訪問什么樣的網(wǎng)絡(luò)內(nèi)容狂男。為了充分利 用所有這些功能综看,本文逐步介紹安裝和配置一臺簡單Web代理服務(wù)器(帶病毒過濾功能)的整個過程。
一個完美的安全Web代理服務(wù)器包括下列組件:
- Squid——主要的軟件和代理服務(wù)并淋。
- ClamAV——檢查入站內(nèi)容的反病毒軟件。
- C-icap——采用互聯(lián)網(wǎng)內(nèi)容適配協(xié)議(ICAP)的服務(wù)珍昨,Squid需要該服務(wù)與其他服務(wù)進行聯(lián)系县耽。
- SquidClamav——基于ClamAV的反病毒服務(wù),Squid通過ICAP服務(wù)連接到該服務(wù)镣典。
安裝配置
我們將在基本的CentOS 6平臺上運行代理服務(wù)器兔毙,該平臺上沒有預(yù)先安裝任何軟件包組。如果是最基本的安裝兄春,你可以使用來自官方鏡像頁面的最小鏡像澎剥。一旦我們安裝了操作系統(tǒng),就可以安裝代理服務(wù)器的各組件赶舆。
鏡像下載:http://www.centos.org/modules/tinycontent/index.php?id=30
Squid
Squid可以從官方的CentOS 6軟件庫獲得哑姚。只要執(zhí)行yum install squid,即可安裝它芜茵。確保Squid隨系統(tǒng)自動開啟和關(guān)閉叙量,為此借助命令chkconfig squid on,把它添加到默認的系統(tǒng)啟動和關(guān)閉級別九串。
默認情況下绞佩,Squid的主配置文件/etc/squid/squid.conf允許通過常見端口的來自本地網(wǎng)站的請求寺鸥。去掉cache_dir ufs /var/spool/squid 100 16 256這一行的注釋,那樣代理服務(wù)器將文件緩存在磁盤上品山。這個命令的參數(shù)指示代理服務(wù)器使用默認的ufs存儲格式胆建。緩存目錄是/var/spool /squid,它應(yīng)該可以存儲最多100MB的內(nèi)容肘交,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服務(wù),本地主機使用TCP端口1344市栗。對非緩存內(nèi)容而言缀拭,需要使用這項服務(wù)。你可以從官方的Squid說明文檔填帽,找到關(guān)于所有配置命令的更多信息蛛淋。
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其监,請執(zhí)行yum install clamav clamav-db clamd。由于這是從EPEL軟件庫首次安裝限匣,你會看到關(guān)于其密鑰的提醒抖苦;確認密鑰正確后才能繼續(xù)下一步。
執(zhí)行chkconfig clamd on米死,確保ClamAV后臺守護進程clamd自動啟動和終止锌历。
你可以設(shè)置最基本的ClamAV配置,只需編輯文件/etc/clamd.conf峦筒。你得至少移除顯示Example的那一行辩涝,那樣該服務(wù)就能啟 動。你可能還考慮更改一些命令的默認值勘天。比如說怔揩,可以定義使用ScanPE捉邢、ScanELF和ScanPDF來掃描哪些文件擴展名。為了提升性能商膊,可以將 待掃描文件的默認最大值(MaxFileSize)由25MB改成其他值伏伐,或者更改每個文件的多少數(shù)據(jù)有待掃描(MaxScanSize)——100MB 是默認值。值越大晕拆,所需的資源就越多藐翎,代理服務(wù)器的速度也就越慢。
ClamAV病毒特征數(shù)據(jù)庫由一個名為freshclam的獨立程序來更新实幕。其配置文件是/etc/freshclam.conf吝镣。為了使用它,你同樣得至少移除文件開頭部分顯示Example的那一行昆庇。大多數(shù)設(shè)置不用管末贾,保持默認值就可以了。
如果你執(zhí)行沒有參數(shù)的freshclam整吆,病毒特征更新一次拱撵,程序退出。你可以將freshclam配置成一項計劃任務(wù)(cron job)表蝙,定期檢查ClamAV更新版拴测,或者可以在后臺守護模式下啟用它,只需運行freshclam -d -c 2府蛇,其中-d指明了后臺守護模式集索,-c 2指明了每天更新幾次——這個例子中每天兩次。把這個命令添加到/etc/rc.local文件中汇跨,就可以確保下一次服務(wù)器重啟時务荆,它會啟用。
在/etc/freshclam.conf中可能需要更改的一項值得關(guān)注的設(shè)置是SafeBrowsing扰法,它在默認情況下被設(shè)置成關(guān)閉蛹含。這個設(shè)置 指定了你是不是想使用谷歌的Safe Browsing(安全瀏覽)數(shù)據(jù)庫毅厚,該數(shù)據(jù)庫里面含有一份更新后的列表塞颁,收錄了已知的惡意網(wǎng)站。你應(yīng)該啟用它吸耿,對性能只有一點影響祠锣,除非貴企業(yè)的最終用 戶在使用已經(jīng)采用該數(shù)據(jù)庫的瀏覽器,比如Mozilla Firefox和谷歌Chrome咽安。你只要指定SafeBrowsing yes伴网,就可以開啟它。
C-icap
C-icap并不存在于默認的軟件庫或EPEL中妆棒,所以你得從其網(wǎng)站的源代碼安裝澡腾,對其進行解壓縮沸伏,然后完成標準的配置、編譯和安裝這個過程动分。
由于C-icap是從源代碼自定義安裝毅糟,并不得到chkconfig的支持。因而澜公,為了讓C-icap服務(wù)器在系統(tǒng)啟動時自動開啟姆另,就用新的一行,將其二進制可執(zhí)行代碼/usr/local/bin/c-icap添加到底部的/etc/rc.local坟乾。
你可以找到默認情況下在/usr/local/etc/c-icap.conf的C-icap配置文件迹辐。大多數(shù)默認選項不用管它。指定 ServerLog /var/log/icapserver.log甚侣,將服務(wù)器的活動記錄到文件/var/log/icapserver.log中明吩;我們以后要用到服務(wù)器的 日志,確保一切都在正常運行渺绒。
你在檢查配置時贺喝,要注意ModulesDir和ServicesDir這兩個命令。默認情況下宗兼,兩者都指向/usr/local/lib/c_icap躏鱼。這個目錄是你安裝ICAP服務(wù)和模塊(如SquidClamav)的地方。
SquidClamav
你得從源代碼安裝SquidClamav殷绍,原因與C-icap一樣染苛。一旦你從其SourceForge網(wǎng)頁下載它,對其進行解壓縮主到,然后完成標準的配置茶行、編譯和安裝這個過程。
為了確保SquidClamav正確安裝登钥,要檢查目錄/usr/local/lib/c_icap畔师。你應(yīng)該會看到兩個文件:squidclamav.la(libtool 庫文件)和squidclamav.so(模塊本身)。
SquidClamav并不作為一項獨立的服務(wù)來運行牧牢,所以沒必要把它添加到默認的運行級別來實現(xiàn)自動啟動看锉。相反,它是通過C-icap服務(wù)器來訪問的塔鳍。
SquidClamav的配置文件位于/etc/squidclamav.conf伯铣。這里,默認配置的大部分選項直接可以拿來用轮纫。要更改的其中一個 選項是redirect腔寡。最終用戶試圖下載病毒時,他們會被重定向至你在這里指定的URL掌唾。創(chuàng)建詳細描述的一個頁面放前,否則你這個管理員會接到大量投訴忿磅,反 應(yīng)下載的內(nèi)容莫名其妙地無法運行。
為了創(chuàng)建重定向頁面凭语,可以使用腳本cgi-bin/clwarn.cgi贝乎,你可以在SqidClamav的源代碼歸檔文件中找到它。只要將它上傳至網(wǎng)站叽粹,指定redirect example.org/cgi-bin/clwarn.cgi即可览效。
測試代理服務(wù)器
至此,你的代理服務(wù)器應(yīng)該已安裝完畢虫几、合理配置锤灿。為了確保所有服務(wù)自動開啟,重啟服務(wù)器辆脸,然后開始測試但校。
你開始測試時,確狈惹猓可以通過TCP端口3128這個默認代理端口状囱,連接到服務(wù)器的IP地址。你必須在默認的CentOS 6防火墻中允許連接到這個端口倘是,除非按基本CentOS 6安裝中建議的那樣禁用了防火墻亭枷。
一旦你確保了可以連接到這個端口,對瀏覽器進行同樣詳細的配置:至于HTTP代理地址搀崭,就使用服務(wù)器的IP地址叨粘;至于端口,使用端口3128瘤睹。然后 開始瀏覽網(wǎng)絡(luò)升敲,看看代理服務(wù)器與未使用代理的瀏覽相比結(jié)果怎樣。不妨模擬一下許多用戶通常瀏覽的場景轰传。你可能會發(fā)現(xiàn)驴党,隨著更多的用戶開始使用代理服務(wù)器, 服務(wù)器的資源必須隨之增加获茬。
在服務(wù)器端港庄,監(jiān)控下列日志:
- Squid的日志——默認情況下,它在文件/var/log/squid/access.log中锦茁。你會在那里看到哪些用戶的IP地址在提出什么樣的請求攘轩。
- C-icap服務(wù)器的日志——與/usr/local/etc/c-icap.conf中通過ServerLog之前配置的那樣叉存,它應(yīng)該在/var/log/icapserver.log中码俩。
對你的代理服務(wù)器來說最重要的測試就是,試著下載病毒歼捏,看看結(jié)果如何稿存。網(wǎng)上有眾多資源介紹如何創(chuàng)建含有已知病毒特征的測試文件笨篷。一旦創(chuàng)建了這樣一個文件,把它上傳至某個地方瓣履,試著使用新建的代理服務(wù)器率翅,用瀏覽器來下載它。如果一切運行正常袖迎,在C-icap服務(wù)器的日志中應(yīng)該會看到這樣的條目:
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.
進一步的改進
如果到目前為止你已經(jīng)做好了本文介紹的各個步驟冕臭,應(yīng)該有一個帶病毒防護功能的基本代理服務(wù)器了。你可以在此基礎(chǔ)上繼續(xù)改進燕锥、添加更多的功能辜贵。下面是針對你添加額外組件來加強用戶安全的幾個建議:
- 使用安全DNS。這種DNS不僅可以阻止擴散惡意軟件的域耗用資源归形,還能阻止成人網(wǎng)站托慨,如果進行了相應(yīng)配置的話。一項廣受歡迎的安全DNS服務(wù)是諾頓DNS暇榴。
- 使用URL過濾(重定向器)厚棵。URL過濾器可與分門類別地域列表協(xié)同運行,可以根據(jù)用戶擁有的許可權(quán)限蔼紧,允許或禁止訪問網(wǎng)站婆硬。這類過濾器經(jīng)常用于阻止員工訪問與工作無關(guān)的網(wǎng)站〖槔可與Squid協(xié)同運行的一種廣受歡迎的過濾器是SquidGuard柿祈。它是免費開源的,可以與隨處可見的黑名單結(jié)合使用哩至。
要是由于某個原因躏嚎,這款開源代理解決方案無法完全滿足你的需要,可以研究一下主要的幾款商用產(chǎn)品菩貌,比如SmoothWall卢佣,以便最好地滿足貴企業(yè)的需要。