Squid 代理身份验证 - 最轻松的方式

Squid 代理身份验证 - 最轻松的方式

好吧,标题确实说明了一切。

最终目标是为最终用户实现代理身份验证。用户的系统大部分 (95%) 基于 Windows,代理是运行 squid 2.7 的 Debian Lenny。

我调查了实现它的可能方法,首先使用 Lenny 中随 squid2.7 一起提供的 ntlm_auth 帮助程序,但失败了,- 有些用户顺利通过了身份验证,有些用户由于某种原因没有通过。我找不到相关性,我甚至用 wireshark 检查了实际的 smb 数据包流,但无济于事 - 它似乎完全是随机的。我已经在不同的物理机器/帐户上尝试过,所以排除了。

那么,似乎有两种可行的方法。使用 winbind (使用 samba) 和使用 ldap+kerberos。

我个人反对使用 Samba,因为,首先它要求你完成某些步骤,比如加入域等等,其次(这是关键)——我不需要samba 提供的所有功能,根本不希望在那台机器上拥有所有这些功能,如类似 windows 的共享等等。如果我不得不使用 samba,我真的希望只使用尽可能少的功能子集 - 足以让 samba 的 ntlm_auth(使用 winbind)对用户进行身份验证。有人有这种设置的经验吗?

我读了这个问题(其实不是问题 :P)我真的很喜欢我所看到的,kerberos 似乎是一个可行的解决方案,而且占用空间不是很大。问题是,是否可以在 windows-2000 版本的域上运行它?浏览器支持情况如何?

答案1

我假设您正在使用 Active Directory 服务器。我们做过类似的事情,最简单的方法是使用 ntlm_auth 帮助程序,如下所示(我的 squid.conf 的一部分):

auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 10
auth_param ntlm keep_alive on

您必须安装 Samba 并加入您的 Windows 域。您的 smb.conf 必须使用以下设置:

security = ADS
realm = your-dns-domain
password server = your-active-directory-server
winbind enum groups = yes
winbind enum users = yes
winbind uid = 10000-20000
winbind gid = 10000-20000
winbind use default domain = yes

我认为还需要修改 /etc/krb5.conf:

[libdefaults]
default_realm = your-dns-domain

[realms]
your-dns-domain = {
kdc = your-ad-server
}

然后您就能加入您的 Windows 域了:

net rpc join -S PDC -U 管理员

最后,您应该有一个使用 Windows 单点登录的设置。Internet Explorer(如果您真的要使用它)和 Firefox 都知道如何发送身份验证凭据。

对于不了解 NTLM 的应用程序,您可能还需要添加基本身份验证的后备方案。我还没有测试过。

链接:

相关内容