我使用SQUID代理作为出站连接。我的白名单规则和拒绝规则在我添加身份验证层的那一刻不起作用。当我试图用配置文件中未定义的URL命中URL时,代理返回200。是规则优先级列表中的东西。它只在身份验证时进行过滤,如果正确,则直接通过所有过滤器。
# Proxy Authentication
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
# Local network access to proxy
# Safe ports that can be used
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 3128
acl CONNECT method CONNECT
# Deny requests to certain unsafe ports
http_access deny !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports
# Destination domains that can be accessed
acl whitelist dstdomain .bing.com
acl whitelist dstdomain .google.com
http_access allow whitelist
# Destination domains that cannot be accessed
http_access deny all
该问题在"常见错误"维基百科的部分:https://wiki.squid-cache.org/SquidFaq/SquidAcl Common_Mistakes
专:
- acl表项的所有元素都被"OR"放在一起。
- 一个访问表项的所有元素被AND'ed在一起(例如http_access和icp_access)
所以当你为http_access
写两行时,例如:
http_access allow authenticated
http_access allow whitelist
将被解释为"OR"因此,任何一个都将"击中"。
如果你想强制代理只允许authenticated
用户使用whitelist
acl,他们必须在同一行。所以在你的例子中:
http_access allow authenticated whitelist
,这意味着-(仅)允许authenticated
和whitelist
。
后面跟着一个http_access deny all
,这应该也会阻塞所有其他流量。