AWS简单AD:对于使用adtool创build的用户,“KDC不支持encryptiontypes”,但对于MS Management Console则不支持

背景

我试图以我在AWS Directory Services Simple AD中创build的用户身份login(通过SSH,运行到运行sssd的Amazon Linux EC2实例)。 我使用sssd身份validation,并使用LDAP来识别用户(全部通过sssd

问题

我无法以adtool创build的用户adtool ,这意味着我很难自动将新用户添加到我的简单AD。 当我尝试,KDC说,它不能支持encryptiontypes(我假设这是用户的密码?)请参阅下面的“错误信息”部分。

但是,我可以以内置pipe理员用户身份login,也可以通过join域的Windows Server 2008 EC2实例上的Microsoftpipe理控制台创build的用户身份login。 所以我的设置工作,或者至less部分工作。

TL;需要DR解决scheme

我需要知道是什么,我做错了adtool ,阻止我作为用户创build的用户login。 我不明白自己做错了什么,我认为这对于试图做类似于我的事情的人来说可能是有用的。 下面的细节。


错误信息

这是在用adtool创build的用户尝试login时的sssd输出:

 (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.

build筑

以下是我简单AD的架构:

体系结构图

即使AWS的简单AD不支持此设置,也可以使用LDAPS。

ELB的route53logging是directory.myteam.mycompany.com ,但是我用于Simple AD的域是myteam.mycompany.internal

在运行sssd的机器上进行configuration

/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启用密码authentication,并在sudo authconfig --updateall --enablesssd --enablesssdauth pam模块中的sssd。

/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 -aLinux 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.2
  • adtool 1.3.3
  • openldap-clients 2.4.23-34.25.amzn1

用户之间的差异

为了显示这些用户在我的目录中的不同之处,下面是ldapsearch运行sssd的实例中的ldapsearch查询它们的输出。

adtool创build的用户(编辑:你会在下面看到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: [email protected] 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 

通过Microsoftpipe理控制台创build的用户:

 $ 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: [email protected] 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 

我使用adtool和MMC的区别在于,MMC鼓励我使用用户的密码,但是我忘记了用adtool创build的用户也adtool 。 下面的步骤解决了这个问题,并可重复地这样做:

 $ adtool userunlock -w REDACTED_PASSWORD 'test-user' $ adtool setpass -w REDACTED_PASSWORD test-user REDACTED_PASSWORD 

在我最初的问题中,我曾经在上面的一个同事做了上面的步骤设置密码后重新询问了原来的test-user ,所以输出显示密码已经设置,但昨天晚上当我尝试login时还没有确定,所以这个问题。 当我今天再次尝试login时,它发挥了作用,经过一番调查,我发现这是为什么。

现在,我只能猜测为什么“KDC不支持encryptiontypes”的消息出现了:因为没有密码,所以没有encryptiontypes。 如果我错了,我很想纠正。

TL; DR必须记住解锁用户,并设置他们的密码时,使用adtool而不是MMC。

我曾经见过这样的错误,这是由于其中一个帐户选项被设置(在非AWS环境中),但我不记得哪个确切的属性。 与使用MMC创build的用户相比,使用ADTool创build的用户是否设置了额外的“选项”? 我不确定如何使用LDAPSearch显示这些选项。 我知道如何使用两种方法显示。 您也可以使用Get-Aduser -prop *Get-Aduser来显示所有属性。

acctOptions

 PS C:\temp> get-aduser mbe998 -prop DoesNotRequirePreAuth,UseDESKeyOnly DistinguishedName : CN=Mary Brown,OU=Junk,DC=acme,DC=com DoesNotRequirePreAuth : True Enabled : False GivenName : Mary Name : Mary Brown ObjectClass : user ObjectGUID : f7f30ebe-f91d-41de-b38e-ae29853b7291 SamAccountName : mbe998 SID : S-1-5-21-3362165994-992225803-2260058754-129428 Surname : Brown UseDESKeyOnly : True UserPrincipalName : [email protected]