squid反向代理作web加速-配置详解5-访问控制 acl指令

来源:百度文库 编辑:神马文学网 时间:2024/05/01 11:41:34

squid访问控制的acl  指令配置:
acl是squid用于控制访问的专用指令,其模式也很简单:
acl  mymode
http_access  deny  mymode
或  http_access  allow  mymode
等等。但要注意,如果定义了很多访问规则,则squid会按前后顺序执行这些控制,所以规则的逻辑顺序很重要,否则会引起安全问题或造成访问失败!

i.squid在启动时,将主机名转换成IP地址。一旦启动,squid不会对主机名的地址发起第二次DNS查询。这样,假如在squid运行中地址已改变,squid不会注意到。

ii.当ACL域名以"."开头,squid将它作为通配符,它匹配在该域的任何主机名,甚至域名自身。相反的,如果ACL域名不以"."开头,squid使用精确的字符串比较

iii.dst类型指向原始服务器(目标)IP地址,src类型指客户源IP地址。srcdomain  源域,dstdomain目标域,配置如:
acl  myhttpserver  dst  1.2.3.0/24  或192.168.0.3  可以写多行此代码指定多个服务器
http_access  deny  !myhttpserver

iv.port  ACL:限制对某些原始服务器端口号的访问。Squid如果不连接到某些服务,例如email和IRC服务,port  ACL允许你定义单独的端口或端口范围。例如:
acl  HTTPports  port  80  8000-8010  8080
这是安全的配置方式:
acl  Safe_ports  port  80                    #  仅访问原始服务器的80端口
http_access  deny  !Safe_ports#  

也可以指定危险端口:
acl  Dangerous_ports  7  9  19  22  23  25  53  109  110  119
http_access  deny  Dangerous_ports

注意:如果指定危险端口,由于每次访问squid都要查询端口是否安全,使用危险端口的查询工作量大于指定安全端口,尽量不用

v.myport  ACL:限制squid的可访问端口,安全的配置方式:
acl  AccelPort  myport  80
http_access  deny  !AccelPort

vi.method  ACL指HTTP请求方法,常用的有GET/PUT/POST/HEAD,CONNECT方法危险(会被利用访问远程服务器,但SSL会用到),设置:
acl  CONNECT  method  CONNECT
acl  SSL_ports  443
http_access  allow  CONNECT  SSL_ports
http_access  deny  CONNECT

Purge是squid的专有方法,控制缓存,危险,设置:
acl  Purge  method  PURGE
acl  Localhost  src  127.0.0.1
http_access  allow  Purge  Localhost  #仅在本地使用
http_access  deny  Purge

vii.proto指URI访问(或传输)协议,常用http,  https  (same  as  HTTP/TLS),  ftp,只允许http/https的配置:
acl  webproto  proto  HTTP  HTTPS
http_access  deny  !webproto
cache_object是squid专有的控制缓存的协议,只能在本地用:
acl  Manager  proto  cache_object        
acl  Localhost  src  127.0.0.1        
http_access  allow  Manager  Localhost
http_access  deny  Manager
注意,这要写在上面的http配置前边

viii.maxconn  ACL指来自客户IP地址的大量同时连接,可以配置为:
acl  OverConnLimit  maxconn  4
http_access  deny  OverConnLimit  #  maxconn  ACL在请求超过指定的数量时,会匹配这个请求,所以用deny方式

ix.包含外部文件:如果配置参数很多很长,可以使用外部文件,如:
acl  Foo  BadClients  "/usr/local/squid/etc/BadClients"  #ip  地址要一行一个

x.常用的访问控制规则:
http_access  allow/deny  允许/拒绝
no_cache  allow/deny不必存储某些响应,注意使用deny才表示“不缓存”
miss_access列表主要用于squid的邻居cache。它决定squid怎样处理cache丢失的请求。如果squid使用集群技术,那么该功能必需
always_direct  请求匹配allow规则时,squid直接转发请求到原始服务器
cache_peer_access  控制发送到邻居cache的HTTP请求和ICP/HTCP查询
header_access  配置squid从它转发的请求里删除某些HTTP头部。如,你也许想过滤掉发送到某些原始服务器的请求里的Cookie头部

**注意:把最可能匹配的值放在列表开头处,能减少延时;少用正则表达式