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

shy*_*ent 2 proxy kerberos authentication squid ntlm

好吧,标题说明了一切,真的。

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

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

然后,似乎有两种可能的路线可用。使用 winbind(使用 samba)并使用 ldap+kerberos。

我个人反对使用桑巴,因为首先它需要你通过一定的跳火圈像加入域等,和第二(这也是排排坐) -我并不需要全部由桑巴提供的功能,它是只是不希望在那台机器上拥有所有这些功能,比如类似 windows 的共享等等。如果我不得不求助于使用 samba,我真的只想使用尽可能少的功能子集,- 足以让 samba 的 ntlm_auth(使用 winbind)验证用户身份。有没有人有这种设置的经验?

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

Sig*_*num 7

我假设您使用的是 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
Run Code Online (Sandbox Code Playgroud)

您必须安装 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
Run Code Online (Sandbox Code Playgroud)

我认为也有必要更改 /etc/krb5.conf:

[libdefaults]
default_realm = your-dns-domain

[realms]
your-dns-domain = {
kdc = your-ad-server
}
Run Code Online (Sandbox Code Playgroud)

然后您应该能够加入您的 Windows 域:

net rpc join -S PDC -U 管理员

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

对于不知道 NTLM 的应用程序,您可能还需要向基本身份验证添加回退。我还没有测试过。

链接: