On Пан, 04 вер 2023, Sam Morris via FreeIPA-users wrote:
I've made some slight progress. I noticed that at the same time, the KDC
logs these messages:
==> /var/log/krb5kdc.log <==
Sep 04 09:46:17 ipa5.ipa.example.com krb5kdc[183962](info): TGS_REQ :
handle_authdata (-1765328371)
Sep 04 09:46:17 ipa5.ipa.example.com krb5kdc[183962](info): TGS_REQ (6
etypes {aes256-cts-hmac-sha1-96(18), aes256-cts-hmac-sha384-192(20),
camellia256-cts-cmac(26), aes128-cts-hmac-sha1-96(17),
aes128-cts-hmac-sha256-128(19), camellia128-cts-cmac(25)}) 192.168.88.5:
HANDLE_AUTHDATA: authtime 1693820777, etypes {rep=UNSUPPORTED:(0)}
HTTP/ipa5.ipa.example....@ipa.example.com for
ldap/ipa5.ipa.example....@ipa.example.com, KDC can't fulfill requested option
Sep 04 09:46:17 ipa5.ipa.example.com krb5kdc[183962](info): ...
CONSTRAINED-DELEGATION s4u-client=host/xoanon.ipa.example....@ipa.example.com
Sep 04 09:46:17 ipa5.ipa.example.com krb5kdc[183962](info): closing down fd
12
It is HANDLE_AUTHDATA issue which is typically a sign of a PAC that
cannot be generated. S4U (constrained delegation) operation requires PAC
presence.
Since the client here is host/xoanon.ipa.example.com, this means this
client most likely has no SID associated with it and cannot be
associated with any of the two supported classes of PAC-enabled
services: IPA servers and IPA clients. Otherwise it would have had a PAC
in the ticket.
I just tried to simulate that with S4U2Self operation where
HTTP/master.ipa.test service would pretend that it authenticate
host/client.ipa.test via a different protocol and then asked for a
service ticket to itself. We have a tool (ipa-print-pac) that allows to
print the content of the PAC:
[root@master ~]# kinit -k -t /var/lib/ipa/gssproxy/http.keytab
HTTP/master.ipa.test
[root@master ~]# /usr/libexec/ipa/ipa-print-pac -E -k
/var/lib/ipa/gssproxy/http.keytab impersonate host/client.ipa.test
Acquired credentials for host/client.ipa.test
PAC_DATA: struct PAC_DATA
num_buffers : 0x00000008 (8)
version : 0x00000000 (0)
buffers: ARRAY(8)
buffers: struct PAC_BUFFER
type : PAC_TYPE_LOGON_INFO (1)
_ndr_size : 0x000001e0 (480)
info : *
info : union PAC_INFO(case 1)
logon_info: struct PAC_LOGON_INFO_CTR
info : *
info: struct PAC_LOGON_INFO
info3: struct netr_SamInfo3
base: struct netr_SamBaseInfo
logon_time : Mon Sep 4
13:39:23 2023 UTC
logoff_time : Thu Sep 14
02:48:05 30828 UTC
kickoff_time : Thu Sep 14
02:48:05 30828 UTC
last_password_change : Mon Sep 4
13:37:22 2023 UTC
allow_password_change : Mon Sep 4
13:37:22 2023 UTC
force_password_change : Thu Sep 14
02:48:05 30828 UTC
account_name: struct lsa_String
length : 0x001e (30)
size : 0x001e (30)
string : *
string :
'client.ipa.test'
full_name: struct lsa_String
length : 0x001e (30)
size : 0x001e (30)
string : *
string :
'client.ipa.test'
logon_script: struct lsa_String
length : 0x0000 (0)
size : 0x0000 (0)
string : *
string : ''
profile_path: struct lsa_String
length : 0x0000 (0)
size : 0x0000 (0)
string : *
string : ''
home_directory: struct lsa_String
length : 0x0000 (0)
size : 0x0000 (0)
string : *
string : ''
home_drive: struct lsa_String
length : 0x0000 (0)
size : 0x0000 (0)
string : *
string : ''
logon_count : 0x0000 (0)
bad_password_count : 0x0000 (0)
rid : 0x00000203 (515)
primary_gid : 0x00000203 (515)
groups: struct samr_RidWithAttributeArray
count : 0x00000000
(0)
rids : *
rids: ARRAY(0)
user_flags : 0x00000020 (32)
0: NETLOGON_GUEST
0: NETLOGON_NOENCRYPTION
0: NETLOGON_CACHED_ACCOUNT
0: NETLOGON_USED_LM_PASSWORD
1: NETLOGON_EXTRA_SIDS
0: NETLOGON_SUBAUTH_SESSION_KEY
0: NETLOGON_SERVER_TRUST_ACCOUNT
0: NETLOGON_NTLMV2_ENABLED
0: NETLOGON_RESOURCE_GROUPS
0: NETLOGON_PROFILE_PATH_RETURNED
0: NETLOGON_GRACE_LOGON
key: struct netr_UserSessionKey
key: ARRAY(16): <REDACTED SECRET VALUES>
logon_server: struct lsa_StringLarge
length : 0x000c (12)
size : 0x000e (14)
string : *
string : 'MASTER'
logon_domain: struct lsa_StringLarge
length : 0x0006 (6)
size : 0x0008 (8)
string : *
string : 'IPA'
domain_sid : *
domain_sid :
S-1-5-21-2093978176-3761652416-3478956151
LMSessKey: struct netr_LMSessionKey
key: ARRAY(8): <REDACTED SECRET VALUES>
acct_flags : 0x00000080 (128)
0: ACB_DISABLED
0: ACB_HOMDIRREQ
0: ACB_PWNOTREQ
0: ACB_TEMPDUP
0: ACB_NORMAL
0: ACB_MNS
0: ACB_DOMTRUST
1: ACB_WSTRUST
0: ACB_SVRTRUST
0: ACB_PWNOEXP
0: ACB_AUTOLOCK
0: ACB_ENC_TXT_PWD_ALLOWED
0: ACB_SMARTCARD_REQUIRED
0: ACB_TRUSTED_FOR_DELEGATION
0: ACB_NOT_DELEGATED
0: ACB_USE_DES_KEY_ONLY
0: ACB_DONT_REQUIRE_PREAUTH
0: ACB_PW_EXPIRED
0: ACB_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION
0: ACB_NO_AUTH_DATA_REQD
0: ACB_PARTIAL_SECRETS_ACCOUNT
0: ACB_USE_AES_KEYS
sub_auth_status : 0x00000000 (0)
last_successful_logon : NTTIME(0)
last_failed_logon : NTTIME(0)
failed_logon_count : 0x00000000 (0)
reserved : 0x00000000 (0)
sidcount : 0x00000001 (1)
sids : *
sids: ARRAY(1)
sids: struct netr_SidAttr
sid : *
sid :
S-1-18-2
attributes :
0x00000007 (7)
1: SE_GROUP_MANDATORY
1: SE_GROUP_ENABLED_BY_DEFAULT
1: SE_GROUP_ENABLED
0: SE_GROUP_OWNER
0: SE_GROUP_USE_FOR_DENY_ONLY
0: SE_GROUP_INTEGRITY
0: SE_GROUP_INTEGRITY_ENABLED
0: SE_GROUP_RESOURCE
0x00: SE_GROUP_LOGON_ID (0)
resource_groups: struct PAC_DOMAIN_GROUP_MEMBERSHIP
domain_sid : NULL
groups: struct samr_RidWithAttributeArray
count : 0x00000000 (0)
rids : NULL
_pad : 0x00000000 (0)
buffers: struct PAC_BUFFER
type : PAC_TYPE_UPN_DNS_INFO (12)
_ndr_size : 0x000000a2 (162)
info : *
info : union PAC_INFO(case 12)
upn_dns_info: struct PAC_UPN_DNS_INFO
upn_name_size : 0x003a (58)
upn_name : *
upn_name :
'host/client.ipa.t...@ipa.test'
dns_domain_name_size : 0x0010 (16)
dns_domain_name : *
dns_domain_name : 'IPA.TEST'
flags : 0x00000002 (2)
0: PAC_UPN_DNS_FLAG_CONSTRUCTED
1: PAC_UPN_DNS_FLAG_HAS_SAM_NAME_AND_SID
ex : union PAC_UPN_DNS_INFO_EX(case 2)
sam_name_and_sid: struct PAC_UPN_DNS_INFO_SAM_NAME_AND_SID
samaccountname_size : 0x001e (30)
samaccountname : *
samaccountname : 'client.ipa.test'
objectsid_size : 0x001c (28)
objectsid : *
objectsid :
S-1-5-21-2093978176-3761652416-3478956151-515
_pad : 0x00000000 (0)
buffers: struct PAC_BUFFER
type : PAC_TYPE_ATTRIBUTES_INFO (17)
_ndr_size : 0x00000008 (8)
info : *
info : union PAC_INFO(case 17)
attributes_info: struct PAC_ATTRIBUTES_INFO
flags_length : 0x00000002 (2)
flags : 0x00000002 (2)
0: PAC_ATTRIBUTE_FLAG_PAC_WAS_REQUESTED
1: PAC_ATTRIBUTE_FLAG_PAC_WAS_GIVEN_IMPLICITLY
_pad : 0x00000000 (0)
buffers: struct PAC_BUFFER
type : PAC_TYPE_TICKET_CHECKSUM (16)
_ndr_size : 0x0000001c (28)
info : *
info : union PAC_INFO(case 16)
ticket_checksum: struct PAC_SIGNATURE_DATA
type : 0x00000014 (20)
signature : DATA_BLOB length=24
[0000] 58 2E 4D 1A 2D B3 3C 90 30 D5 72 82 BB 93 E4 87 X.M.-.<. 0.r.....
[0010] 74 F6 75 4F 9C 1E 22 D5 t.uO..".
_pad : 0x00000000 (0)
buffers: struct PAC_BUFFER
type : PAC_TYPE_LOGON_NAME (10)
_ndr_size : 0x00000034 (52)
info : *
info : union PAC_INFO(case 10)
logon_name: struct PAC_LOGON_NAME
logon_time : Mon Sep 4 13:39:23 2023 UTC
size : 0x002a (42)
account_name : 'host\/client.ipa.test'
_pad : 0x00000000 (0)
buffers: struct PAC_BUFFER
type : PAC_TYPE_SRV_CHECKSUM (6)
_ndr_size : 0x0000001c (28)
info : *
info : union PAC_INFO(case 6)
srv_cksum: struct PAC_SIGNATURE_DATA
type : 0x00000014 (20)
signature : DATA_BLOB length=24
[0000] A5 D3 8A 27 C0 91 F1 A0 C3 A0 6A 1A 4D E6 62 F5 ...'.... ..j.M.b.
[0010] EF 94 64 02 81 AC 2C A7 ..d...,.
_pad : 0x00000000 (0)
buffers: struct PAC_BUFFER
type : PAC_TYPE_KDC_CHECKSUM (7)
_ndr_size : 0x0000001c (28)
info : *
info : union PAC_INFO(case 7)
kdc_cksum: struct PAC_SIGNATURE_DATA
type : 0x00000014 (20)
signature : DATA_BLOB length=24
[0000] 28 C3 C4 97 20 1A CE F2 33 49 85 B6 C8 2F 97 3E (... ... 3I.../.>
[0010] 8B 65 E5 02 4A 03 6F B2 .e..J.o.
_pad : 0x00000000 (0)
buffers: struct PAC_BUFFER
type : PAC_TYPE_FULL_CHECKSUM (19)
_ndr_size : 0x0000001c (28)
info : *
info : union PAC_INFO(case 19)
full_checksum: struct PAC_SIGNATURE_DATA
type : 0x00000014 (20)
signature : DATA_BLOB length=24
[0000] 54 F2 48 08 35 EB E4 F2 46 84 93 9F F9 5C 6B 62 T.H.5... F....\kb
[0010] 0B 5E 51 50 FA 76 8E 60 .^QP.v.`
_pad : 0x00000000 (0)
In case of a failure I would not be able to get PAC output like this.
I guess this is showing that HTTP/ipa5.ipa.example.com (the IPA API
server) is trying to obtain a ticket to LDAP/ipa5.ipa.example.com on
behalf of host/xoanon.ipa.example.com but the KDC is rejecting the
request.
Correct.
If that's right then I guess I need to figure out why that might be.
Unfortunately setting 'debug = true' in /etc/krb5.conf's [logging]
section doesn't cause any more detailed messages to be logged.
krb5 library does not support debugging this way.
If I run gssproxy with --debug-level=2 I can see it logging some stuff
but I guess it's just showing the calls that result in the kdc logging
the above...
gssproxy is not involved in ticket issuance. It is a client app,
effectively.
--
/ Alexander Bokovoy
Sr. Principal Software Engineer
Security / Identity Management Engineering
Red Hat Limited, Finland
_______________________________________________
FreeIPA-users mailing list -- freeipa-users@lists.fedorahosted.org
To unsubscribe send an email to freeipa-users-le...@lists.fedorahosted.org
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedorahosted.org/archives/list/freeipa-users@lists.fedorahosted.org
Do not reply to spam, report it:
https://pagure.io/fedora-infrastructure/new_issue