AWS Simple AD:“KDC 不支持加密類型”用於使用 adtool 創建的使用者,但不使用 MS 管理控制台
背景
我正在嘗試以
sssd
我在 AWS Directory Services Simple AD 中創建的使用者身份登錄(通過 SSH,登錄到正在執行的 Amazon Linux EC2 實例)。我正在使用 kerberos 進行身份驗證並使用 LDAP 辨識使用者(全部通過sssd
.)問題
我無法以我創建的使用者身份登錄
adtool
,這意味著我很難自動將新使用者添加到我的 Simple AD。當我嘗試時,KDC 說它不支持加密類型(我假設這是使用者密碼?)請參閱下面的“錯誤消息”部分。但是,我既可以作為內置管理員使用者登錄,也可以作為我通過 Microsoft 管理控制台在加入域的 Windows Server 2008 EC2 實例上創建的使用者登錄。所以我的設置有效,或者至少部分有效。
TL;需要 DR 解決方案
我需要知道我做錯了什麼,
adtool
這會阻止我以使用他們創建的使用者身份登錄。我做錯了什麼並不明顯,我認為這對於嘗試做與我類似的事情的人通常很有用。詳情如下。錯誤資訊
這是
sssd
嘗試以創建的使用者身份登錄時的輸出adtool
:(Thu Dec 31 15:35:35 2015) [[sssd[krb5_child[5459]]]] [sss_child_krb5_trace_cb] (0x4000): [5459] 1451576135.446649: Response was from master KDC (Thu Dec 31 15:35:35 2015) [[sssd[krb5_child[5459]]]] [sss_child_krb5_trace_cb] (0x4000): [5459] 1451576135.446788: Received error from KDC: -1765328370/KDC has no support for encryption type (Thu Dec 31 15:35:35 2015) [[sssd[krb5_child[5459]]]] [get_and_save_tgt] (0x0020): 996: [-1765328370][KDC has no support for encryption type] (Thu Dec 31 15:35:35 2015) [[sssd[krb5_child[5459]]]] [map_krb5_error] (0x0020): 1065: [-1765328370][KDC has no support for encryption type] (Thu Dec 31 15:35:35 2015) [[sssd[krb5_child[5459]]]] [k5c_send_data] (0x0200): Received error code 1432158209
從客戶端它說
Permission denied, please try again.
建築學
以下是我圍繞 Simple AD 的架構:
此設置使我能夠使用 LDAPS,即使 AWS 的 Simple AD 不支持它。
ELB 的 route53 記錄是
directory.myteam.mycompany.com
,但我用於 Simple AD 的域是myteam.mycompany.internal
。執行 sssd 的機器上的配置
/etc/sssd/sssd.conf
:[sssd] config_file_version = 2 reconnection_retries = 3 sbus_timeout = 30 services = nss, pam domains = myteam [nss] default_shell = /bin/bash fallback_homedir = /home/%u ldap_user_home_directory = unixHomeDirectory [pam] reconnection_retries = 3 offline_credentials_expiration = 2 offline_failed_login_attempts = 3 offline_failed_login_delay = 5 [domain/myteam] enumerate = true cache_credentials = TRUE id_provider = ldap ldap_uri = ldaps://directory.myteam.mycompany.com ldap_tls_cacert = /etc/pki/tls/certs/ca-bundle.crt ldap_default_bind_dn = CN=test-user,CN=users,DC=myteam,DC=mycompany,DC=internal ldap_default_authtok = REDACTED_PASSWORD ldap_id_use_start_tls = true ldap_schema = AD ldap_force_upper_case_realm = true ldap_id_mapping = true ldap_search_base = CN=users,DC=myteam,DC=mycompany,DC=internal ldap_user_uuid = none ldap_group_uuid = none chpass_provider = krb5 auth_provider = krb5 krb5_server = directory.myteam.mycompany.com krb5_realm = MYTEAM.MYCOMPANY.INTERNAL krb5_changepw_principal = kadmin/changepw krb5_ccachedir = /tmp krb5_ccname_template = FILE:%d/krb5cc_%U_XXXXXX krb5_auth_timeout = 15 krb5_canonicalize = True
/etc/sysconfig/authconfig
:IPADOMAINJOINED=no USEMKHOMEDIR=yes USEPAMACCESS=no CACHECREDENTIALS=yes USESSSDAUTH=yes USESHADOW=yes USEWINBIND=no PASSWDALGORITHM=sha512 FORCELEGACY=yes USEFPRINTD=no FORCESMARTCARD=no USEDB=no USELDAPAUTH=no USEPASSWDQC=no IPAV2NONTP=no WINBINDKRB5=no USELOCAUTHORIZE=yes USEECRYPTFS=no USECRACKLIB=yes USEIPAV2=no USEWINBINDAUTH=no USESMARTCARD=no USELDAP=yes USENIS=no USEKERBEROS=no USESYSNETAUTH=no USESSSD=yes USEPWQUALITY=yes USEHESIOD=no
除了這兩個文件之外,我還確保
sshd_config
在 pam 模組中啟用密碼身份驗證並啟用 sssdsudo authconfig --updateall --enablesssd --enablesssdauth
。
/etc/pam.d/system-auth
:auth required pam_env.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet_success auth sufficient pam_sss.so use_first_pass auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_sss.so account required pam_permit.so password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_sss.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so -session optional pam_systemd.so session optional pam_mkhomedir.so umask=0077 session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_sss.so
軟體版本
uname -a
:Linux ip-172-31-31-2 4.1.10-17.31.amzn1.x86_64 #1 SMP Sat Oct 24 01:31:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
sssd
1.12.2adtool
1.3.3openldap-clients
2.4.23-34.25.amzn1使用者之間的差異
為了顯示這些使用者在我的目錄中的不同之處,這裡是
ldapsearch
從正在執行的實例中查詢它們的輸出sssd
。使用創建的使用者
adtool
(編輯:您將在下面看到該pwdLastSet
值存在,我相信它之前不存在,它的存在是我回答的關鍵):$ ldapsearch -LLL -H ldaps://directory.myteam.mycompany.com -D CN=Administrator,CN=users,DC=myteam,DC=mycompany,DC=internal -x -W '(cn=test-user)' Enter LDAP Password: dn: CN=test-user,CN=Users,DC=myteam,DC=mycompany,DC=internal objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn: test-user instanceType: 4 whenCreated: 20151230204358.0Z displayName: Test user uSNCreated: 3532 name: test-user objectGUID:: ZhfGzcqLd06x2UBU3UNiZQ== codePage: 0 countryCode: 0 primaryGroupID: 513 objectSid:: AQUAAAAAAAUVAAAAHWfr9xoaXwKvEcuoUwQAAA== accountExpires: 9223372036854775807 sAMAccountName: test-user sAMAccountType: 805306368 userPrincipalName: test-user@myteam.mycompany.internal objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=myteam,DC=mycompany,DC =internal userAccountControl: 512 lockoutTime: 0 whenChanged: 20151231150317.0Z uSNChanged: 3619 pwdLastSet: 130960477970000000 distinguishedName: CN=test-user,CN=Users,DC=myteam,DC=mycompany,DC=internal
通過 Microsoft 管理控制台創建的使用者:
$ ldapsearch -LLL -H ldaps://directory.myteam.mycompany.com -D CN=Administrator,CN=users,DC=myteam,DC=mycompany,DC=internal -x -W '(sAMAccountName=test-windows-2008)' Enter LDAP Password: dn: CN=Test User,CN=Users,DC=myteam,DC=mycompany,DC=internal objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn: Test User sn: User givenName: Test instanceType: 4 whenCreated: 20151230223533.0Z whenChanged: 20151230223534.0Z displayName: Test User uSNCreated: 3563 uSNChanged: 3563 name: Test User objectGUID:: 2cuynP3/9EeRIm1fCUJ9jA== userAccountControl: 512 codePage: 0 countryCode: 0 pwdLastSet: 130959885340000000 primaryGroupID: 513 objectSid:: AQUAAAAAAAUVAAAAHWfr9xoaXwKvEcuoVwQAAA== accountExpires: 9223372036854775807 sAMAccountName: test-windows-2008 sAMAccountType: 805306368 userPrincipalName: test-windows-2008@myteam.mycompany.internal objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=myteam,DC=mycompany,DC =internal distinguishedName: CN=Test User,CN=Users,DC=myteam,DC=mycompany,DC=internal
我使用 MMC 和 MMC 的區別在於
adtool
MMC 鼓勵我初始化使用者密碼,但我忘記對使用adtool
. 以下步驟解決了它,並且可重現:$ adtool userunlock -w REDACTED_PASSWORD 'test-user' $ adtool setpass -w REDACTED_PASSWORD test-user REDACTED_PASSWORD
在我最初的問題中,今天早上我在同事完成上述步驟設置密碼後重新查詢了原件
test-user
,所以輸出顯示密碼已設置但昨晚我嘗試登錄時沒有已設置,因此問題。當我今天再次嘗試登錄時,它成功了,經過一番調查,我發現這就是原因。現在,我只能推測為什麼會出現“KDC不支持加密類型”的消息:因為沒有密碼,所以沒有加密類型。如果我錯了,我很想得到糾正。
TL; DR必須記住在使用
adtool
而不是 MMC 時解鎖使用者並設置他們的密碼。