Squid代理服务的配置与应用第十一章_第1页
Squid代理服务的配置与应用第十一章_第2页
Squid代理服务的配置与应用第十一章_第3页
Squid代理服务的配置与应用第十一章_第4页
Squid代理服务的配置与应用第十一章_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Squid代理服务的配置与应用第十一章第11章Squid代理服务的配置与应用本章导读代理服务概述Squid简介Squid代理服务的安装Squid代理服务的基本配置初始化Squid访问控制应用实例第11章Squid代理服务的配置与应用启动和停止代理服务透明代理的实现用户身份认证使用MySAR实现Squid流量管理代理客户端的配置11.1代理服务概述代理服务器简介代理服务器的原理代理服务器简介 代理服务器是目前网络中常见的服务器之一,它可以提供文件缓存、复制和地址过滤等服务,充分利用有限的出口带宽,加快内部主机的访问速度,也可以解决多用户需要同时访问外网但公有IP地址不足的问题。同时可以作为一个防火墙,隔离内网与外网,并且能提供监控网络和记录传输信息的功能,加强局域网的安全性等。它的主要作用有以下几点。1.共享网络2.加快访问速度,节约通信带宽3.防止内部主机受到攻击4.限制用户访问,完善网络管理代理服务器的原理①客户端A向代理服务器提出访问Internet的请求。②代理服务器接受到请求后,首先与访问控制列表中的访问规则相对照,如果满足规则,则在缓存中查找是否存在需要的信息。③如果缓存中存在客户端A需要的信息,则将信息传送给客户端。如果不存在,代理服务器就代替客户端向Internet上的主机请求指定的信息。④Internet上的主机将代理服务器的请求信息发送到代理服务器中,同时代理服务会将信息存入缓存中。⑤代理服务器将Internet上主机的回应信息传送给客户端A。⑥客户端B向代理服务器提出相同的请求。⑦代理服务器也首先与访问控制列表中的访问规则相对照。⑧如果满足规则,则将缓存中的信息传送给客户端B。11.2Squid简介 Squid是Linux和UNIX平台下最为流行的高性能应用层代理服务器,它具有权限管理灵活、性能高和效率快等特点。Squid是一个由众多在互联网上的开发人员共同努力完成的高性能的代理缓冲服务器,它的具体开发是由国家网络应用研究室(theNationalLaboratoryforAppliedNetworkResearch)的DuaneWessels主持,由NSF出资支持的。 Squid的另一个优越性在于它使用访问控制列表(ACL)和访问权限列表(ARL)进行权限管理和内容过滤。访问控制清单和访问权限清单通过阻止特定的网络连接来减少潜在的Internet非法连接,可以使用这些清单来确保内部网的主机无法访问有威胁的或不适宜的站点。11.3Squid代理服务的安装 RedHatEnterpriseLinux5安装程序默认没有安装Squid服务,读者可以使用下面的命令检查系统是否已经安装了Squid服务或查看已经安装了何种版本。rpm-qsquid 如果系统还没有安装Squid服务,可将RedHatEnterpriseLinux5第2张安装盘放入光驱,加载光驱后在光盘的Server目录下找到Squid的RPM安装包文件squid-2.6.STABLE6-3.el5.i386.rpm,使用下面的命令安装Squid。11.4Squid代理服务的基本配置Squid主配置文件是/etc/squid/squid.conf,最基本的设置如下。_port:8080cache_mem64MBcache_dirufs/var/spool/squid409616256cache_effective_usersquidcache_effective_groupsquidcache_access_log/var/log/squid/access.logcache_log/var/log/squid/cache.logcache_store_log/var/log/squid/store.log_accessallowall11.4Squid代理服务的基本配置acl选项的格式如下。acl列表名称列表类型[-i]列表值列表名称:用于区分Squid的各个访问控制列表,任何两个访问控制列表不能用相同的列表名。虽然列表名称可以随便定义,但为了避免以后不知道这条列表是干什么用的,应尽量使用有意义的名称,如badurl、clientip和worktime等。列表类型:是可被Squid识别的类别。Squid支持的控制类别很多,可以通过IP地址、主机名、MAC地址和用户/密码认证等识别用户,也可以通过域名、域后缀、文件类型、IP地址、端口和URL匹配等控制用户的访问,还可以使用时间区间对用户进行管理-i选项:表示忽略列表值的大小写,否则Squid是区分大小写的。列表值:针对不同的类型,列表值的内容是不同的。例如,对于类型为src或dst,列表值的内容是某台主机的IP地址或子网地址;对于类型为time,列表值的内容是时间;对于类型为srcdomain和dstdomain,列表值的内容是DNS域名。11.4Squid代理服务的基本配置类型选项命令说明src源IP地址(客户机IP地址)dst目标IP地址(服务器IP地址)srcdomain源名称(客户机所属的域)dstdomain目标名称(服务器所属的域)time一天中的时刻和一周内的一天url_regexURL规则表达式匹配urlpath_regex:URL-path略去协议和主机名的URL规则表达式匹配proxy_auth通过外部程序进行用户认证maxconn单一IP的最大连接数time时间段,语法为:[星期][时间段]。[星期]:可以使用这些关键字M(Monday星期一)、T(Tuesday星期二)、W(Wednesday星期三)、H(Thursday星期四)、F(Friday星期五)、A(Saturday星期六)和S(Sunday星期天)[时间段]:可以表示为10:00-20:0011.4Squid代理服务的基本配置 Squid会针对客户HTTP请求检查_access规则,定义访问控制列表后,就使用_access选项根据访问控制列表允许或禁止访问了。该选项的基本格式为:_access[allow|deny]访问控制列表名称[allow|deny]:定义允许(allow)或禁止(deny)访问控制列表定义的内容。访问控制列表名称:需要_access控制的ACL名称。11.5初始化Squid1.创建Squid使用硬盘缓冲区的目录结构/usr/sbin/squid–z2.设置Squid错误提示信息为中文 在Squid的主配置文件/etc/squid/squid.conf中添加下列语句,并使用命令“/etc/init.d/squidreload”重新载入配置文件error_directory/usr/share/squid/errors/Simplify_Chinese11.6访问控制应用实例11.6访问控制应用实例【例5】禁止用户访问域名包含有163的网站。aclbadurl1url_regex-i163_accessdenybadurl1【例6】禁止用户访问域名包含有sex关键字的URL。aclbadurl2url_regex-isex_accessdenybadurl2【例7】限制IP地址为00的客户机并发最大连接数为5。aclconn5maxconn5_accessdenyclient1conn1【例8】禁止这个子网里所有的客户机在周一到周五的9:00到18:00上网。aclworktimetimeMTWHF9:00-18:00_accessdenyclientnet1worktime11.6访问控制应用实例【例9】禁止客户机下载*.mp3、*.exe、*.zip和*.rar类型的文件。aclbadfile1urlpath_regex-i\.mp3$\.exe$\.zip$\.rar$_accessdenybadfile1【例10】禁止QQ通过Squid代理上网。aclqqurl_regex-itencent_accessdenyqq11.7启动和停止代理服务1.启动代理服务/etc/init.d/squidstart2.停止代理服务/etc/init.d/squidstop3.重新启动代理服务/etc/init.d/squidrestart4.重新载入配置文件/etc/rc.d/init.d/squidreload11.7启动和停止代理服务5.自动启动代理服务如果需要让代理服务随系统启动而自动加载,可以执行“ntsysv”命令启动服务配置程序,找到“squid”服务,在其前面加上星号(*),然后选择“确定”即可。11.8透明代理的实现透明代理的简介配置Squid配置iptables透明代理的简介

