代理服务器的作用及其工作流程

代理服务器

本章目标

代理服务器的作用 代理服务器的工作流程 代理服务器的类型 配置代理服务器

概述

代理服务器可以代表其它计算机传送数据包或信息.

作用

共享网络,不受公有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、OS/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  xx@xxx.com

ACL

语法: acl aclname     acltype     string acltype src/dst   srcdomain/dstdomain   time       url_regex     urlpath_regex port proto proxy_auth maxconn

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 ok.sina.com.cn acl qq dstdomain  .tencent.com.cn 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服务器