此流程为限制来源的 Squid 6.13 代理添加基于 NCSA 的 Basic 认证。Debian 13 的辅助程序为 /usr/lib/squid/basic_ncsa_auth;请确认所用软件包的路径和服务账号。

创建第一个账号

使用发行版的 htpasswd 工具,并交互式输入密码:

sudo htpasswd -c /etc/squid/users proxyuser
sudo chown root:proxy /etc/squid/users
sudo chmod 640 /etc/squid/users

这里的属主设置以 Debian 的服务组为前提。Squid 需要读取该文件,其他用户不应读取。后续添加账号时应省略 -c,因为它会创建新文件,可能覆盖现有记录。

在同一条允许规则中同时要求来源与登录

将这些配置放在现有目标端口、管理、localhost 和链路本地防护规则之后:

auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/users
auth_param basic realm PrivateProxy

acl proxy_client src 198.51.100.27/32
acl logged_in proxy_auth REQUIRED

http_access allow proxy_client logged_in
http_access deny all

将客户端地址换成Squid 实际看到的来源。两个条件都必须匹配。移除前面会绕过登录规则的宽泛客户端放行规则,同时保留监听与防火墙限制。

解析、重载,再比较两个请求

sudo squid -k parse -f /etc/squid/squid.conf

修复解析错误后,在测试前重载受管理的 Squid 服务。从允许来源发起的无凭据请求应收到认证质询。使用真实代理主机名,与一个已授权请求比较:

curl --proxy http://proxy.example:3128 --proxy-basic --proxy-user proxyuser --noproxy '' --connect-timeout 5 --max-time 15 https://example.com/

仅提供用户名会让 curl 提示输入密码。有效请求应能到达目标。

Basic 认证不会加密客户端与代理之间的交换。之后目标网站的 HTTPS 无法保护已经发往明文代理的凭据;应使用得到适当保护的路径。这些指令针对 Squid 6.13;Squid 8 应参阅对应版本的配置。

相关文章