Squid 代理身份驗證 - 最輕鬆的方式
好的,標題說明了一切,真的。
最終目標是為最終使用者實現代理身份驗證。使用者的系統大多 (95%) 基於 Windows,代理是執行 squid 2.7 的 Debian Lenny。
我已經研究了實現它的可能方法,首先使用 ntlm_auth 助手,它在 Lenny 中隨 squid2.7 一起提供,但它失敗了——有些使用者可以很好地通過身份驗證,有些使用者由於某種原因沒有。我找不到相關性,我什至用wireshark檢查了實際的smb數據包流,但無濟於事——它似乎完全是隨機的。我已經在不同的物理機器/帳戶上嘗試過,所以排除了。
然後,似乎有兩條可能的路線可用。使用 winbind(使用 samba)和使用 ldap+kerberos。
我個人反對使用 samba,因為首先它需要您跳過某些環節,例如加入域等等,其次(這就是關鍵)——我不需要samba提供的所有功能,它是只是不希望在那台機器上擁有所有這些功能,例如類似 Windows 的共享等。如果我不得不求助於使用 samba,我真的很想只使用功能的最小可能子集, - 足以讓 samba 的 ntlm_auth(使用 winbind)對使用者進行身份驗證。有沒有人有這種設置的經驗?
我讀過這個問題(不是一個真正的問題:P),我真的很喜歡我所看到的,-kerberos 似乎是一個可能的解決方案,而且佔用空間並不大。問題是,是否可以在 windows-2000 版本的域上執行它?瀏覽器支持如何?
我假設您使用的是 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 的應用程序,您可能還需要添加回退到基本身份驗證。我還沒有測試過。
連結: