Active-Directory

Apache Kerberos 身份驗證:KDC 不支持加密類型

  • July 15, 2021

我在這個問題上發布了一個新執行緒,因為我在這裡找到的所有解決方案都不適合我。

我正在嘗試配置 apache2 以通過密鑰表在 AD2012 伺服器上使用 Kerberos 進行身份驗證。

首先,我啟動了我可以在 AD 中進行的所有加密msDS-EncryptedSupportedTypes

這是我的客戶(debian)krb5.conf

[logging]
default = FILE:/var/log/krb5.log

[libdefaults]
default_realm = REALM.LOCAL
kdc_timesync = 1 
ccache_type = 4 
forwardable = true
proxiable = true 
# for testing purpose only
allow_weak_crypto = true

default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5

[realms]
REALM.LOCAL = { 
   kdc = kdc.realm.local
   admin_server = kdc.realm.local
   default_domain = realm.local
}   

[domain_realm]
.realm.local = REALM.local
realm.local = REALM.LOCAL

這是我使用的密鑰表:

klist -kte /etc/apache2/http.keytab

Keytab name: FILE:/etc/apache2/http.keytab
KVNO Timestamp           Principal
---- ------------------- -------------------------------------------------------------
 14 01/01/1970 01:00:00 HTTP/server.realm.local@REALM.LOCAL (des-cbc-crc)
 14 01/01/1970 01:00:00 HTTP/server.realm.local@REALM.LOCALS (des-cbc-md5)
 14 01/01/1970 01:00:00 HTTP/server.realm.local@REALM.LOCAL (arcfour-hmac)
 14 01/01/1970 01:00:00 HTTP/server.realm.local@REALM.LOCAL (aes256-cts-hmac-sha1-96)
 14 01/01/1970 01:00:00 HTTP/server.realm.local@REALM.LOCAL (aes128-cts-hmac-sha1-96)

如果我使用 keytab 向 KDC 進行身份驗證,一切正常:

kinit -Vkt /etc/apache2/http.keytab HTTP/server.realm.local

Authenticated to kerberos v5

列表 -e

Ticket cache: FILE:/tmp/krb5cc_0
Default principal: HTTP/server.realm.local@REALM.LOCAL
Valid starting 
06/04/2017 20:32:09 07/04/2017 06:32:09 krbtgt/REALM.LOCALS@REALM.LOCAL
   renew until 07/04/2017 20:32:08, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96

我現在配置一個.htaccess來測試這樣的身份驗證:

AuthType Kerberos
AuthName "Kerberos Login"
KrbAuthRealm REALM.LOCAL
Krb5KeyTab /etc/apache2/http.keytab
KrbServiceName HTTP/server.realm.local
Require valid-user

添加當我嘗試進行身份驗證時,我在日誌中有這個:

$$ debug $$src/mod_auth_kerb.c(1939):$$ client 192.168.4.16 $$kerb_authenticate_user 使用使用者 (NULL) 和 auth_type Kerberos 輸入 $$ debug $$src/mod_auth_kerb.c(1691):$$ client 192.168.4.16 $$使用 KRB5 GSS-API 驗證客戶端數據 $$ debug $$src/mod_auth_kerb.c(1707):$$ client 192.168.4.16 $$客戶沒有將他們的憑證委託給我們 $$ debug $$src/mod_auth_kerb.c(1735):$$ client 192.168.4.16 $$警告:收到的令牌似乎是 NTLM,Kerberos 模組不支持。檢查您的 IE 配置。 $$ debug $$src/mod_auth_kerb.c(1138):$$ client 192.168.4.16 $$GSS-API 主要狀態:00010000,次要狀態:00000000 $$ error $$ $$ client 192.168.4.16 $$gss_accept_sec_context() 失敗:請求了不受支持的機制(,未知錯誤)

網路跟踪顯示,TGS_REQ正文在 AES256 中加密,而PA-DATA. 但我收到KRB5KDC_ERR_ETYPE_NOSUPP了回應。

如果我為服務手動驗證,我會得到這個:

啟動使用者名

kvno HTTP/server.realm.local@REALM.LOCAL

列表 -e

Valid starting 
06/04/2017 20:32:09 07/04/2017 06:32:09 krbtgt/REALM.LOCAL@REALM.LOCAL
   renew until 07/04/2017 20:32:08, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
06/04/2017 20:35:00 07/04/2017 06:32:09 HTTP/server.realm.local@REALM.LOCAL
   renew until 07/04/2017 20:32:08, Etype (skey, tkt): des-cbc-crc, des-cbc-md5

我不知道 DES 加密是從哪裡來的。

關於什麼可能是錯的任何見解?我怎樣才能進一步調查?

**更新:**我現在懷疑支持 DES 的 AD 服務帳戶。對於我閱讀的內容,它可能會禁用任何其他密碼算法。我無權訪問 AD,所以現在無法測試。

這確實是由於啟動了 AD 中的 DES 支持。這實際上覆蓋了任何其他密碼算法。

因此,在服務帳戶上禁用它會使協商在 AES256 中工作。

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