代码驿站移动版
频道导航
HTML/Xhtml
CSS
JavaScript
HTML5
PHP教程
ASP.NET
正则表达式
AJAX
ThinkPHP
Yii
MySQL
MariaDB
Oracle
MongoDB
Redis
DedeCMS
PHPCMS
帝国CMS
WordPress
Discuz
其它CMS
Zend Studio
Sublime
Notepad
Dreamweaver
Windows
Linux
Nginx
Apache
IIS
CentOS
Ubuntu
Debian
网站优化
工具资源
PHP源码
ASP.NET源码
其它源码
图标素材
按钮素材
字体素材
DedeCMS模板
帝国CMS模板
PHPCMS模板
WordPress模板
Discuz!模板
单页模板
开发软件下载
服务器软件下载
广告投放
联系我们
版权申明
软件编程
网页前端
移动开发
数据库
服务器
脚本语言
PHP代码
JAVA代码
Python代码
Android代码
当前位置:
主页
>
服务器
>
Linux
>
Linux下的代理服务器设置
时间:2021-02-21 14:55:47 | 栏目:
Linux
| 点击:次
前言:
本文主要介绍了在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
#su squid
?$cd /usr/local/squid/src
?$tar xvzf squid-2.4.STABLE2-src.tar.gz
?$ cd squid-2.4.STABLE2
?$./configure
?$make
?$make install
(默认安装到/usr/local/squid目录下)
2。安装Berkeley DB 2.x:
从http://www.sleepycat.com 下载db-2.7.7.tar.gz并存在/usr/local/squidGuard/src/目录下
?$su
#cd /usr/local/squidGuard/src/
#tar xvzf db-2.7.7.tar.gz
#cd db-2.7.7
#cd build_unix
#../dist/configure
#make
#make install
(默认安装到/usr/local/BerkeleyDB目录下)
注意:squidGuard不支持Berkeley DB 3.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/
#tar xvzf squidGuard-1.1.4.tar.gz
#cd squidGuard-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
#make test????????????//测试ok,即可进行下一步安装
#make install
三.??配置
1.配置squid:
?修改squid的配置文件/usr/local/squid/etc/squid.conf:
?http_port 8080??
#squid的代理端口,使用1024以下的端口,squid必须以root身份运行
?http_access allow all?
?#允许所有的用户通过代理进行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/cache 100 16 256
/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目录定义
?time testtime {???????????????#时间规则定义
??? weekly mtwhf 05:00 - 10:30
??? weekly as??08:00 - 19:00
??? date *-*-01? 08:00 - 16:30
??? date 2001.10.01 - 2001.10.09
?}
?src admin {???????????????? #源组定义
????ip?? 192.168.100.18
?}
?src client{
????ip?? 192.168.100.20 192.168.100.21 192.168.100.22
????ip?? 192.168.200.0/24
?}
?dest porn {?????????????????#目标组定义
????domainlist porn/domains
????urllist??porn/urls
????expressionlist porn/expressions
?}
?acl {??????????????????? #访问规则定义
????admin within testtime {
??????pass !porn all
????} else {
??????pass all
????}
????client {
??????pass !in-addr !porn all
????}
????default {
??????pass none
??????redirect? http://admin.foo.com
(#也可以重定向到一个含有一些信息的cgi页面,如下:
http://admin.foo.com/cgi/blocked?clientaddr=%a&clientname=%n&clientuser=%i&clientgroup=%s&targetgroup=%t&url=%u)
????}
?}
?# vi db/porn/domains????????????
(域列表文件:主要是阻塞一些定义的站点)
?co.za
?sex.com
(如上,可以阻塞如hack.co.za、sex.com、www.sex.com、whatever.sex.com,但是不同于.*[^.]sex.com,不匹配ssex.com)
?# vi db/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等)
?# vi db/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-20 17:08:44 [2430] parse error in configfile /usr/local/squidGuard/squidGuard.conf line 8
2001-12-20 17:08:44 [2430] going into emergency mode
…….
其中配置文件第8行有误,squidGuard进入应急模式。
配置的具体说明详见http://www.squidguard.org/
四.??运行:
?$ chmod 777 /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。如果一切正常,你会看到一行输出:
Ready to serve requests)
# ps ax|grep squid
20198 ?????S???0:00 /usr/local/squid/bin/squid
20200 ?????S???0:27 (squid)
20310 ?????S???0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20311 ?????S???0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20312 ?????S???0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20313 ?????S???0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
20314 ?????S???0:00 (squidGuard) -c /usr/local/squidGuard/squidGuard.conf
(此时squidGuard也已启用,每次修改配置后squid -k reconfigure重新起用即可,要杀掉squid执行squid -k kill)
查看squidGuard日志文件:
init domainlist /usr/local/squidGuard/db/porn/domains
2001-12-20 16:14:43 [2270] init domainlist /usr/local/squidGuard/db/porn/domains
2001-12-20 16:14:43 [2270] init urllist /usr/local/squidGuard/db/porn/urls
2001-12-20 16:14:43 [2270] init expressionlist /usr/local/squidGuard/db/porn/expressions
2001-12-20 16:14:43 [2270] squidGuard 1.1.4 started (1008836083.022)
2001-12-20 16:14:43 [2270] recalculating alarm in 917 seconds
2001-12-20 16:14:43 [2270] squidGuard ready for requests (1008836083.044)
表示squidGuard已正常启动
五.??测试:
配置客户端,然后测试代理服务:
在另一台win2k上,(以Internet Explore5.0为例)运行IE,单击"工具",接着单击"Internet选项",再单击"连接"选项卡,单击"局域网设置";在"局域网设置"窗口中,在"地址"处填上squid服务器的IP地址192.168.100.16,在"端口"处填上"8080"(修改后squid代理使用的端口号,也就是squid.conf中的http_port,默认值为3128),确定后退出。
接下来,先把IP改成192.168.100.20,浏览一些网站,如sohu,163等,然后再试试domains和urls中定义的,如hack.co.za、qihui.com/sex,会发现主页被重定向到http://admin.foo.com。然后再试试浏览有关girl的网站,去不了了:(;在sohu中搜girl也被重定向了;用IP试试(有些代理程序对IP不做限制,用IP可以绕过代理的限制访问一些禁止的站点),可惜不行!(因为squidGuard配置文件中使用了!in_addr,所以可以强迫用户使用域名访问而不能使用ip访问)
再下来,把IP改成192.168.100.18,然后时间改为testtime外的时间,浏览网页,试试结果,然后再将时间改为testtime内浏览网页!
最后,把IP改成192.168.100.30,浏览网页测试。
(可以查看logs下的access.log和cache.log,看看是否代理运行正常以及访问的站点记录)
总结:
由上可见,用squid和squidGuard建立的代理服务器,配置比较简单,而且功能强大,可以有效的限制一些用户对internet的访问并过滤一些黑名单列出的站点(如色情站点等)。
这里只简单的介绍了关于http代理的例子,其它的应用和功能大家可以自己试试。
(出处:viphot)
您可能感兴趣的文章:
详解如何在 CentOS 7 中安装或升级最新的内核
wamp2.2e 64位 curl 开启不了的解决办法
Linux低电量自动关机的实现方法
Linux 逻辑卷管理(LVM)使用方法总结
linux查看用过的命令方法总结
相关文章
12-09
Linux下实现UTF-8和GB2312互相转换的方法
10-25
linux系统用户管理与grep正则表达式示例教程
11-16
Centos系统中彻底删除Mysql数据库步骤
12-04
阿里云ECS实例设置用户root密码和远程连接的方法
11-01
Linux使用Cron+AT实现在某个确定的时间段内随机执行命令
JQuery
VUE
AngularJS
MSSql
MySQL
MongoDB
Redis
Linux
Tomcat
Nginx
网站首页
广告投放
联系我们
版权申明
联系站长