Apache Kerberos 身份验证:KDC 不支持加密类型

Apache Kerberos 身份验证:KDC 不支持加密类型

我针对此问题发布了一个新帖子,因为我在这里找到的所有解决方案对我来说都不起作用。

我正在尝试配置 apache2 以通过 keytab 在 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/[email protected] (des-cbc-crc)
  14 01/01/1970 01:00:00 HTTP/[email protected] (des-cbc-md5)
  14 01/01/1970 01:00:00 HTTP/[email protected] (arcfour-hmac)
  14 01/01/1970 01:00:00 HTTP/[email protected] (aes256-cts-hmac-sha1-96)
  14 01/01/1970 01:00:00 HTTP/[email protected] (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/[email protected]
Valid starting 
06/04/2017 20:32:09 07/04/2017 06:32:09 krbtgt/[email protected]
    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

当我尝试进行身份验证时添加日志中的内容:

[调试] src/mod_auth_kerb.c(1939): [客户端 192.168.4.16] kerb_authenticate_user 使用用户 (NULL) 和 auth_type Kerberos 输入

[debug] src/mod_auth_kerb.c(1691): [客户端 192.168.4.16] 使用 KRB5 GSS-API 验证客户端数据

[debug] src/mod_auth_kerb.c(1707): [客户端 192.168.4.16] 客户端没有将其凭证委托给我们

[debug] src/mod_auth_kerb.c(1735): [client 192.168.4.16] 警告:收到的令牌似乎是 NTLM,Kerberos 模块不支持它。请检查您的 IE 配置。

[调试] src/mod_auth_kerb.c(1138): [客户端 192.168.4.16] GSS-API major_status:00010000,minor_status:00000000

[错误] [客户端 192.168.4.16] gss_accept_sec_context() 失败:请求了不受支持的机制(,未知错误)

网络跟踪显示TGS_REQ主体采用 AES256 加密,TGT 也采用 加密PA-DATA。但我收到了KRB5KDC_ERR_ETYPE_NOSUPP回复。

如果我手动验证该服务,我会得到以下信息:

kinit 用户名

韓文 HTTP/[电子邮件保护]

列表-e

Valid starting 
06/04/2017 20:32:09 07/04/2017 06:32:09 krbtgt/[email protected]
    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/[email protected]
    renew until 07/04/2017 20:32:08, Etype (skey, tkt): des-cbc-crc, des-cbc-md5

我不知道 DES 加密来自哪里。

对于可能出现的问题,您有什么见解吗?我该如何进一步调查?

更新:我现在怀疑是支持 DES 的 AD 服务帐户。据我所知,它可能会禁用任何其他密码算法。我无法访问 AD,因此现在无法测试。

答案1

这确实是由于 AD 中激活了 DES 支持。这实际上会覆盖任何其他密码算法。

因此,在服务帐户上禁用它使得协商在 AES256 中有效。

相关内容