squid 安全策略 [with HAVP & CLAMAV]

来源:互联网 发布:cad图纸打印软件 编辑:程序博客网 时间:2024/05/04 19:19
 

代理服务器的功能是代理网络用户取得网络信息,它是网络信息的中转站。随着代理服务器的广泛使用,随之而来的是一系列的安全问题。由于没有对代理服务器的访问控制策略做全面细致地配置,导致用户可以随意地通过代理服务器访问许多色情、反动的非法站点,而这些行为往往又很难追踪,给管理工作带来极大的不便。以下为您介绍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”,表示以上各规则都不匹配时拒绝所有的数据包。
◆ 允许列表中的机器访问互联网
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其它协议不能实现。