透明代理是NAT和代理的完美结合,之所以称为透明,是因为在这种工作方式下用户感觉不到代理服务器的存在,不需要在浏览器或其他客户端工具(如网络快车等)中作任何设置,客户机只需要将默认网关设置为Linux服务器的IP地址即可。当客户机访问Internet,请求数据包经过Linux服务器转发时,Linux服务器上的iptables将客户机的HTTP请求重定向到Squid代理服务器,由代理服务器代替客户机访问外部信息资源,再将获取的数据传回客户机。配置SquidSquid主配置文件/etc/squid/squid.conf:_port:8080cache_mem64MBcache_dirufs/var/spool/squid409616256cache_effective_usersquidcache_effective_groupsquidcache_access_log/var/log/squid/access.logcache_log/var/log/squid/cache.logcache_store_log/var/log/squid/store.log#以下是实现透明代理的4条语句的关键,缺一不可d_accel_hostvirtuald_accel_port80d_accel_with_proxyond_accel_uses_host_headeron_accessallowall配置iptables iptables在这里所起的作用是端口重定向,执行以下命令将所有由eth0接口进入的Web服务80端口的请求直接转发到8080端口,由Squid处理。iptables-tnat-APREROUTING-ieth0-ptcp-mtcp--dport80-jREDIRECT--to-ports808011.9用户身份认证配置squid.conf文件建立账户文件测试用户认证配置squid.conf文件Squid主配置文件/etc/squid/squid.conf:_port:8080cache_mem64MBcache_dirufs/var/spool/squid409616256cache_effective_usersquidcache_effective_groupsquidcache_access_log/var/log/squid/access.logcache_log/var/log/squid/cache.logcache_store_log/var/log/squid/store.log#以下是实现用户身份认证的语句auth_parambasicprogram/usr/lib/squid/ncsa_auth/etc/squid/passwdauth_parambasicchildren5auth_parambasiccredentialsttl2hoursauth_parambasicrealmExle'sSquidproxy-cachingaclauth_userproxy_authREQUIRED_accessallowauth_user建立账户文件 为了建立供用户认证使用的账户文件,可以利用Apache的htpasswd程序生成账户文件/etc/squid/passwd,该账户文件每行包含一个用户的信息,即用户名和经过加密后的密码。htpasswd-c/etc/squid/passwdlinden测试用户认证①在服务器中使用命令“/etc/init.d/squidrestart”重启Squid服务。②在客户端的Web浏览器中配置好代理服务器的IP地址和端口号。③访问任意网站,这时Web浏览器会弹出输入用户名和口令的对话框。④输入正确的用户名和口令,就能连上Internet了。⑤如果用户名和口令不正确,则出现“网络缓存服务器拒绝访问”的错误信息。11.10使用MySAR实现Squid流量管理安装MySAR设置MySAR编写管理程序安装MySAR①安装Apache和PHP解释器,具体安装和设置方法见第7章。②安装MySQL和PHP-MySQL支持包,并设置MySQL管理员root的密码为“mysar”,具体安装设置方法常见第12章。,下载最新版的MySAR安装软件。安装MySAR安装MySAR 使用Web浏览器访问“://服务器IP地址或域名/mysar/”,打开MySAR的安装向导。安装MySAR安装MySAR安装MySAR安装MySAR安装MySAR安装MySAR安装MySAR设置MySAR①编辑文件/usr/local/mysar/bin/mysar-importer.php(该文件的作用是读取Squid的日志文件/var/log/squid/access.log,并对日志进行分析,然后将相应的数据写入数据库中),找到语句“debug('Recordreceived:',40,__FILE__,__LINE__);”在该语句前插入如下语句。$test_head=preg_split("[//]",$record[6]);if(substr($test_head[1],0,7)=="192.168"){continue1;}②编辑vi/usr/local/mysar/etc/mysar.cron文件,将文件中的“root”删除,并在文件末尾添加语句“011***squid-krotate”,使Squid的日志每天循环保存一次(由于MySAR是通过分析Squid日志的方法来统计流量的,因此如果日志文件太大就会降低MySAR的运行效率,同时也可能使统计出错)。然后再使用命令“crontab/usr/local/mysar/etc/mysar.cron”设置自动作业。③使用Web浏览器访问“://服务器IP地址或域名/mysar/”,打开MySAR查看用户使用Squid代理服务器访问外网的情况。编写管理程序1.编写C程序用于执行iptables命令#include<stdio.h>#include<getopt.h>#include<unistd.h>intmain(intargc,char*argv[]){intoptch;while((optch=getopt(argc,argv,"ad"))!=-1)/*分析命令行参数*/ {switch(optch) { case'd': execlp("iptables","iptables","-I","INPUT","-s",argv[2],"-j","DROP",(char*)0); break;/*设置iptable规则,禁止用户访问服务器*/ case'a':execlp("iptables","iptables","-D","INPUT","-s",argv[2],"-j","DROP",(char*)0); break;/*删除iptable规则*/ default: printf("error\n");} }} 编写完成后以.c为后缀名保存文件(本例文件名为uip.c),然后再分别使用命令gcc–cuip.c和makeuip.o编译连接程序。 使用命令chmodu+suip修改程序uip的执行权限,使PHP程序能够调用它。编写管理程序2.编写PHP程序mysar.php用于管理代理用户<?php$link=mysql_connect("localhost","root","ygjalarm");//mysql_connect(服务器名,mysql用户名,mysql密码)if(!$link){die('Couldnotconnect:'.mysql_error());exit;}mysql_select_db("mysar",$link);$result=mysql_query("selecttraffic.ip,hostnames.hostname,sum(traffic.bytes)fromtraffic,hostnameswheretraffic.ip=hostnames.ipandhostnames.usr_iptables=0groupbytraffic.ip");

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论