將 Linux MIT Kerberos 與 Windows 2003 Active Directory 連結
問候,我想知道如何將 Linux MIT Kerberos 與 Windows 2003 Active Directory 連結以實現以下目標:
- 使用者 USER@WINDOWDIRECTORY.INTERNAL 嘗試登錄 Apache 網站,該網站與 Linux MIT Kerberos 在同一台伺服器上執行。
- Apache 模組首先詢問本地 Linux MIT Kerberos 是否知道該名稱或領域的使用者。
- MIT Kerberos 發現它不對那個領域負責,並將請求轉發到 Windows 2003 Active Directory。
- Windows 2003 Active Directory 積極響應並將此資訊提供給 Linux MIT Kerberos,後者又將此資訊告知 Apache 模組,後者授予使用者對其文件的訪問權限。
這是情況的圖像:
我讀過的有關此問題的文件通常與此問題不同:
- 一些人討論了將 MIT Kerberos 與 Active Directory 連接起來以訪問 Active Directory 伺服器上的資源;
- 而另一個使用該連結通過Windows 2003 Active Directory向 MIT Kerberos 驗證 Windows 使用者。(我的問題是相反的。)
所以我的問題歸結為:
是否可以讓 Linux MIT Kerberos 伺服器通過對 Active Directory 領域的請求,然後讓它接收回复並將其提供給請求服務?(雖然請求服務和 Windows 2003 Active Directory 直接通信不是問題。)
非常感謝您提出建議和建設性批評。:)
稍後編輯
我對此有一些問題。我已成功配置 mod_auth_kerb 以與 MIT Kerberos(在我的情況下為 EINDWERK.LAN)進行協商,如果我
kinit
在 Ubuntu 上獲取本地 MIT Kerberos 的票,我可以瀏覽 Apache 網路伺服器而不會被提示登錄。但是,如果我從 Active Directory 伺服器(在我的情況下為 WINDOWS.LAN)獲取票證並瀏覽到 Apache 網路伺服器,我會收到登錄提示。通過 Wireshark 查看數據包,Apache 網路伺服器似乎錯誤地嘗試將 EINDWERK.LAN 的 TGT 用於 WINDOWS.LAN。
我已經上傳了 Wireshark 的輸出:
- A
kinit
為 Active Directory 使用者“tester”(tester@WINDOWS.LAN),成功(忽略 KRB5KDC_ERR_PREAUTH_REQUIRED,這裡沒有 preauth)- 一次訪問 Apache 網路伺服器,你可以看到它出錯了。$$ LINK $$
**編輯:**是的,它總是嘗試使用 EINDWERK.LAN 的 TGT 進行身份驗證。我將嘗試在 AD 和 MIT Kerberos 之間建立信任,看看是否能解決它。
**EDIT2:**好的,通過創建信任(Here’s a tutorial),一切似乎都正確檢查,但我不得不對來自 Active Directory 的票證強制進行 rc4-hmac 加密,並且 Apache HTTP 服務在 des3-cbc 中加密-sha1。有誰知道如何刪除主體並使用某種加密方式加密其密鑰?
好的,通過重新創建我的 Kerberos 數據庫並添加可用的每個 enctype 的主體(aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3),然後將 HTTP/link.to.website@REALM 導出到 apache 的 keytab,Active Directory 使用者現在也可以登錄。
這是一個使用每種編碼添加主體並將其導出到密鑰表的範例:
addprinc -e “aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3” HTTP/www.eindwerk.區域網路
ktadd -e “aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3” -kt /etc/apache2 /apache.keytab HTTP/www.eindwerk.lan
**編輯:**好的,這一切似乎都工作正常,除了 Internet Explorer 總是試圖獲得 HTTP/
$$ TRUSTED_DOMAIN_NAME_IN_WIN_2003 $$在第一次嘗試。在我的例子中,它轉換為“HTTP/EINDWERK.LAN”,而它應該是“HTTP/NS.EINDWERK.LAN”。 我還注意到嘗試更改信任的域名$$ IMAGE $$完全且絕對破壞任何跨領域身份驗證:TGT 已正確交換,但是當您的本地 Linux KDC 嘗試實際使用票證時,它發現它無法解密它,並拋出“PROCESS_TGS: authtime 0, for HTTP/ns. eindwerk.lan@EINDWERK.LAN, No matching key in entry”在 KDC 日誌中出現錯誤。原因很可能是很多加密機制都將域和使用者名作為鹽,所以域名確實需要正確設置。
/etc/krb5.conf
您可以在 Linux 上的文件中設置多個領域。請參閱MIT Kerberos 文件的領域部分。您可以在那裡配置您的 Windows 領域,並且使用屬於該領域的主體登錄的使用者將根據您的 Windows 2003 Active Directory 進行身份驗證。然後您只需使用mod_auth_kerb設置 Apache並確保設置
KrbAuthRealms
配置變數以包含您希望能夠通過 Apache 進行身份驗證的所有領域。除非我遺漏了什麼,否則在使用多領域 Kerberos 配置時,此配置並不是那麼複雜且非常標準的做法。