ここで見つけたすべての解決策がうまくいかなかったので、この問題について新しいスレッドを投稿します。
キータブ経由でAD2012サーバーのKerberosで認証するようにApache2を構成しようとしています。
まず、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
klist -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で入力されました
[デバッグ] src/mod_auth_kerb.c(1691):[クライアント192.168.4.16] KRB5 GSS-APIを使用したクライアントデータの確認
[デバッグ] src/mod_auth_kerb.c(1707):[クライアント192.168.4.16]クライアントは資格情報を委任しませんでした
[デバッグ] src/mod_auth_kerb.c(1735):[クライアント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ユーザー名
knvo HTTP/server.realm.local @ REALM.LOCAL
klist -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暗号化がどこから来ているのかわかりません。
何が悪いのかについての洞察はありますか?どうすれば調査をさらに進めることができますか?
PDATE: DESサポート付きのADサービスアカウントが疑われます。読んだ内容では、他の暗号アルゴリズムが無効になる可能性があります。アクセスできません。今はテストできません。
これは確かに、ADでのDESサポートのアクティブ化によるものでした。これは、実際には他の暗号アルゴリズムをオーバーライドします。
そのため、サービスアカウントで無効にすると、AES256で交渉が機能します。