简介
Linux 发行版中提供的 OpenLDAP 软件按照一个客户机/服务器模型实现了轻量级目录访问协议(LDAP)。LDAP 的设计目的是提供一种有效的方法来查找和管理信息。OpenLDAP 软件和包提供了创建目录信息树(一个主要进行读操作的数据库)的工具。本文向您展示如何存储用户的帐号信息,并修改身份验证服务来使用 LDAP 获取所需要的信息。内部细节并不重要,因为这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前。
用轻量级目录访问协议(LDAP)构建集中的身份验证系统可以减少管理成本,增强安全性,避免数据复制的问题,并提高数据的一致性。随着 Linux? 的不断成熟,已经出现了很多工具用来简化用户帐号信息到 LDAP 目录的迁移。还开发了一些工具用来在客户机和目录服务器之间启用加密通信配置,并通过复制提供容错性。本文将向您展示如何配置服务器和客户机在 Red Hat Linux 上使用 OpenLDAP。
实验环境:
REDHAT6.3
LDAP server:192.168.106.20
LDAP clent: 192.168.106.22
1.LDAP server端配置:
第一步:安装LDAP服务
# yum install openldap-* -y
提示安装以下4个包
openldap-devel-2.4.23-26.el6.x86_64
openldap-clients-2.4.23-26.el6.x86_64
openldap-2.4.23-26.el6.x86_64
openldap-servers-2.4.23-26.el6.x86_64
第一步:拷贝LDAP配置文件到LDAP目录(redhat6.3):
# cd /etc/openldap/
# cp /usr/share/openldap-servers/slapd.conf.obsolete slapd.conf
第一步:创建LDAP管理员密码:
# slappasswd
这里我输入的密码是redhat,输入完密码后,返回一串密文,先保存到剪贴板
{SSHA}pfAJm+JJa4ec2y8GjTc8uMEJpoR5YKLy
编译配置文件
# vi /etc/openldap/slapd.conf
修改为:
115、suffix "dc=example,dc=com"
117 rootdn "cn=admin,dc=admin,dc=com"
123 rootpw {SSHA}G0JljJfRfD6/mNi6EZcngiIozEE1lnBZ
高亮部分为刚才生成的密码(加密后的)。
配置文件最后几行的权限部分我们也要做相应的更改为:
#######################################################################
# database definitions
#######################################################################
database bdb
suffix "dc=example,dc=com"
checkpoint 1024 15
rootdn "cn=admin,dc=admin,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoided. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
# rootpw secret
# rootpw {crypt}ijFYNcSNctBYg
rootpw {SSHA}G0JljJfRfD6/mNi6EZcngiIozEE1lnBZ
保存退出。
拷贝DB_CONFIG文件到指定目录
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
删除默认/etc/openldap/slapd.d下面的所有内容,否则后面在使用ldapadd的时候会报错:
# rm -rf /etc/openldap/slapd.d/*
启动LDAP的slapd服务,并设置自启动:
# service slapd restart
# chkconfig slapd on
赋予配置目录相应权限:
# chown -R ldap:ldap /var/lib/ldap
# chown -R ldap:ldap /etc/openldap/
测试并生成配置文件:
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
返回config file testing succeeded,则配置成功。
赋予生成的配置文件予权限并重启:
# chown -R ldap:ldap /etc/openldap/slapd.d
# service slapd restart
创建一个账号,以备客户端测试登陆
# useradd ldapuser1
# passwd ldapuser1
至此,这些用户仅仅是系统上存在的用户(存储在/etc/passwd和/etc/shadow上),并没有在LDAP数据库里,所以要把这些用户导入到LDAP里面去。但LDAP只能识别特定格式的文件 即后缀为ldif的文件(也是文本文件),所以不能直接使用/etc/passwd和/etc/shadow。 需要migrationtools这个工具把这两个文件转变成LDAP能识别的文件。
安装配置migrationtools
# yum install migrationtools -y
进入migrationtool配置目录
# cd /usr/share/migrationtools/
首先编辑migrate_common.ph
# vi migrate_common.ph
找到如下内容(大概在70行):
修改为:
70 # Default DNS domain
71 $DEFAULT_MAIL_DOMAIN = "example.com";
72
73 # Default base
74 $DEFAULT_BASE = "dc=example,dc=com";
下面利用pl脚本将/etc/passwd 和/etc/shadow生成LDAP能读懂的文件格式,保存在/tmp/下
# ./migrate_base.pl > /tmp/base.ldif
# ./migrate_passwd.pl /etc/passwd > /tmp/passwd.ldif
# ./migrate_group.pl /etc/group > /tmp/group.ldif
下面就要把这三个文件导入到LDAP,这样LDAP的数据库里就有了我们想要的用户
# ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f /tmp/base.ldif
# ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f /tmp/passwd.ldif
# ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f /tmp/group.ldif
过程若无报错,则LDAP服务端配置完毕
重启slapd完成配置
# service slapd restart
现安装NFS,并把ldapuser1的家目录做NFS共享.
默认REDHAT已安装
# yum install nfs* -y
配置NFS共享:
# vi /etc/exports
--------------
/home/ldapuser1 *(rw,no_root_squash)
--------------
重启nfs服务:
# service rpcbind restart
# service nfs restart
2.LDAP 客户端配置
打开客户端图形化界面命令行
输入system-config-authentication,按照如图配置:
配置结束点Apply保存退出,系统会自动重启sssd服务
配置autofs,实现ldapuser1登录成功后,能够访问本地家目录/home/ldapuser1,该目录挂载于网内LDAP服务器172.24.30.20:/home/ldapuser1下
# vi /etc/auto.master
添加一行:
--------------
/home /etc/auto.misc
--------------
# vi /etc/auto.master
添加一行:
--------------
* -fstype=nfs 172.24.30.20:/home/&
--------------
重启autofs服务:
# service autofs reload
登陆ldapuser1账户:
若未返回系统未找到ldapuser1家目录报错信息,则LDAP客户端配置成功。
注:这里若仍无法登陆,请进入setup模式配置LDAP登陆
# id ldapuser1
uid=500(ldapuser1) gid=500(ldapuser1) groups=500(ldapuser1)
# su - ldapuser1
# pwd
/home/ldapuser1
Linux 发行版中提供的 OpenLDAP 软件按照一个客户机/服务器模型实现了轻量级目录访问协议(LDAP)。LDAP 的设计目的是提供一种有效的方法来查找和管理信息。OpenLDAP 软件和包提供了创建目录信息树(一个主要进行读操作的数据库)的工具。本文向您展示如何存储用户的帐号信息,并修改身份验证服务来使用 LDAP 获取所需要的信息。内部细节并不重要,因为这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前。
用轻量级目录访问协议(LDAP)构建集中的身份验证系统可以减少管理成本,增强安全性,避免数据复制的问题,并提高数据的一致性。随着 Linux? 的不断成熟,已经出现了很多工具用来简化用户帐号信息到 LDAP 目录的迁移。还开发了一些工具用来在客户机和目录服务器之间启用加密通信配置,并通过复制提供容错性。本文将向您展示如何配置服务器和客户机在 Red Hat Linux 上使用 OpenLDAP。
实验环境:
REDHAT6.3
LDAP server:192.168.106.20
LDAP clent: 192.168.106.22
1.LDAP server端配置:
第一步:安装LDAP服务
# yum install openldap-* -y
提示安装以下4个包
openldap-devel-2.4.23-26.el6.x86_64
openldap-clients-2.4.23-26.el6.x86_64
openldap-2.4.23-26.el6.x86_64
openldap-servers-2.4.23-26.el6.x86_64
第一步:拷贝LDAP配置文件到LDAP目录(redhat6.3):
# cd /etc/openldap/
# cp /usr/share/openldap-servers/slapd.conf.obsolete slapd.conf
第一步:创建LDAP管理员密码:
# slappasswd
这里我输入的密码是redhat,输入完密码后,返回一串密文,先保存到剪贴板
{SSHA}pfAJm+JJa4ec2y8GjTc8uMEJpoR5YKLy
编译配置文件
# vi /etc/openldap/slapd.conf
修改为:
115、suffix "dc=example,dc=com"
117 rootdn "cn=admin,dc=admin,dc=com"
123 rootpw {SSHA}G0JljJfRfD6/mNi6EZcngiIozEE1lnBZ
高亮部分为刚才生成的密码(加密后的)。
配置文件最后几行的权限部分我们也要做相应的更改为:
#######################################################################
# database definitions
#######################################################################
database bdb
suffix "dc=example,dc=com"
checkpoint 1024 15
rootdn "cn=admin,dc=admin,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoided. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
# rootpw secret
# rootpw {crypt}ijFYNcSNctBYg
rootpw {SSHA}G0JljJfRfD6/mNi6EZcngiIozEE1lnBZ
保存退出。
拷贝DB_CONFIG文件到指定目录
# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
删除默认/etc/openldap/slapd.d下面的所有内容,否则后面在使用ldapadd的时候会报错:
# rm -rf /etc/openldap/slapd.d/*
启动LDAP的slapd服务,并设置自启动:
# service slapd restart
# chkconfig slapd on
赋予配置目录相应权限:
# chown -R ldap:ldap /var/lib/ldap
# chown -R ldap:ldap /etc/openldap/
测试并生成配置文件:
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
返回config file testing succeeded,则配置成功。
赋予生成的配置文件予权限并重启:
# chown -R ldap:ldap /etc/openldap/slapd.d
# service slapd restart
创建一个账号,以备客户端测试登陆
# useradd ldapuser1
# passwd ldapuser1
至此,这些用户仅仅是系统上存在的用户(存储在/etc/passwd和/etc/shadow上),并没有在LDAP数据库里,所以要把这些用户导入到LDAP里面去。但LDAP只能识别特定格式的文件 即后缀为ldif的文件(也是文本文件),所以不能直接使用/etc/passwd和/etc/shadow。 需要migrationtools这个工具把这两个文件转变成LDAP能识别的文件。
安装配置migrationtools
# yum install migrationtools -y
进入migrationtool配置目录
# cd /usr/share/migrationtools/
首先编辑migrate_common.ph
# vi migrate_common.ph
找到如下内容(大概在70行):
修改为:
70 # Default DNS domain
71 $DEFAULT_MAIL_DOMAIN = "example.com";
72
73 # Default base
74 $DEFAULT_BASE = "dc=example,dc=com";
下面利用pl脚本将/etc/passwd 和/etc/shadow生成LDAP能读懂的文件格式,保存在/tmp/下
# ./migrate_base.pl > /tmp/base.ldif
# ./migrate_passwd.pl /etc/passwd > /tmp/passwd.ldif
# ./migrate_group.pl /etc/group > /tmp/group.ldif
下面就要把这三个文件导入到LDAP,这样LDAP的数据库里就有了我们想要的用户
# ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f /tmp/base.ldif
# ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f /tmp/passwd.ldif
# ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f /tmp/group.ldif
过程若无报错,则LDAP服务端配置完毕
重启slapd完成配置
# service slapd restart
现安装NFS,并把ldapuser1的家目录做NFS共享.
默认REDHAT已安装
# yum install nfs* -y
配置NFS共享:
# vi /etc/exports
--------------
/home/ldapuser1 *(rw,no_root_squash)
--------------
重启nfs服务:
# service rpcbind restart
# service nfs restart
2.LDAP 客户端配置
打开客户端图形化界面命令行
输入system-config-authentication,按照如图配置:
配置结束点Apply保存退出,系统会自动重启sssd服务
配置autofs,实现ldapuser1登录成功后,能够访问本地家目录/home/ldapuser1,该目录挂载于网内LDAP服务器172.24.30.20:/home/ldapuser1下
# vi /etc/auto.master
添加一行:
--------------
/home /etc/auto.misc
--------------
# vi /etc/auto.master
添加一行:
--------------
* -fstype=nfs 172.24.30.20:/home/&
--------------
重启autofs服务:
# service autofs reload
登陆ldapuser1账户:
若未返回系统未找到ldapuser1家目录报错信息,则LDAP客户端配置成功。
注:这里若仍无法登陆,请进入setup模式配置LDAP登陆
# id ldapuser1
uid=500(ldapuser1) gid=500(ldapuser1) groups=500(ldapuser1)
# su - ldapuser1
# pwd
/home/ldapuser1