我在使用 Squid Kerberos 身份验证和 Squidguard ldapusersearch 通过 Active Directory 组成员身份应用 ACL 时遇到了问题。
问题是 :
- Squid 和 Squidguard 将我的用户视为:
[email protected]
所以squidguard 的 '%s' 变量是'[email protected]'
- 在我的 ldap 查询中没有可以解释该字符串的默认属性。
例子 :
src ldap {
ldapusersearch ldap://dc1.domain.local:3268/dc=domain,dc=local?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group,OU=Groups,DC=domain,DC=local))
}
并且 sAMAccountName 应该是唯一的'user'
而不是!!!'[email protected]'
所以我找到了一个解决方案,但它不是很舒服:
我编辑了 AD 用户的一个未使用的属性,并将我的 kerberos 登录信息写入其中,因此我的配置如下所示:
src ldap {
ldapusersearch ldap://dc1.domain.local:3268/dc=domain,dc=local?displayNamePrintable?sub?(&(displayNamePrintable=%s)(memberOf=CN=group,OU=Groups,DC=domain,DC=local))
}
并且它有效!
有谁知道如何绕过在 AD who 内容中创建自定义属性的需要吗?
顺便说一下,userPrincipalName
它与电子邮件相同,无法解释 Kerberos 登录。
答案1
我通过查询 LDAP 中的 userPrincipalName 而不是 sAMAccountName 来实现这一点,因为我的 squid 也返回[电子邮件保护]来自 Kerberos/NTLM 身份验证。
另外,请确保使用 %20 而不是空格,当我在配置文件中指定绑定 DN 时,我使用了引号,因为 DN 中有一个 &,因此 squidguard 不具有绑定性。
答案2
您可以使用“userlist = userlist”(/var/squidGuard/userlist)代替“user = foo bar”