我正在使用 Squid 代理,它需要根据 Active Directory 域对用户进行身份验证;这工作正常,Samba 已正确设置,Squid 通过 验证用户身份ntlm_auth
。squid.conf 中的相关行:
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param ntlm keep_alive on
acl Authenticated proxy_auth REQUIRED
http_access allow Authenticated
http_access deny all
现在,我需要一种方法来允许没有域帐户的用户访问。我知道我可以在域中创建一个“互联网用户”帐户,但这将允许访问域资源(文件共享等),尽管访问受限;我需要一种只允许互联网访问的方法。
理想的解决方案是使用代理服务器上的本地帐户,可以是 Linux 帐户或 Squid 帐户;我知道 Squid 支持这一点,但我无法让它使用两个都域身份验证,如果域身份验证不成功,则进行 Squid/本地身份验证。
可以做到吗?怎样做?
答案1
现在,我需要一种方法来允许没有域帐户的用户访问。可以做到吗?
是的。
如何?
您可以使用“外部”ACL 助手,它允许您使用自己的机制。请参阅Squid wiki“多源”条目了解更多详情。这段伪代码直接取自此处:
auth_param basic program /usr/local/bin/my-auth.pl
external_acl_type myAclType %SRC %LOGIN %{Proxy-Authorization} /usr/local/bin/my-acl.pl
acl MyAcl external myAclType
http_access allow MyAcl
...其中 my-auth.pl 是一段执行实际身份验证的 perl 脚本,并返回OK
或ERR
作为结果。
答案2
创建受限域用户(隔离 OU)。从 squid 创建一个 squid ldap auth,允许用户使用互联网。