Apache-2.2

將 Linux MIT Kerberos 與 Windows 2003 Active Directory 連結

  • May 17, 2010

問候,我想知道如何將 Linux MIT Kerberos 與 Windows 2003 Active Directory 連結以實現以下目標:

  1. 使用者 USER@WINDOWDIRECTORY.INTERNAL 嘗試登錄 Apache 網站,該網站與 Linux MIT Kerberos 在同一台伺服器上執行。
  2. Apache 模組首先詢問本地 Linux MIT Kerberos 是否知道該名稱或領域的使用者。
  3. MIT Kerberos 發現它不對那個領域負責,並將請求轉發到 Windows 2003 Active Directory。
  4. Windows 2003 Active Directory 積極響應並將此資訊提供給 Linux MIT Kerberos,後者又將此資訊告知 Apache 模組,後者授予使用者對其文件的訪問權限。

這是情況的圖像: dfdfdf

我讀過的有關此問題的文件通常與此問題不同:

  • 一些人討論了將 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 的輸出:

  1. Akinit為 Active Directory 使用者“tester”(tester@WINDOWS.LAN),成功(忽略 KRB5KDC_ERR_PREAUTH_REQUIRED,這裡沒有 preauth)
  2. 一次訪問 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 配置時,此配置並不是那麼複雜且非常標準的做法。

引用自:https://serverfault.com/questions/142090