squid 访问控制 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头部
**注意:把最可能匹配的值放在列表开头处,能减少延时;少用正则表达式
- 最新评论