Squid缓存服务器之ACL访问控制与反向代理

1、ACL访问控制

  • Squid提供了强大的代理控制机制和,通过合理设置ACL并进行限制。可以针对原地址、目标地址、访问的URL路径、访问的时间等各种条件进行过滤。
  • 在配置文件squid.conf中ACL访问控制通过以下两个步骤来实现:其一,使用acl配置项定义需要控制的条件;其二,通过http_access配置项对已定义的列表做“允许”或者“拒绝”访问的控制。

1)、定义访问控制列表

  • 每一行acl配置可以定义一条访问控制列表,格式如下:
acl 列表名称 列表类型 列表内容···
  • 其中,“列表名称”有管理员自行指定,用来识别控制条件;“列表类型”必须使用Squid预定义的值,对应不同类型的控制条件;“列表内容”是要控制的具体对象,不同类型的列表所对应的内容也不一样,可以有多个值(以空格分割,都为“或”的关系)。
  • 常用的访问控制列表类型:
列表类型 列表内容示例 含义/用途
src 192.168.1.168;192.168.1.0/24;192.168.1.0-192.168.3.0/24 源IP地址、网段、IP地址范围
dst 216.163.137.3;61.135.167.167/24;www.baidu.com 目标IP地址、网段、主机名
port 80;443;8080;20;21 目标端口
dstdomain .qq.com 目标域,匹配域内所有站点
time MTWHF 8:30-17:30;12:00-13:00;AS 使用代理服务器的时间段;字母表示一星期中个天的缩写;M-Monday、T-Tuesday、W-Wednesday、H-Thursday、F-Friday、A-Saturday、S-Sunday
maxconn 20 每个客户机的并发连接数
url_regex url_regex -i ^rtsp://;url_regex -i ^emule:// 目标资源的URL地址,-i表示忽略大小写
urlpath_regex urlpath_regex -i sex sdult;urlpath_regex -i .mp3$ 目标资源的额、整个URL路径,-i表示忽略大小写

2)、设置访问权限

  • 定义好好、各种访问控制列表以后,需要使用http_access配置项来进行控制。需要注意的是,http_accss配置行必须放在对应的acl设置行之后。每一行http_access配置确定一条访问控制规则,格式如下:
http_access alow或deny 列表名···
  • 在每一条http_access规则中,可以同时包含多个访问控制列表名,每个列表之间以空格分隔,与“与”的关系,表示必须满足所有访问控制列表对应的条件才会进行限制。需要使用取反条件是,可以在访问控制列表前添加“!”符号。
  • 访问控制时,Squid将按照各条规则的顺序依次进行检查,如果找到一条项匹配的规则就不再向后搜索。因此规则顺序安排是非常重要的,以下两种默认情况需要我们注意。
(1)、没有设置任何规则时;Squid服务将拒绝客户端的请求
(2)、有规则但找不到相匹配的项:Squid将采用与最后一条规则相反的权限,即如果最后一条规则时allow,就拒绝客户端的请求,否则允许该请求。

3)、 验证访问控制效果

  • 在Squid代理服务器上设置是内网客户机192.168.100.101访问不到外网Web服务器192.168.190.128;

Squid缓存服务器之ACL访问控制与反向代理_第1张图片Squid缓存服务器之ACL访问控制与反向代理_第2张图片Squid缓存服务器之ACL访问控制与反向代理_第3张图片

2、反向代理

  • squid反向代理可以加速网站的访问速度,可将不同的URL请求分发到后台不同的web服务器上,同时互联网用户只能看到反向代理服务器的地址,加强网站的访问安全。

  • squid反向代理加速的原理描述如下:

  • (1)、Squid反向代理服务器位于本地Web服务器和Internet之间,客户端请求访问Web服务器时,DNS将访问的域名解析为Squid反向代理服务器的IP地址,客户端将访问Squid代理服务器。

  • (2)、如果Squid反向代理服务器缓存了该请求的资源,则将该请求的资源返回给客户端,否则反向代理服务器将向后台的Web服务器请求资源,然后将应答资源返回给客户端,同时也将该资源在本地缓存一份,供下一个请求使用。

1)、Squid反向代理实验拓补图

Squid缓存服务器之ACL访问控制与反向代理_第4张图片

2)、Squid反向代理实验环境

服务器 IP地址 功能
代理服务器 172.16.190.130 squid代理服务
client 172.16.190.132 负责访问
真实服务器1 172.16.190.128 提供http服务
真实服务器2 172.16.10.131 提供http服务

3)、实验步骤

  • (1)、配置squid代理服务器

vim /etc/squid.conf

http_port 192.168.190.130:80 accel vhost vport   # 将端口监听在 172.16.10.137的80端口上,accel 指启用加速模式,vhost,vport用于转发请求
cache_peer 192.168.190.128 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web1      #cache_peer 指定后端服务器地址,80 为后端服务端口,0 为 ICP 端口号(多个 Squid 时用),originserver 指定资源服务器,round-robin指使用轮询方式,weight指的是权重,自由分配,name 指定一个别名
cache_peer 192.168.190.131 parent 80 0 no-query originserver round-robin max_conn=30 weight=1 name=web2
cache_peer_domain web1 web2 www.yun.com #定义两个个基于域名的控制列表,分别命名为web1,web2

Squid缓存服务器之ACL访问控制与反向代理_第5张图片

  • (2)、开启http服务即可

  • (3)、修改客户端win7的地址解析使之识别www.yun.com

Squid缓存服务器之ACL访问控制与反向代理_第6张图片Squid缓存服务器之ACL访问控制与反向代理_第7张图片Squid缓存服务器之ACL访问控制与反向代理_第8张图片