*,*,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,代理服务器,本章目标,代理服务器的作用,代理服务器的工作流程,代理服务器的类型,配置代理服务器,概述,代理服务器可以代表其它计算机传送数据包或信息,.,作用,共享网络,不受公有,IP,的限制,加快访速度,防止内部主机受到攻击,限制用户访问,完善网络管理,ACL,访问控制列表,ARL,访问权限列表,什么时候使用代理,SQUID,Squid,是,Linux,下一个缓存,Internet,数据的代理服务器软件,其接收用户的下载申请,并自动处理所下载的数据。,Squid,可以代理,HTTP,、,FTP,、,GOPHER,、,SSL,和,WAIS,协议,暂不能代理,POP3,、,NNTP,等协议。,Squid,可以工作在很多操作系统中,如,AIX,、,Unix,、,FreeBSD,、,HP-UX,、,Irix,、,Linux,、,NetBSD,、,Nextstep,、,SCO,、,Solaris,、,O,S/2,等。,Squid,能够缓存任何数据吗?不是的。象缓存信用卡帐号、可以远方执行的,scripts,、经常变换的主页等是不合适的也是不安全的。,工作流程,配置,SQUID,安装包,/etc/squid/squid.conf,squid,配置文件,http_port 192.168.0.11:3128,cache_mem 300MB,cache_dir ufs/var/spool/squid 1000 16 255,cache_effective_user squid,cache_access_log /var/log/squid/access.log,cache_log/var/log/squid/cache.log,visible_hostname,cache_mgr ,ACL,语法,:,acl aclname acltype string,acltype,src/dst srcdomain/dstdomain,time url_regex urlpath_regex,portproto,proxy_authmaxconn,ACL,规则,acltype,可以是任一个在,ACL,中定义的名称;,任何两个,ACL,条目不能用相同的名字;,每个,ACL,由列表值组成,当进行匹配检测的时候,多个值由逻辑或运算连接,换句话说,任一,ACL,元素的值被匹配,则这个,ACL,元素即被匹配;,并不是所有的,ACL,元素都能使用访问列表中的全部类型;,不同的,ACL,元素写在不同行中,,Squid,将这些元素组合在一个列表中。,ARL,http_access,语法,http_access allow/deny !aclname,ARL,规则,根据访问控制列表允许或禁止某一类用户访问。如果某个访问没有相符合的项目,则默认为应用最后一条项目的“非”。比如最后一条为允许,则默认就是禁止。通常应该把最后的条目设为“,deny all”,或“,allow all”,来避免安全性隐患。,ARL,规则,这些规则按照它们的排列顺序进行匹配检测,一旦检测到匹配的规则,匹配检测就立即结束;,访问列表可以由多条规则组成;,如果没有任何规则与访问请求匹配,默认动作将与列表中最后一条规则对应;,一个访问条目中的所有元素将用逻辑与运算连接,如下所示:,http_access Action,声明,1 AND,声明,2 AND,声明,OR,http_access Action,声明,3,多个,http_access,声明间用或运算连接,但每个访问条目的元素间用与运算连接;,表中的规则总是遵循由上而下的顺序。,禁止缓存,acl QUERY urlpath_regex-i cgi-bin?.asp.php.jsp.cgi,acl denyssl urlpath_regex-i https:,cache deny QUERY,cache deny denyssl,高级控制,acl advance arp 00:01:02:1f:2c:3e,acl sina dstdomain ,acl qq dstdomain ,acl conn5 maxconn 5,验证,控制所有登录并检查访问用户的合法性,.,让合法用户以合法的权限访问网络资源,外部认证程序,NCSA 2.5,版本开始,,NCSA,认证包含在了,basic,中,而非以前单独的认证模块,PAM,LDAP,SMB,SASL,配置验证,squid.conf,auth_param basic program/usr/lib/squid/ncsa_auth/var/squid/etc/password,该选项指出了认证方式(,basic),、认证程序(,ncsa_auth,)和 密码文件,auth_param basic children 5,指定认证程序的进程数,auth_param basic realm My Proxy Caching Domain,浏览器显示输入用户,/,密码对话框时的领域内容,auth_param basic credentialsttl 2 hours,基本的认证有效时间,acl normal proxy_auth REQUIRED,http_access normal auth_user,普通用户需要通过认证才能访问,Internet,建立帐号文件,htpasswd-C/var/lib/squid/ncsa_auth pg,测试验证,squid restart,客户端上配置浏览器,访问任意网站,弹出验证框,方案一,192.168.0.1-10,为高级用户,上网没有限制,192.168.0.11-192.168.0.200,为普通用户,普通用户要求上班时间,9,:,00-18,:,00,可以上网,其余时间不能上网,普通用户不能下载,exe mp3 wma rm,等结尾的文件。,普通用户要求通过身份验证,高级不用验证。,acl advance 192.168.0.2-192.168.0.10/32,acl normal src 192.168.0.11-192.168.0.200/32,acl baduser src 192.168.0.100/32,acl media_url urlpath_regex-i.mp3$.rm$.wma$.exe$,acl nettime time MTWHF 9:00-12:00 13:30-18:00,acl all src 0.0.0.0/0,http_access deny baduser,http_access deny normal media_url,http_access deny nomal !netime,http_access allow advance,http_access allow normal,http_access allow all,透明代理,squid,主配文件:,/etc/squid/squid.conf,http_port 3128 transparent/,启用透明模式,启用,ipforward,vim/etc/sysctl.conf,配置防火墙,iptables -t nat -A PREROUTING-s 192.168.0.0/24-p tcp -dport=80,-j REDIECT -to-ports 3128,service iptables save,客户端要正确配置,DNS,网关,SQUID,反向代理,Squid,反向代理单个后台,WEB,服务器,WEB,服务器和反向代理服务器是两台单独的机器(一般的反向代理应该有两块网卡分别连接了内外部网络),如果,WEB,服务器和反向代理服务器是同一台机器,Squid,反向代理多个后台,WEB,服务器,一台,WEB&,一台代理,配置代理监听,80,httpd_port 80 vport vhost,配置,WEB,监听,httpd_accel_host ip WEB,的,IP,httpd_accel_port 80,加速服务的端口,如果后台,apache,为,80,端口,这里就为,80,端口,cache_peer webip parent 80 0 no-query originserver,WEB,自缓冲加速,数据走向:访问者,=192.168.1.1:80=127.0.0.1:80http_port 80 vport vhost,httpd_accel_host 127.0.0.1,httpd_accel_port 80,测试,把,http,服务器给停了,通过,SQUID,缓存可以看到页面,cache_peer 127.0.0.1 parent 80 0 no-query originserver,一台代理,&,多,WEB,#cache_peer hostname type http-port icp-port options,cache_peer 192.168.1.2 parent 81 0 originserver weight=1 name=web1,cache_peer 192.168.1.3 parent 82 0 originserver weight=1 name=web2,cache_peer 192.168.1.4 parent 83 0 originserver weight=1 name=web3,-,#cache_peer_domain cache-host domain domain.,cache_peer_domain web1 ,cache_peer_domain web2 ,cache_peer_domain web3 ,-,cache_peer_access web1 allow ok,cache_peer_access web2 allow ok,cache_peer_access web3 allow ok,#cache_peer_access cache-host allow|deny!aclname.,总结,代理原理,代理配置,