Centos 9 搭建 Squid 绑定AD账号验证的二级代理服务器 ,实现AD验证,同时只允许指定账号名单 保存在 /etc/squid/allow_users 文件中
squid7.3
上游代理服务器 IP 10.1.1.101
AD服务器配置:
IP: 10.1.1.100, AD域名:sample.com
AD验证的账号存放在 OU users 的子 OU squid 里面
需要指定一个AD账号 squid01, 负责读取被验证账号的信息(因为需要保存密码,不建议使用管理员账号),squid01 这个账号存放在 OU users 里面
======================= 开搞,我是分割线 =====================
squid.conf 关键配置如下
bash
auth_param basic children 5
auth_param basic realm Squid LDAP Authentication
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
auth_param basic program /usr/local/squid7.3/libexec/basic_ldap_auth -b "ou=users,dc=sample,dc=com" -D "cn=squid,ou=users,dc=sample,dc=com" -w "12345678" -h "10.1.1.100" -p 389 -f "(sAMAccountName=%s)" -v 3
acl authenticated proxy_auth REQUIRED
acl allow_users proxy_auth "/etc/squid/allow_users"
cache_peer 10.1.1.101 parent 3128 0 no-query name=parent
cache_peer_access parent allow all
refresh_pattern . 0 0% 0
never_direct allow all
http_access deny !authenticated
http_access deny !allow_users
http_access allow all
关键配置项说明:
bash
auth_param basic program /usr/local/squid7.3/libexec/basic_ldap_auth -b "ou=squid,ou=users,dc=sample,dc=com" -D "cn=squid01,ou=users,dc=sample,dc=com" -w "12345678" -h "10.1.1.100" -p 389 -f "(sAMAccountName=%s)" -v 3
需要验证的AD账号放在 sample.com --> users --> squid 这个 OU 下面
-b "ou=squid,ou=users,dc=sample,dc=com"
需要指定一个可以读取其它账号信息的 AD 账号 squid01, 密码为 12345678
-D "cn=squid01,ou=users,dc=sample,dc=com" -w "12345678"
AD服务器的 IP 地址: 10.1.1.100 (如果有多台DC, 随便写一台),端口 389
-h "10.1.1.100" -p 389
使用账号验证(不是中文姓名),sAMAccountName 表示账号名
-f "(sAMAccountName=%s)"
acl 规则说明:
bash
表示拒绝验证失败的用户
http_access deny !authenticated
表示拒绝账号名单不在 allow_users 中的账号
http_access deny !allow_users
可以在上面加入限制 IP 和 URL 的拒绝项,最后通过验证
http_access allow all
配置完成后,检查配置项:
squid -k parse
如果没有错误,下一步开始调试AD验证
bash
# sudo -u squid /usr/local/squid7.3/libexec/basic_ldap_auth -b "ou=squid,ou=users,dc=sample,dc=com" -D "cn=squid01,ou=users,dc=sample,dc=com" -w "12345678" -h "1.1.1.100" -p 389 -f "(sAMAccountName=%s)" -v 3
回车后输入账号和密码(中间空格隔开)
squidtst01 12345678
如果显示OK 表示验证成功
如果显示BH Success 表示使用账号 squid01 Bind成功,但验证所输入的账号失败,有几种可能:
1. 被验证的账号没有放到OU squid 里面
2. 账号密码不正确,或者被锁定(这一步可以在 windows 中排查)
3. 账号可能限制了登录的电脑(这种情况只能启用第三方验证)
如果显示 BH Success 也可以在 AD PowerShell 中检查账号的DN 信息:
bash
PS C:\Windows\system32> Get-ADUser -Identity "squidtst01" -Properties DistinguishedName | Select-Object DistinguishedName
或者直接在 squid 服务器中查询账号:
bash
ldapsearch -x -h 10.1.1.100 -p 389 -D "cn=squid01,ou=users,dc=sample,dc=com" -w "12345678" -b "dc=sample,dc=com" "(sAMAccountName=squidtst01)"
======================= 收工,我是分割线 =====================
原创,转载请备注出处