当前位置: 首页 > 图文教程 > 服务器 > Linux服务器 > Linux下的代理服务器设置

Linux服务器
Linux上双网卡绑定方法(Suse9SP3)
Linux操作系统调优参数的意义
Linux下使用SSH客户端及其Sftp文件传送
教你恢复被误删除的Linux文件
SQL Server注入大全及防御
Linux无法解析域名的解决办法
Linux系统下安装和配置MyEclipse的方法
Ubuntu下VirtualBox 1.4.0设置文件共享
Windows与Linux系统共享StarDict字典文件
修改Linux下相关的登陆信息
Windows通过SecureCRT远程登录Linux主机
Linux操作系统如何修改SWAP交换区的大小
Linux操作系统下为Apache目录添加密码
Linux时间设置与同步(NTP)
Linux内核补丁AMD旁路转换缓冲(TLB)错误
Linux架设DHCP服务器的方法
Fedora 8下Apache配置与管理
Linux操作系统下用单网卡捆绑双IP的方法
Ubuntu Linux系统环境变量配置文件
SUSE Linux中将Tomcat作为Service运行

Linux服务器 中的 Linux下的代理服务器设置


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


作者:H2KILL


前言:
本文主要介绍了在linux使用squid和squidGuard配置代理服务器,以www代理服务为例介绍如何过滤有害站点和限制用户对internet的访问。

一.介绍
Squid是Linux下最为流行的代理服务器软件,它功能强大,支持对HTTP,FTP,Gopher,SSL和WAIS等协议的代理;设置简单,只需对配置文件中稍稍改动就可使代理服务器运转起来。而且Squid具有页面缓存功能,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户象要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。
squidGuard则是作为squid的辅助软件,完成过滤、重定向和访问控制的功能。它是一个自由软件,功能强,便于安装、易于配置、而且处理速度快。功能主要包括:根据web服务器或URLs列表限制一些用户的访问;阻塞某些用户对黑名单上的web服务器和URLs的访问;阻塞某些用户对正则表达式匹配的URLs的访问;在URL路径加强了使用域名访问而禁止用IP访问;重定向阻塞的URLs到一个智能CGI的信息页;重定向非授权用户到一个注册页面;具有基于日期、每周、每天具体时间的访问规则;对不同用户组有不同的规则。但是不能过滤、检查文档中的文本以及HTML中的JavaScript或Vbscript脚本语言。

二.安装
1。安装squid:
从www.squid-cache.org下载squid-2.4.STABLE2-src.tar.gz存在本地/usr/local/squid/src下。
在编译Squid之前,建立一个专门运行Squid的用户和组,这里建立了名为squid的组和用户,用户目录设为/usr/local/squid
#susquid
$cd/usr/local/squid/src
$tarxvzfsquid-2.4.STABLE2-src.tar.gz
$cdsquid-2.4.STABLE2
$./configure
$make
$makeinstall
(默认安装到/usr/local/squid目录下)

2。安装BerkeleyDB2.x:
从http://www.sleepycat.com下载db-2.7.7.tar.gz并存在/usr/local/squidGuard/src/目录下
$su
#cd/usr/local/squidGuard/src/
#tarxvzfdb-2.7.7.tar.gz
#cddb-2.7.7
#cdbuild_unix
#../dist/configure
#make
#makeinstall
(默认安装到/usr/local/BerkeleyDB目录下)
注意:squidGuard不支持BerkeleyDB3.x版本

3。安装squidGuard
从http://ftp.ost.eltele.no/pub/www/proxy/squidGuard/squidGuard-1.1.4.tar.gz下载软件包并存于本地/usr/local/squidGuard/src/
#cd/usr/local/squidGuard/src/
#tarxvzfsquidGuard-1.1.4.tar.gz
#cdsquidGuard-1.1.4
#./configure--with-sg-config=/usr/local/squidGuard/squidGuard.conf
--with-sg-logdir=/usr/local/squidGuard/logs
--with-sg-dbhome=/usr/local/squidGuard/db
#make
#maketest//测试ok,即可进行下一步安装
#makeinstall

