我刚刚创建了一个基于 Squid 的代理服务器,它在默认配置下运行良好。但是我不希望每个人都可以访问它。我想在 Squid 上设置用户名/密码访问。我被告知这相对简单。到目前为止,我已经完成了以下操作:
sudo htpasswd -c /etc/squid/passwd A
And added the following to /etc/squid/squid.conf
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
acl AUser proxy_auth A
http_access allow AUser
我相信这是正确的方法?最初我收到一条错误消息,提示“无法使用代理身份验证,因为没有完全配置身份验证方案”,但我通过将 auth_param basic program... 行放在 acl 行之前解决了这个问题。但是,当我重新启动 squid 服务并将代理 IP 地址和端口输入到我的浏览器 (Chrome) 中时,它无法加载页面或确实要求输入用户名/密码。然后我将其追溯到我不应该在 squid.conf 文件中设置“http_access 拒绝所有”。我不确定这是否是最佳设置,或者我是否确实造成了任何安全问题,但它现在对我来说似乎运行正常。
非常感谢!
答案1
您只需查看 Squid 的身份验证功能文档,网址为
http://wiki.squid-cache.org/Features/Authentication
Squid 提供多种身份验证方法,上面的链接中记录了所有方法。浏览一下,选择最适合您的方法。
答案2
当我遇到同样的问题时,我偶然看到了这篇旧帖子。我认为没有必要发表评论或禁用“http_access 全部拒绝”。您需要做的就是指定更广泛的组,而不是指定单个用户下的 ACL。例如
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
以下是一些针对授权的额外调整。
#This line defines the file holding the authentication details and also the program to check those details
auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/password
#Define the maximum number of child process to spawn for authentication
auth_param basic children 5
#user will see this message "Squid proxy-caching web server" in authentication box
auth_param basic realm Squid proxy-caching web server
#time to live after a successful authentication
auth_param basic credentialsttl 2 hours
#to make username case insensitive
auth_param basic casesensitive off
那就有用了。