CentOS/RHEL 7 上的 OpenLDAP 2.4.44 身份验证

CentOS/RHEL 7 上的 OpenLDAP 2.4.44 身份验证

我在 CentOS 7.4 上运行 OpenLDAP 2.4.44,并添加了“测试者”用户。我可以查询用户并更改密码,但使用 GNOME 登录屏幕进行身份验证时总是被拒绝。我使用了这个指导进行设置。

我用来设置系统的 LDIF 文件如下:

数据库文件

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=ldapadm,dc=example

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: <omitted>

监控文件

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=ldapadm,dc=example" read by * none

基础LDIF文件

dn: dc=example
dc: example
objectClass: top
objectClass: domain

dn: cn=ldapadm,dc=example
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager

dn: ou=People,dc=example
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=example
objectClass: organizationalUnit
ou: Groups

证书.ldif(这些证书已创建并且所有者/组已更改为 ldap:ldap)

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/managerldapcert.pem

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/managerldapkey.pem

测试器文件

dn: uid=tester,ou=People,dc=example
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tester
uid: tester
uidNumber: 9001
gidNumber: 100
homeDirectory: /home/tester
loginShell: /bin/bash
gecos: Tester Account
userPassword: {crypt}x
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

显示用户的帐户信息:

ldapsearch -x cn=tester -b dc=example

答复如下:

# extended LDIF
#
# LDAPv3
# base <dc=example> with scope subtree
# filter: cn=tester
# requesting: ALL
#

# tester, People, example
dn: uid=tester,ou=People,dc=example
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tester
uid: tester
uidNumber: 9001
gidNumber: 100
homeDirectory: /home/tester
loginShell: /bin/bash
gecos: Tester Account
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0
userPassword:: <omitted>

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

我可以使用以下命令更改密码:

ldappasswd -H ldap:/// -x -D "cn=ldapadm,dc=example" -W -S "uid=tester,ou=People,dc=example"

这将提示输入新用户密码(两次)和 LDAP 根密码,然后退出。我可以观察到,通过使用 ldapsearch 重新查询(其中 userPassword:: 部分发生变化),密码已更改。

我可以使用以下方式登录 LDAP 帐户来验证密码:

ldapwhoami -vvv -h ldapi:/// -p 389 -D "uid=tester,ou=People,dc=example" -x -W

然后我使用以下命令设置 authconfig:

authconfig --enableldap --enableldapauth --ldapserver=servername.example --ldapbasedn="dc=example" --enablemkhomedir --update

但是,当我尝试使用 CentOS GNOME 登录屏幕时,密码被拒绝。

/var/log/安全我看到以下内容:

pam_sss(gdm-password:auth): authentication failure; logname= uid=0 euid=0 tty=/dev/tty1 ruser= rhost= user=tester
pam_sss(gdm-password:auth): received for user tester: 6 (Permission denied)

我尝试过但没有成功的事情:

  • 禁用 SELinux(作为测试,而不是因为它是一个可能的解决方案)
  • FORCELEGACY=yes按照/etc/sysconfig/authconfig此设置邮政
  • 使用system-config-authentication和其他建议关联
  • 使用建议安装我创建的证书这里

我的问题是... CentOS 7 如何尝试登录(我如何使用 ldapwhoami 模拟登录尝试),以及如何更好地调试/记录? 我的用户 DN 看起来合理吗(第一个条目使用 uid 而不是 cn;我在不同的指南中看到过这两种方式)?

任何帮助都将不胜感激!

相关内容