三.配置
1.配置squid:
修改squid的配置文件/usr/local/squid/etc/squid.conf:
http_port8080
#squid的代理端口,使用1024以下的端口,squid必须以root身份运行
http_accessallowall
#允许所有的用户通过代理进行http访问
redirect_program/usr/local/squid/bin/squidGuard-c/usr/local/squidGuard/squidGuard.conf
#squid启用squidGuard进行过滤和转发
其它参数:
cache_mem:设置代理服务使用的内存大小,一般推荐为物理内存的三分之一
cache_dir:指定cache目录的路径,默认为/usr/local/squid/cache。
maximum_object_size:指定Squid可以接收的最大对象的大小。Squid缺省值为4M,可以根据自己的需要进行设定。
cache_dir:设定缓存的位置、大小。一般格式如下:
cache_dir/usr/local/squid/cache10016256
/usr/local/squid/cache代表缓存的位置;100代表缓存最大为100M;16和256代表一级和二级目录数。
cache_effective_user:设定使用缓存的有效用户。缺省为用户nobody,如果系统中没有用户nobody,最好建一个或以非root用户运行Squid。这里是以squid身份运行的
cache_effective_group:设定使用缓存的有效用户组。缺省组为nogroup,如果系统中没有组nogroup,最好建一个组。这里是squid组。
 (其余参数用默认值即可!)

2.配置squidGuard:
修改squidGuard的配置文件/usr/local/squidGuard/squidGuard.conf文件:

logdir/usr/local/squidGuard/logs#日志目录定义
dbhome/usr/local/squidGuard/db#db目录定义

timetesttime{#时间规则定义
weeklymtwhf05:00-10:30
weeklyas08:00-19:00
date*-*-0108:00-16:30
date2001.10.01-2001.10.09
}

srcadmin{#源组定义
ip192.168.100.18
}

srcclient{
ip192.168.100.20192.168.100.21192.168.100.22
ip192.168.200.0/24
}

destporn{#目标组定义
domainlistporn/domains
urllistporn/urls
expressionlistporn/expressions
}

acl{#访问规则定义
adminwithintesttime{
pass!pornall
}else{
passall
}

client{
pass!in-addr!pornall
}

default{
passnone
redirecthttp://admin.foo.com
(#也可以重定向到一个含有一些信息的cgi页面,如下:
http://admin.foo.com/cgi/blocked?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u)
}
}

#vidb/porn/domains
(域列表文件:主要是阻塞一些定义的站点)
co.za
sex.com
(如上,可以阻塞如hack.co.za、sex.com、www.sex.com、whatever.sex.com,但是不同于.*[^.]sex.com,不匹配ssex.com)

#vidb/porn/urls
(url列表文件,主要是阻塞一些站点及其一些栏目)
qihui.com/sex
valen.sohu.com/album
(如上可阻塞http://qihui.com/sex、http://qihui.com/sex/whatever、ftp://qihui.com/sex、http://www.qihui.com/sex等)

#vidb/porn/expressions
(表达式列表文件,主要是阻塞一些与表达式匹配的URL访问)
(^|[\?+=/])(.*)(girl)(.*)([\?+=/]|$)
(上面的正则表达式可以阻塞URL中包括girl站点的访问,如:www.girlzine.com、girl.huabao.net、www.huayu.net/girl、www.universiti.com/girl等)

注意:squidGuard对配置文件的语法要求很严,如果配置文件语法有误,squidGuard仍能运行,但是squidGuard已进入应急模式,此时代理服务不具有任何阻塞作用,所有通过该代理的访问都可通过,可以查看logs/squidGuard的日志文件,即可发现错误,例如:
2001-12-2017:08:44[2430]parseerrorinconfigfile/usr/local/squidGuard/squidGuard.confline8
2001-12-2017:08:44[2430]goingintoemergencymode
…….
其中配置文件第8行有误,squidGuard进入应急模式。
配置的具体说明详见http://www.squidguard.org/

四.运行:
$chmod777/usr/local/squid/logs
(设置logs对所有用户为可写。这样,不特定的squid代理客户才能正常访问代理服务器,并能在logs目录、产生access.log、cache.log等文件。)
$/usr/local/squid/bin/squid-z
(手工建立squid的缓存目录/usr/local/squid/cache。)
#/usr/local/squid/bin/squid
(后台执行squid。如果想前台执行squid:如果你想前台执行Squid执行命令:
$/usr/local/squid/bin/squid-NCd1
该命令正式启动Squid。如果一切正常,你会看到一行输出:
Readytoserverequests )
#psax|grepsquid
20198?S0:00/usr/local/squid/bin/squid
20200?S0:27(squid)
20310?S0:00(squidGuard)-c/usr/local/squidGuard/squidGuard.conf
20311?S0:00(squidGuard)-c/usr/local/squidGuard/squidGuard.conf
20312?S0:00(squidGuard)-c/usr/local/squidGuard/squidGuard.conf
20313?S0:00(squidGuard)-c/usr/local/squidGuard/squidGuard.conf
20314