当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > 搭建Linux安全的Squid代理服务器(图)

Linux服务器
linux下用cron定时执行任务的方法
.htaccess绑定域名到子目录的方法
linux apache下虚拟主机配置方法
apache 局域网访问配置方案
linux Apache服务器系统安全设置与优化
linux中mac地址绑定方法
linux托盘不断闪烁之解决方法
Apache配置 虚拟转向实例
Apache No space left on device的解决办法
Apache rewrite的重写相关的参数说明
LINUX入门级常用命令20条整理
Ubuntu设置开机自动挂载所有格式硬盘分区
5个可能被你忽略的Linux安全设置方法
学习Apache的mod rewrite、access写法
改版时保留原链接,创建新的URL的方法
rsync中文手册之使用rsync实现网站镜像和备份linux
rsync 数据同步使用详解
linux URL的301重定向代码分析
eclipse3.2.2 + MyEclipse5.5 + Tomcat5.5.27 配置数据库连接池
Apache服务器二级域名的完美实现

Linux服务器 中的 搭建Linux安全的Squid代理服务器(图)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 71 ::
收藏到网摘: n/a


本文介绍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等。

安装和配置SquidServer

通常说来,安装Squid有两种方法:一是从RedHatLinux9中获取该软件的RPM包进行;二是安装从Squid的官方站点http://www.squid-cache.org/下载该软件的源码进行编译后安装。目前网上最新的稳定版本为squid-2.5.STABLE10,下面以此版本为例对两种安装方法进行介绍。

Squid服务器工作原理示意图

1.RPM包的安装

首先,查看是否已经安装了squid:

#rpm-qa|grepsquid

RedHatLinux9自带了Squid安装软件包,将第一张安装光盘放入光驱后挂装光盘分区:

#mount/mnt/cdrom

然后,进入/mnt/cdrom/RedHat/RPMS目录:

#cd/mnt/cdrom/RedHat/RPMS

最后,执行安装:

#rpm-ivhsquid-2.5.STABLE1-2.i386.rpm

当然,我们也可以在开始安装系统的过程中安装该软件。

2.源代码包的安装

从http://www.squid-cache.org/下载squid软件的最新源代码包squid-2.5.STABLE10.tar.gz,然后,按照如下步骤进行安装。

首先,将该文件拷贝到/tmp目录:

#cpsquid-2.5.STABLE10.tar.gz/tmp

然后,解开该文件:

#tarxzvfsquid-2.5.STABLE10.tar.gz

解开后,在/tmp生成一个新的目录squid-2.5.STABLE10,为了方便使用mv命令,将该目录重命名为squid:

#mvsquid-2.5.STABLE10squid

切换进入squid目录:

#cdsquid

接着,执行/configure,可以用./configure--prefix=/directory/you/want指定安装目录,系统默认安装目录为/tmp/squid:

#./configure

最后,分别执行makeall、makeinstall:

#makeall

#makeinstall

安装结束后,Squid的可执行文件在安装目录的bin子目录下,配置文件在etc子目录下。

Squid软件向用户提供了许多与配置、应用程序和库、日志等相关的文档进行配置和管理,Squid有一个主要的配置文件squid.conf。同时,在RedHat环境下所有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-Transitobjects(传入的对象)、HotObjects(热对象,即用户常访问的对象)、Negative-Cachedobjects(消极存储的对象)。

3.cache_dirDirectory-NameMbytesLevel1Level2

该选项指定Squid用来存储对象的交换空间的大小及其目录结构。可以用多个cache_dir命令来定义多个交换空间,并且这些交换空间可以分布在不同的磁盘分区。“directory”指明了该交换空间的顶级目录。如果想用整个磁盘作为交换空间,那么可以将该目录作为装载点将整个磁盘挂装上去。默认值为/var/spool/squid。Mbytes定义了可用的空间总量。

配置访问控制

使用访问控制特性,可以控制在访问时根据特定的时间间隔进行缓存、访问特定站点或一组站点等。Squid访问控制有两个要素:ACL元素和访问列表。通过使用这些方法,系统管理员可以严格、清晰地定义代理服务器的访问控制策略。

1.ACL元素

该元素定义的语法如下:

aclaclnameacltypestring1…

aclaclnameacltype“file”…

当使用文件时,该文件的格式为每行包含一个条目。其中,acltype可以是任一个在ACL中定义的名称;任何两个ACL元素不能用相同的名字;每个ACL由列表值组成,当进行匹配检测的时候,多个值由逻辑或运算连接,换句话说,任一ACL元素的值被匹配,则这个ACL元素即被匹配;并不是所有的ACL元素都能使用访问列表中的全部类型;不同的ACL元素写在不同行中,Squid将这些元素组合在一个列表中。

2.http_access访问控制列表

根据访问控制列表允许或禁止某一类用户访问。如果某个访问没有相符合的项目,则默认为应用最后一条项目的“非”。比如最后一条为允许,则默认就是禁止。通常应该把最后的条目设为“denyall”或“allowall”来避免安全性隐患。使用该访问控制列表需要注意如下问题:

●这些规则按照它们的排列顺序进行匹配检测,一旦检测到匹配的规则,匹配检测就立即结束;

●访问列表可以由多条规则组成;

●如果没有任何规则与访问请求匹配,默认动作将与列表中最后一条规则对应;

●一个访问条目中的所有元素将用逻辑与运算连接,如下所示:

http_accessAction声明1AND声明2AND声明OR

http_accessAction声明3

●多个http_access声明间用或运算连接,但每个访问条目的元素间用与运算连接;

●列表中的规则总是遵循由上而下的顺序。

3.使用访问控制

上面详细讲述了ACL元素以及http_access访问控制列表的语法以及使用过程中需要注意的问题,下面给出使用这些访问控制方法的实例。

如果,允许网段10.0.0.124/24以及192.168.10.15/24内的所有客户机访问代理服务器,并且允许在文件/etc/squid/guest列出的客户机访问代理服务器,除此之外的客户机将拒绝访问本地代理服务器。那么具体操作如下:

aclclientssrc10.0.0.124/24192.168.10.15/24

aclguestssrc“/etc/squid/guest”

aclallsrc0.0.0.0/0.0.0.0

http_accessallowclients

http_accessallowguests

http_accessdenyall

其中,文件“/etc/squid/guest”中的内容为:

172.168.10.3/24

210.113.24.8/16

10.0.1.24/25

……

如果,允许域名为job.net、gdfq.edu.cn的两个域访问本地代理服务器,其他的域都将拒绝访问本地代理服务器。那么具体操作如下:

aclpermitted_domainsrcjob.netgdfq.edu.cn

aclallsrc0.0.0.0/0.0.0.0

http_accessallowpermitted_domain

http_accessdenyall

如果,使用正则表达式,拒绝客户机通过代理服务器访问包含有诸如“sexy”等关键字的网站。那么具体操作如下:

acldeny_urlurl_regex-sexy

http_accessdenydeny_url

如果,拒绝客户机通过代理服务器访问文件中指定IP或者域名的网站,其中文件/etc/squid/deny_ip中存放有拒绝访问的IP地址,文件/etc/squid/deny_dns中存放有拒绝访问的域名。那么具体操作如下:

acldeny_ipdst“etc/squid/deny_ip”

acldeny_dnsdst“etc/squid/deny_dns”

http_accessdenydeny_ip

http_accessdenydeny_dns

如果,允许和拒绝指定的用户访问指定的网站,其中,允许客户1访问网站http://www.sina.com.cn,而拒绝客户2访问网站http://www.163.com。那么具体操作如下:

aclclient1src