如何正确配置 Squid 作为带身份验证的透明代理

如何正确配置 Squid 作为带身份验证的透明代理

我已成功设置 iptables 和 squid,现在我尝试运行代理身份验证。我的 squi.conf 如下所示:

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/proxy_users
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32

acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.7.0/24
acl passwd proxy_auth REQUIRED

http_access allow localnet passwd
http_access allow localhost
http_access deny all

所以。这是按照书上说的。它的工作方式是,当我启动浏览器时,它会根据请求向我提供“拒绝访问”页面。但我没有机会验证自己的身份!我听说可能是 Firefox 自动移交了一个匿名用户,当然,这个用户会被拒绝。

如何强制浏览器弹出身份验证框?

答案1

抱歉。透明意味着浏览器在不知情的情况下被重定向到代理。这意味着浏览器没有配置任何代理,因此没有配置任何代理身份验证。此外,用于与代理通信的 HTTP 与普通浏览器中的 HTTP 不同 - Web 服务器通信。

您究竟想如何进行身份验证和透明代理混合?我立即想到了这一点,检查了谷歌并确认了这一点。我查看的所有地方都说无法完成。

答案2

http://wiki.squid-cache.org/SquidFaq/InterceptionProxy#Why_can.27t_I_use_authentication_together_with_interception_proxying.3F

拦截代理的工作原理是,在没有代理的地方安装一个活动代理(代理)。浏览器并不期望它在那里,而且它实际上被欺骗了,或者充其量是被混淆了。作为该浏览器的用户,我会要求它不要将任何凭据泄露给意想不到的一方,你同意吗?尤其是当用户代理可以在不通知用户的情况下这样做时,就像微软浏览器在代理提供任何微软设计的身份验证方案(如 NTLM)时所做的那样(请参阅../代理身份验证功能/协商身份验证)。

换句话说,它不是鱿鱼虫,而是浏览器安全特征。


http://www.squid-cache.org/Versions/v2/2.7/cfgman/auth_param.html

警告:透明拦截代理不能使用身份验证,因为客户端会认为它正在与原始服务器而不是代理进行通信。这是将 TCP/IP 协议弯曲为透明拦截端口 80 的限制,而不是 Squid 的限制。

答案3

您的 IP 被拒绝,因为只允许 localnet 和 localhost。因此请添加另一个包含您的 IP 或 IP 范围的 acl。 acl myisp src your.ip.goes.here

http_access allow myisp passwd

然后重新启动,系统会要求您输入用户名和密码。

为了将来的参考,请检查/var/log/squid/access.log未来的 squid 身份验证错误。

答案4

你不能。

http://www.cyberciti.biz/faq/squid-proxy-authentication-in-transparent-mode/

如果您的问题是客户端自动配置,请检查 WPAD。

相关内容