代理服務器的功能是代理網絡用戶取得網絡信息,它是網絡信息的中轉站。隨著代理服務器的廣泛使用,隨之而來的是一系列的安全問題。由於沒有對代理服務器的訪問控制策略做全面細致地配置,導致用戶可以隨意地通過代理服務器訪問許多色情、反動的非法站點,而這些行為往往又很難追蹤,給管理工作帶來極大的不便。以下為您介紹Linux下常用的Squid代理服務器的安全策略,期望拋磚引玉,對您的工作有所幫助。
控制對客戶端訪問
使用訪問控制特性,可以控制在訪問時根據特定的時間間隔進行緩存、訪問特定站點或一組站點等。Squid訪問控制有兩個要素:ACL元素和訪問列表。通過使用這些方法,系統管理員可以嚴格、清晰地定義代理服務器的訪問控制策略。下面介紹一些例子:
◆ 允許內部一個網段的私有IP地址進行轉發
acl me src 172.16.0.0/255.255.0.0
http_access allow all
上面的規則允許172.16.0.0這個網段的IP都被轉發,但注意要在配置文件的最後加上“http_access deny all”,表示以上各規則都不匹配時拒絕所有的數據包?/p>
◆ 允許列表中的機器訪問互聯網
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
如果允許網段10.0.0.124/24以及192.168.10.15/24內的所有客戶機訪問代理服務器,並且允許在文件/etc/squid/guest列出的客戶機訪問代理服務器,除此之外的客戶機將拒絕訪問本地代理服務器。其中,文件“/etc/squid/guest”中的內容為:
172.168.10.3/24
210.113.24.8/16
10.0.1.24/25
◆ 限制訪問時段
acl allclient src 0.0.0.0/0.0.0.0
acl administrator 192.168.10.0/24
acl common_time time MTWH 8:30-20:30
acl manage_time time F 13:00-18:00
上面的規則允許所有的用戶在規定的時間內(周一至周四的8:30到20:30)訪問代理服務器,只允許特定的用戶(系統管理員,其網段為:192.168.10.0/24)在周五下午訪問代理服務器,其他的在周五下午一律拒絕訪問代理服務器。
◆ 站點屏蔽
Squid可以屏蔽某些特定站點或含有某些特定字詞的站點。用下面的規則實現:
acl sexip src "/usr/local/squid/etc/sexip"
acl sexdn dstdomain "/usr/local/squid/etc/sexdn"
acl sexurl url_regex "/usr/local/squid/etc/sexurl"
acl sextag urlpath_regex "/usr/local/squid/etc/sextag"
http_access deny sexdn
http_access deny sexip
http_access deny sexurl
http_access deny sextag
上述代碼中共有兩部分,它們分別表示:sexip記錄不法IP地址133.3.103.6;sexdn記錄不法域sex.abc.com;exurl記錄不合法網址;sextag記錄不合法字眼—情色。在實際應用中,無須把需要屏蔽的所有站點或字詞都列在上面,可以先保存在一個文件中。ACL將從該文件中讀出所需信息用以屏蔽被禁止的站點。
◆ CONNECT的設置
目前存在有些用戶通過二級代理軟件訪問一些不健康的站點,可以在Squid中通過CONNECT項來拒絕。首先設置安全端口:
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
接著對通過CONNECT的非安全端口予以拒絕,使用如下命令:
http_access deny CONNECT !SSL_ports
最後對Squid進行重新編輯:
#/squid/bin/squid -k reconfigure
通過“tail/squid/logs/access.log -f |grep CONNECT”命令將看到使用CONNECT上網的非安全端口計算機都被拒絕。
管理代理服務器端口
沒人願意把自己的服務器作為義務代理服務器;同時,代理服務器很容易被用作對別人進行攻擊的跳板。所以,代理服務器軟件Squid也不可以隨便提供服務,只需要在對應的squid.conf中加上“http_port 192.168.0.254:3128”,就能實現這一目標。這樣由其它接口進入的用戶就沒辦法使用代理服務了。
關注Squid日志
Linux網絡管理員應當盡量記錄所有日志,這些日志會記錄所有異常訪問的線索。最簡單的方式便是通過浏覽器來觀察。squid本身提供一個cgi程序,文件名為cachemgr.cgi,squid安裝完後將它復制到Apache服務器下的cgi-bin這個目錄下即可使用。
mv /usr/lib/squid/cachemgr.cgi /home/httpd/cgi-bin
通過apache進行監控squid,修改配置文件/etc/http/conf/http.conf,添加以下內容:
<Location /cgi-bin/cachemgr.cgi>
AuthType Basic
AuthNamw "Squid admin"
AuthUserFile /usr/local/squid/etc/squid.pwd
require valid-user
</Location>生成口令文件:
cd /usr/local/squid/etc
htpasswd -c squid.pwd squidadmin
chown apache:apche squid.pwd
重啟squid與http,要察看Cache Manager提供的信息時,請在浏覽器的地址列中鍵入“http://服務器的名稱”或“IP地址/cgi-bin/cachemgr.cgi”。首先看到用戶認證界面,經過認證後進入登錄界面,輸入代理服務器地址和端口號,點激“continue”按紐進入工作界面見圖1。
為Squid代理服務器串列HAVP
HAVP是一個開放源代碼的Linux病毒過濾代理服務器,使用C++語言編寫。HAVP通常會和Squid串列使用,它使用ClamAV anti-virus病毒庫,可以增強Squid防范病毒能力。
HAVP配置步驟:
1.首先解壓壓縮包
#gunzip havp-0.70.tar.gz
#cd /havp-0.70
2.修改配置文件havp/default.h
#define SCANTEMPFILE "/tmp/virus/havp-0.70 /定義掃描臨時目錄/
#define MAXSCANTEMPFILELENGTH 200 /臨時文件目錄長度/
#define ACCESSLOG "/var/log/havp/access.txt" /訪問日志文件/
#define ERRORLOG "/var/log/havp/error.txt" /錯誤日志文件/
#define KEEPBACKBUFFER 50005 /回送緩沖區大小/
#define MAXRECV 50000 /返回緩沖區大小/
#define USER nobody /HAVP進程用戶/
……
3.修改ClamAV文件的clamav-config.h 文件,將選項SCANBUFF設置比”MAXRECV”小一些
4.編譯文件
#./configure;make;make install
5.啟動HAVP
#/usr/local/bin/havp
通過網站:http://www.eicar.org/anti_virus_test_file.htm查看掃描結果是否正常。但HAVP目前只能針對HTTP協議的病毒進行檢測和過濾,但是對於HTTPS、FTP其它協議不能實現。