配置LDAP客户端以通过LDAP服务器进行身份验证
安装Openldap客户端软件包
首先让我们安装所有必需的openldap
客户端和相关软件包
由于我们计划使用authconfig来为RHEL/CentOS 7 Linux节点配置ldap客户端,因此我们仅安装SSSD和authconfig软件包。
必须具有" oddjob-mkhomedir"才能自动创建活动目录用户的主目录。
说明:
在RHEL系统上,我们必须具有RHN的有效订阅,或者我们可以配置本地脱机存储库,通过该本地脱机存储库,yum
软件包管理器可以安装提供的rpm及其依赖项。
[root@ldap-client ~]# yum install authconfig authconfig-gtk openldap-clients sssd oddjob-mkhomedir.x86_64 -y
提示:
如果要使用nslcd配置LDAP客户端,则必须安装nss-pam-ldapd
,pam_ldap
。
我们将仅使用SSSD,因此不会在本教程中介绍此部分
配置LDAP客户端以通过LDAP服务器进行身份验证
在开始之前,请确保将/etc/openldap/cacerts/ca.cert.pem从ldap-server复制到ldap-client在同一位置下的/etc/openldap/cacerts/ca.cert.pem。
此项将由authconfig
工具引用
方法1:使用authconfig-tui
配置客户端系统以使用LDAP目录进行用户身份验证就像在Fedora或者RHEL系统上一样容易。
Fedora具有命令行实用程序以及GUI工具(例如," system-config-authentication"," authconfig-gtk"),使操作变得简单。
软件包authconfig提供了一种命令行工具。
要从命令行启动该工具,请键入以下内容:
[root@ldap-client ~]# authconfig-tui
将会出现类似于接下来显示的屏幕:
在Authentication Configuration屏幕上,导航至(使用键盘上的TAB),然后选择(使用键盘上的SPACEBAR)以下内容:
Use LDAP
→在User Information
部分下Use LDAP Authentication
→在Authentication下
部分导航到"下一步"按钮,然后按ENTER键将其选中。
使用以下信息来完成随后的" LDAP设置"屏幕中的字段:
Server
:ldap://10.0.2.20/
Base DN:dc = example,dc = com
说明:
这里10.0.2.20是我的ldap服务器的IP地址,用服务器详细信息替换它
- 当我们点击"确定"时,这将自动更改一系列文件,否则必须手动更改。
例如,它将在" /etc/openldap/ldap.conf"文件中添加以下行:
URI ldap://10.0.2.20/ BASE dc=example,dc=com TLS_CACERTDIR /etc/openldap/cacerts
说明:
其中注释掉" TLS_CACERTDIR"并添加" TLS_REQCERT never"
方法2:使用authconfig CLI
我们还可以使用authconfig在客户端上配置ldap,如下所示
[root@ldap-client ~]# authconfig --enableldap --enableldapauth --ldapserver=10.0.2.20 --ldapbasedn="dc=example,dc=com" --enableldaptls --update
说明:
如果我们已经使用authconfig-tui配置了客户端,则可以使用authconfig跳过配置。
配置OpenLDAP
接下来,配置" openldap"客户端以与ldap服务器和通信方法进行通信。
在/etc/openldap/ldap.conf
中添加以下内容
BASE dc=example,dc=com URI ldap://10.0.2.20 TLS_CACERTDIR /etc/openldap/cacerts
说明:
如果得到无法启动TLS加密。
TLS:重新启动sssd后,主机名与/var/log/messages中的对等证书错误中的CN不匹配,这意味着客户端的主机名未配置为使用CA证书。
在这种情况下,我们必须在ldap服务器上为此使用SAN证书的客户端生成正确的证书。
另外,我们可以在/etc/openldap/ldap.conf中使用TLS_REQCERT never禁用TLS检查,在/etc/sssd/sssdd.conf中使用ldap_id_use_start_tls = False禁用TLS检查。
但这将禁用TLS通信,从而使系统不安全。
配置oddjob-mkhomedir以自动创建主目录
我们可以使用oddjob-mkhomedir为登录客户端节点的任何ldap用户自动创建主目录。
这需要由我们先前已安装的ddjob-mkhomedir提供的pam_mkhomedir.so。
修改PAM配置以使用pam_oddjob_mkhomedir
。
例如,将这一行添加到/etc/pam.d/system-auth的底部。
session required pam_oddjob_mkhomedir.so
接下来启用并启动oddjobd.service
[root@ldap-client ~]# systemctl enable oddjobd.service --now
说明:
在RHEL/CentOS 6/7中,sshd pam配置文件(/etc/pam.d/sshd
)使用/etc/pam.d/password-auth
文件而不是/etc/pam.d/system- auth
。
因此,为了通过ssh登录时创建主目录,还需要在/etc/pam.d/password-auth
文件中添加以上行。
除了手动编辑,还可以使用authconfig命令:
[root@ldap-client ~]# authconfig --enablemkhomedir --updateall
还重新启动sssd.service
[root@ldap-client ~]# systemctl restart sssd.service
创建LDAP用户(可选)
如果我们已经是ldap用户,则可以忽略此步骤。
为了认证为LDAP用户,在创建用户时,我们必须包括一系列字段,例如shell,uid,gid等。
例如,让我们添加用户testuser1
。
我们首先创建testuser1.ldif
文件,其内容如下:
[root@ldap-client ~]# cat testuser1.ldif dn: uid=testuser1,ou=users,dc=example,dc=com uid: testuser1 cn: testuser1 objectClass: shadowAccount objectClass: top objectClass: person objectClass: inetOrgPerson objectClass: posixAccount userPassword: {SSHA}5rMM/3f8Ki13IyarGTtwzieoTu7KMgwc shadowLastChange: 17016 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1001 gidNumber: 1001 homeDirectory: /home/testuser1 sn: testuser1 mail: [email protected]
说明:
其中我已经在" ldap-server"节点上使用" slappasswd"为" testuser1"创建了一个加密密码。
我的testuser1
密码是test
。
创建LDAP组(可选)
如果我们已经是ldap组,则可以忽略此步骤。
另外,我们将需要一个用于此" testuser1"的组,因此我将其添加到我们现有的OU用户中
[root@ldap-client ~]# cat groups.ldif dn: cn=testuser1,ou=users,dc=example,dc=com objectClass: posixGroup objectClass: top cn: testuser1 userPassword: {crypt}x gidNumber: 1001
将用户和组添加到LDAP数据库(可选)
使用以下命令将用户和组添加到ldap目录
[root@ldap-client ~]# ldapadd -f testuser1.ldif -x -D cn=admin,dc=example,dc=com -w redhat adding new entry "uid=testuser1,ou=users,dc=example,dc=com" [root@ldap-client ~]# ldapadd -x -D cn=admin,dc=example,dc=com -f groups.ldif -w redhat adding new entry "cn=testuser1,ou=users,dc=example,dc=com"
提示:
如果执行上述命令得到ldap_add:语法无效(21);添加信息:objectClass:值#0每个语法无效
,ldap_add: Invalid syntax (21); additional info: objectClass: value #0 invalid per syntax
,则必须使用以下命令加载" nis.ldif"
# ldapadd -Y EXTERNAL -H ldapi://-f /etc/openldap/schema/nis.ldif SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=nis,cn=schema,cn=config"
然后为用户/组重试" ldapadd"命令。
验证新用户和组(可选)
再次运行" ldapsearch"命令,并验证基本DN下是否列出了用户和组以完成配置。
[root@ldap-client ~]# ldapsearch -x -D cn=admin,dc=example,dc=com -b dc=example,dc=com -w redhat # extended LDIF ## LDAPv3 # base <dc=example,dc=com> with scope subtree # filter: (objectclass=*) # requesting: ALL ## example.com dn: dc=example,dc=com objectClass: dcObject objectClass: organization dc: example o: example # users, example.com dn: ou=users,dc=example,dc=com objectClass: organizationalUnit ou: users # scientists, users, example.com dn: cn=scientists,ou=users,dc=example,dc=com cn: scientists objectClass: groupOfNames member: cn=Archimedes of Syracuse,ou=users,dc=example,dc=com # testuser1, users, example.com dn: uid=testuser1,ou=users,dc=example,dc=com uid: testuser1 cn: testuser1 objectClass: shadowAccount objectClass: top objectClass: person objectClass: inetOrgPerson objectClass: posixAccount userPassword:: e1NTSEF9NXJNTS8zZjhLaTEzSXlhckdUdHd6aWVvVHU3S01nd2M= shadowLastChange: 17016 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 1001 gidNumber: 1001 homeDirectory: /home/testuser1 sn: testuser1 mail: [email protected] # testuser1, users, example.com dn: cn=testuser1,ou=users,dc=example,dc=com objectClass: posixGroup objectClass: top cn: testuser1 userPassword:: e2NyeXB0fXg= gidNumber: 1001 # search result search: 2 result: 0 Success # numResponses: 6 # numEntries: 5
通过LDAP用户连接
由于我们已经安装了oddjob
,因此我们不需要手动创建ldap用户的主目录,而是在用户首次登录时创建的。
现在,我们将能够通过LDAP用户进行身份验证
login as: testuser1 [email protected]'s password: [testuser1@ldap-client ~]$