代理服务器本章目标代理服务器的作用代理服务器的工作流程代理服务器的类型配置代理服务器概述代理服务器可以代表其它计算机传送数据包或信息.作用共享网络,不受公有IP的限制加快访速度防止内部主机受到攻击限制用户访问,完善网络管理ACL访问控制列表ARL访问权限列表什么时候使用代理SQUIDSquid是Linux下一个缓存Internet数据的代理服务器软件,其接收用户的下载申请,并自动处理所下载的数据。Squid可以代理HTTP、FTP、GOPHER、SSL和WAIS协议,暂不能代理POP3、NNTP等协议。Squid可以工作在很多操作系统中,如AIX、Unix、FreeBSD、HP-UX、Irix、Linux、NetBSD、Nextstep、SCO、Solaris、OS/2等。Squid能够缓存任何数据吗?不是的。象缓存信用卡帐号、可以远方执行的scripts、经常变换的主页等是不合适的也是不安全的。工作流程配置SQUID安装包/etc/squid/squid.confsquid配置文件http_port192.168.0.11:3128cache_mem300MBcache_dirufs/var/spool/squid100016255cache_effective_usersquidcache_access_log/var/log/squid/access.logcache_log/var/log/squid/cache.logvisible_hostnamecache_mgrxx@xxx.comACL语法:aclaclnameacltypestringacltypesrc/dstsrcdomain/dstdomaintimeurl_regexurlpath_regexportprotoproxy_authmaxconnACL规则acltype可以是任一个在ACL中定义的名称;任何两个ACL条目不能用相同的名字;每个ACL由列表值组成,当进行匹配检测的时候,多个值由逻辑或运算连接,换句话说,任一ACL元素的值被匹配,则这个ACL元素即被匹配;并不是所有的ACL元素都能使用访问列表中的全部类型;不同的ACL元素写在不同行中,Squid将这些元素组合在一个列表中。ARLhttp_access语法http_accessallow/deny[!]aclnameARL规则根据访问控制列表允许或禁止某一类用户访问。如果某个访问没有相符合的项目,则默认为应用最后一条项目的“非”。比如最后一条为允许,则默认就是禁止。通常应该把最后的条目设为“denyall”或“allowall”来避免安全性隐患。ARL规则这些规则按照它们的排列顺序进行匹配检测,一旦检测到匹配的规则,匹配检测就立即结束;访问列表可以由多条规则组成;如果没有任何规则与访问请求匹配,默认动作将与列表中最后一条规则对应;一个访问条目中的所有元素将用逻辑与运算连接,如下所示:http_accessAction声明1AND声明2AND声明ORhttp_accessAction声明3多个http_access声明间用或运算连接,但每个访问条目的元素间用与运算连接;表中的规则总是遵循由上而下的顺序。禁止缓存aclQUERYurlpath_regex-icgi-bin\?\.asp\.php\.jsp\.cgiacldenysslurlpath_regex-i^https:\\cachedenyQUERYcachedenydenyssl高级控制acladvancearp00:01:02:1f:2c:3eaclsinadstdomainok.sina.com.cnaclqqdstdomain.tencent.com.cnaclconn5maxconn5验证控制所有登录并检查访问用户的合法性.让合法用户以合法的权限访问网络资源外部认证程序NCSA2.5版本开始,NCSA认证包含在了basic中,而非以前单独的认证模块PAMLDAPSMBSASL配置验证squid.confauth_parambasicprogram/usr/lib/squid/ncsa_auth/var/squid/etc/password该选项指出了认证方式(basic)、认证程序(ncsa_auth)和密码文件auth_parambasicchildren5指定认证程序的进程数auth_parambasicrealmMyProxyCachingDomain浏览器显示输入用户/密码对话框时的领域内容auth_parambasiccredentialsttl2hours基本的认证有效时间aclnormalproxy_authREQUIREDhttp_accessnormalauth_user普通用户需要通过认证才能访问Internet建立帐号文件htpasswd-C/var/lib/squid/ncsa_authpg测试验证squidrestart客户端上配置浏览器访问任意网站,弹出验证框方案一192.168.0.1-10为高级用户,上网没有限制192.168.0.11-192.168.0.200为普通用户普通用户要求上班时间9:00-18:00可以上网,其余时间不能上网,普通用户不能下载exemp3wmarm等结尾的文件。普通用户要求通过身份验证,高级不用验证。acladvance192.168.0.2-192.168.0.10/32aclnormalsrc192.168.0.11-192.168.0.200/32aclbadusersrc192.168.0.100/32aclmedia_urlurlpath_regex-i\.mp3$\.rm$\.wma$\.exe$aclnettimetimeMTWHF9:00-12:0013:30-18:00aclallsrc0.0.0.0/0http_accessdenybaduserhttp_accessdenynormalmedia_urlhttp_accessdenynomal!netimehttp_accessallowadvancehttp_accessallownormalhttp_accessallowall透明代理squid主配文件:/etc/squid/squid.confhttp_port3128transparent//启用透明模式启用ipforwardvim/etc/sysctl.conf配置防火墙iptables-tnat-APREROUTING-s192.168.0.0/24-ptcp--dport=80-jREDIECT--to-ports3128serviceiptablessave客户端要正确配置DNS,网关SQUID反向代理Squid反向代理单个后台WEB服务器WEB服务器和反向代理服务器是两台单独的机器(一般的反向代理应该有两块网卡分别连接了内外部网络)如果WEB服务器和反向代理服务器是同一台机器Squid反向代理多个后台WEB服务器一台WEB&一台代理配置代理监听80httpd_port80vportvhost配置WEB监听httpd_accel_hostipWEB的IPhttpd_accel_port80加速服务的端口,如果后台apache为80端口,这里就为80端口cache_peerwebipparent800no-queryoriginserverWEB自缓冲加速数据走向:访问者=192.168.1.1:80=127.0.0.1:80http_port80vportvhosthttpd_accel_host127.0.0.1httpd_accel_port80测试把http服务器给停了,通过SQUID缓存可以看到页面cache_peer127.0.0.1parent800no-queryoriginserver一台代理&多WEB#cache_peerhostnametypehttp-porticp-port[options]cache_peer192.168.1.2parent810originserverweight=1name=web1cache_peer192.168.1.3parent820originserverweight=1name=web2cache_peer192.168.1.4parent830originserverweight=1name=web3-----------------------------------#cache_peer_domaincache-hostdomain[domain...]cache_peer_domainweb1web1.up.comcache_peer_domainweb2web2.up.comcache_peer_domainweb3web3.up.com-------------------------cache_peer_accessweb1allowokcache_peer_accessweb2allowokcache_peer_accessweb3allowok#cache_peer_accesscache-hostallow|deny[!]aclname...总结代理原理代理配置