Squid配置url_regex规则无法拦截URL中含指定关键词访问的问题
Squid URL关键词拦截不生效解决方案
你当前配置的规则仅能拦截域名中含有关键词的HTTPS站点,无法匹配路径中关键词的核心原因是:Squid默认不对HTTPS流量做解密的情况下,仅能获取CONNECT请求中的域名信息,无法读取加密隧道内的完整URL路径、查询参数内容。samsung.com域名本身包含samsung关键词所以能被拦截,而亚马逊链接的samsung关键词存在于路径中,未解密时Squid无法识别。
要实现全URL关键词匹配,推荐按以下步骤配置:
方案1:开启SSL Bump(HTTPS流量解密,推荐)
该方案可以让Squid读取HTTPS请求的完整URL内容,是实现需求的唯一彻底方案。
- 生成Squid中间人解密用的根证书
生成后将openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -keyout /etc/squid/squidCA.key -out /etc/squid/squidCA.crt/etc/squid/squidCA.crt部署到所有接入代理的客户端的受信任根证书存储中,避免HTTPS站点访问时报证书错误。 - 修改
squid.conf添加SSL Bump配置
找到你现有http_port配置行,替换为以下内容:http_port 3128 ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/squidCA.crt key=/etc/squid/squidCA.key ssl_bump stare all ssl_bump bump all - 保持你现有ACL规则不变即可,解密后会自动匹配全URL内容
你原本的规则已经符合要求,不需要修改:acl denykey url_regex -i "/etc/squid/deny-keywords.squid" http_access deny denykey - 验证配置并重载Squid生效
squid -k parse squid -k reconfigure
方案2:无SSL解密的替代方案(不推荐)
如果无法在客户端部署根证书开启解密,只能实现域名层面的关键词匹配,无法拦截路径中带关键词的请求,配置如下:
acl denykey dstdomain_regex -i "/etc/squid/deny-keywords.squid" http_access deny denykey
注意:开启SSL Bump需要符合所在地区的网络监管要求,且仅可对授权管理的客户端使用。
内容的提问来源于stack exchange,提问作者Kash。
相关产品推荐
相关产品推荐

