1.我在squid中有以下block.acl文件:
.*
Run Code Online (Sandbox Code Playgroud)
默认情况下,它不允许访问所有内容。
2.white.acl 允许访问谷歌:
google\..*
Run Code Online (Sandbox Code Playgroud)
我想plus.google.com通过将其添加到 block.acl来禁止访问:
plus\.google\.com
Run Code Online (Sandbox Code Playgroud)
3.squid.conf文件包含的顺序是这样的:
acl good_url url_regex "/etc/squid/white.acl"
http_access allow good_url
acl bad_url url_regex "/etc/squid/block.acl"
http_access deny bad_url
Run Code Online (Sandbox Code Playgroud)
坏在好之后包括在内。
但我仍然可以访问plus.google.com. 我怎样才能阻止它,保持对主要谷歌域的访问?
你允许google\..*每相匹配的URL与google.它。允许首先匹配,因此允许访问。
您的规则还将允许google.URL 中任何位置的任何请求,例如http://example.com/google.asp
此外,Google 尝试通过 SSL 执行大多数请求,因此拒绝通过url_regex在这些请求中不起作用(https 中没有 URL)。你可以用鱿鱼做一些中间人的恶作剧来解密 SSL 通信,以便能够通过 URL 进行过滤。或者,dstdom_regex可以仅匹配 URL 的域组件,这也将拒绝 SSL 连接到该域。
将您的配置重构为明确拒绝,然后明确允许,然后默认拒绝(使用all而不是列表)
acl bad_domain dstdom_regex "/etc/squid/block.acl"
acl good_domain dstdom_regex "/etc/squid/allow.acl"
http_access deny bad_domain
http_access allow good_domain
http_access deny all
Run Code Online (Sandbox Code Playgroud)
然后将以下内容包含在错误列表中:
(.+\.)?plus\.google\..+$
Run Code Online (Sandbox Code Playgroud)
在好名单中:
(.+\.)?google\.
Run Code Online (Sandbox Code Playgroud)
这并不完美,因为您仍将允许google.在其名称中包含其他一些域(google.blah.com)。这(.+\.)?只是任何子域的特定匹配。如果您想更具体地了解允许,这篇关于 google 域的 wiki 文章应该会有所帮助。
| 归档时间: |
|
| 查看次数: |
11707 次 |
| 最近记录: |