RHCSA系列:设置LDAP服务器和客户端身份验证 - 第14部分
我们的测试环境
我们的测试环境包括两个 RHEL 7盒:Server: 192.168.0.18. FQDN: rhel7.mydomain.com Client: 192.168.0.20. FQDN: ldapclient.mydomain.com如果你愿意,你可以使用安装在机器中的 第12部分:自动化RHEL 7的安装使用Kickstart作为客户端。
什么是LDAP?
LDAP代表 轻型目录访问协议 ,由一组协议,允许客户端来访问,通过网络集中存储的信息(如目录登录炮弹,绝对路径的主目录,和其他典型系统的用户信息,例如),其应当可从不同地方访问或可供大量最终用户使用(另一示例将是公司中所有雇员的家庭地址和电话号码的目录)。 集中保存这样的(和更多的)信息意味着每个被授予使用权限的人都可以更容易地维护和访问。 下面的图表提供 的LDAP的简化图,并且更详细地描述如下:LDAP图
- 在LDAP目录中的条目代表一个单位或信息,并通过所谓的专有名称唯一标识。
- 一个属性是一个条目(例如,地址,可用的联系电话号码,以及电子邮件地址)相关联的一条信息。
- 每个属性分配由一个空格分隔列表中的一个或多个值 。每个条目唯一的值称为相对可分辨名称。
安装和配置LDAP服务器和客户端
在 RHEL 7,LDAP是由 OpenLDAP的实施。要安装服务器和客户端,请分别使用以下命令:# yum update && yum install openldap openldap-clients openldap-servers # yum update && yum install openldap openldap-clients nss-pam-ldapd一旦安装完成,我们看看一些东西。除非明确指出,否则应在服务器上单独执行以下步骤: 1.确保 SELinux的不的方式通过使下述 布尔持续,服务器和客户端上得到:
# setsebool -P allow_ypbind=0 authlogin_nsswitch_use_ldap=0其中需要基于LDAP的认证 allow_ypbind,并且可以通过一些应用需要 authlogin_nsswitch_use_ldap。 2.启用并启动服务:
# systemctl enable slapd.service # systemctl start slapd.service请记住,你也可以禁用,重启或停止服务 systemctl还有:
# systemctl disable slapd.service # systemctl restart slapd.service # systemctl stop slapd.service3.由于 slapd的服务为LDAP用户(您可以用 ps -e -o PID,UNAME,通讯验证 | grep的slapd的 )上运行,这样的用户应该拥有,以便在 / var / lib中/ LDAP目录服务器能够修改由管理工具创建的条目,这些条目只能以root用户身份运行(在一分钟内更多)。 改变这个目录的所有权递归之前,请将样本数据库配置文件 的slapd到其中:
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG # chown -R ldap:ldap /var/lib/ldap4.设置一个OpenLDAP的管理用户和分配密码:
# slappasswd如下图所示:
设置LDAP管理员密码
dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}PASSWORD哪里:
- 密码是以前获得的散列字符串。
- CN =配置指示全局配置选项。
- olcDatabase代表一个特定的数据库实例名,通常可以发现里面/etc/openldap/slapd.d/cn=config。
ldaprootpasswd.ldif
文件添加到LDAP目录中的条目。在该条目中,每行代表一个属性:值对(其中dn,changetype,add和olcRootPW是属性,每个冒号右侧的字符串是其对应的值)。 您可能要记住这一点,我们进一步进行,请注意,我们使用相同的通用名称
(cn=)
在这篇文章中,其中每一个步骤依赖于前一个的其余部分。
5.现在,通过指定
的URI指的是LDAP服务器,其中只有协议/主机/端口字段允许添加相应的LDAP项。
# ldapadd -H ldapi:/// -f ldaprootpasswd.ldif输出应类似于:
LDAP配置
/etc/openldap/schema
目录:
# for def in cosine.ldif nis.ldif inetorgperson.ldif; do ldapadd -H ldapi:/// -f /etc/openldap/schema/$def; done
LDAP定义
ldapdomain.ldif
,包含以下内容,免去您的域(域组件DC =)和密码酌情:
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=Manager,dc=mydomain,dc=com" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=mydomain,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=Manager,dc=mydomain,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}PASSWORD dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcAccess olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=mydomain,dc=com" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by dn="cn=Manager,dc=mydomain,dc=com" write by * read然后按如下方式加载:
# ldapmodify -H ldapi:/// -f ldapdomain.ldif
LDAP域配置
(:)
在以下文件中,我们将其命名为
baseldapdomain.ldif
:
dn: dc=mydomain,dc=com objectClass: top objectClass: dcObject objectclass: organization o: mydomain com dc: mydomain dn: cn=Manager,dc=mydomain,dc=com objectClass: organizationalRole cn: Manager description: Directory Manager dn: ou=People,dc=mydomain,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=mydomain,dc=com objectClass: organizationalUnit ou: Group将条目添加到LDAP目录中:
# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f baseldapdomain.ldif
添加LDAP域属性和值
ldapgroup.ldif
。
# adduser ldapuser # vi ldapgroup.ldif添加以下内容。
dn: cn=Manager,ou=Group,dc=mydomain,dc=com objectClass: top objectClass: posixGroup gidNumber: 1004那里 的gidNumber是GID在 / etc /组 ldapuser),并加载它:
# ldapadd -x -W -D "cn=Manager,dc=mydomain,dc=com" -f ldapgroup.ldif9.添加LDIF文件与用户ldapuser(定义
ldapuser.ldif
):
dn: uid=ldapuser,ou=People,dc=mydomain,dc=com objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: ldapuser uid: ldapuser uidNumber: 1004 gidNumber: 1004 homeDirectory: /home/ldapuser userPassword: {SSHA}fiN0YqzbDuDI0Fpqq9UudWmjZQY28S3M loginShell: /bin/bash gecos: ldapuser shadowLastChange: 0 shadowMax: 0 shadowWarning: 0并加载:
# ldapadd -x -D cn=Manager,dc=mydomain,dc=com -W -f ldapuser.ldif
LDAP用户配置
# ldapdelete -x -W -D cn=Manager,dc=mydomain,dc=com "uid=ldapuser,ou=People,dc=mydomain,dc=com"10.允许通过防火墙的通信:
# firewall-cmd --add-service=ldap11.最后,但并非最不重要的,使客户端使用LDAP进行身份验证。 为了帮助我们在这最后一步,我们将使用 authconfig实用程序(配置体系认证资源的接口)。 使用以下命令,如果在针对LDAP服务器的认证成功后不存在请求用户的主目录,则会创建该主目录:
# authconfig --enableldap --enableldapauth --ldapserver=rhel7.mydomain.com --ldapbasedn="dc=mydomain,dc=com" --enablemkhomedir --update
LDAP客户端配置