使用 OpenLDAP 集中管理用户帐号
Red Hat 上的 OpenLDAP 提供了安全、可靠的帐号管理
使用轻量级目录访问协议(LDAP)构建集中的身份验证系统可以减少管理成本,增强安全性,避免数据复制的问题,并提高数据的一致性。随着 Linux? 的不断成熟,已经出现了很多工具用来简化用户帐号信息到 LDAP 目录的迁移。还开发了一些工具用来在客户机和目录服务器之间启用加密通信配置,并通过复制提供容错性。本文将向您展示如何配置服务器和客户机在 Red Hat Linux 上使用 OpenLDAP。
下面做下简单的OpenLDAP,在LADP服务器上可以任意登陆已有LADP认证的客户端
首先安装OpenLDAP相关软件
yum -y install openldap openldap-clients openldap-servers
编辑配置文件
cd /etc/openldap
vim slapd.conf 修改以下几行
suffix "dc=wlq,dc=com"
rootdn "cn=Manager,dc=wlq,dc=com"
rootpw 123
loglevel 296
roopw在上面可以用明文,也可用加密的,可用slappasswd -h {crypt}算出密文
loglevel 行设置的是日志选项。可以将其设置为这样的级别:调试语句和操作统计信息都会被记录到 /var/log/slapd.log 中。日志级别是累加的:296 = 256 日志连接/操作/结果 + 32 搜索过滤器处理 + 8 连接管理
access 行定义了谁可以访问目录中的内容。我们希望用户可以修改自己的密码,并更新自己的 shadow 信息来反映密码的变化。希望身份验证程序能够检索用户的密码。还希望用户能够读取所有其他条目。注意密码条目是不可读的,shadow 属性的唯一用处就是管理密码的过期问题。
access to attrs=shadowLastChange,userPassword
by self write
by * auth
access to *
by * read
还要在/etc/syslog.conf 中,加入下面这行:
local4.debug /var/log/slapd.log
保存后,需要重启syslog service syslog restart
接下来,在 database 部分,要做下面动作
rsync -av /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
最后还需要修改/etc/openldap/ldap.conf文件
在里面加入
BASE dc=wlq,dc=com
启动服务
# service ldap start
Starting slapd: [ OK ]
OpenLDAP 守护进程 slapd 应该已经运行了:
检查服务正在运行
# ps -ef | grep slap
ldap 13521 1 0 Oct24 ? 00:00:00 /usr/sbin/slapd -u ldap -h ldap:/// ldaps:///
ldapsearch -x 命令应该可以成功完成,但不会返回任何数据。
LDAP服务启动后,就要开始迁移数据了
有一组 Perl 脚本被安装到 /usr/share/openldap/migration/ 中执行迁移。这些 Perl 脚本的配置信息包含在 migrate_common.ph 文件的开头。对于我们的目的来说,只需要修改命名前缀的变量来使用条目的识别名就足够了,如下所示:
$DEFAULT_MAIL_DOMAIN = "wlq.com";
$DEFAULT_BASE = "dc=wlq,dc=com";
$DEFAULT_MAIL_HOST = "mail.wlq.com";
在进行这些修改之后,运行脚本 migrate_base.pl,它会创建根项,并为 Hosts、Networks、Group 和 People 等创建低一级的组织单元:
cd /usr/share/openldap/migration
./migrate_base.pl > base.ldif
编辑 base.ldif,只保留下面的条目:
# cat base.ldif
dn: dc=wlq,dc=com
dc: wlq
objectClass: top
objectClass: domain
dn: ou=People,dc=wlq,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=wlq,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
插入条目:
ldapadd -v -c -x -D "cn=Manager,dc=wlq,dc=com" -w 123 -f base.ldif
用slapcat或ldapsearch -x 可进行查看
迁移group
# cat /etc/group > group.in
# ./migrate_group.pl group.in > group.ldif
在group.ldif中,可留下几个自己想要的组就行,记好组id
# cat group.ldif
dn: cn=niuzi,ou=Group,dc=wlq,dc=com
objectClass: posixGroup
objectClass: top
cn: niuzi
userPassword: {crypt}x
gidNumber: 57
dn: cn=zhutou,ou=Group,dc=wlq,dc=com
objectClass: posixGroup
objectClass: top
cn: zhutou
userPassword: {crypt}x
gidNumber: 58
# ldapadd -x -c -D "cn=Manager,dc=wlq,dc=com" -w 123 -f group.ldif
最后,从 /etc/passwd 中迁移信息:
# grep ldapuser /etc/passwd > passwd.in
# ./migrate_passwd.pl passwd.in > passwd.ldif
在passwd.ldif中,可留下几个自己想要的用户,并配置好相应的组id
# cat passwd.ldif
dn: uid=liuzi,ou=People,dc=ibm,dc=com
uid: liuzi
cn: liuzi
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt$1$TeOlOcMc$cpQaa0WpLSFRC1HIHW5bt1
shadowLastChange: 13048
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 57
homeDirectory: /home/liuzi
gecos: liuzi
# ldapadd -x -c -D "cn=Manager,dc=wlq,dc=com" -w 123 -f passwd.ldif
自此,LDAP服务器的配置已完成了,如要删除或修改数据,可用下面命令
ldapdelete -v -c -x -D "cn=Manager,dc=wlq,dc=com" -f delete.ldif -w 123
ldapmodify -v -c -x -D "cn=Manager,dc=wlq,dc=com" -w 123 -f modify.ldif
当然,要设置好delete.ldif和modify.ldif
配置 LDAP 客户机
在图行界面执行 authconfig-tui 命令的出来的第一个页面
选择 “使用LDAP MD5口令 屏蔽口令 LDAP验证 本地授权” 五项
下一步
服务器ldap://....设置成LDAP服务器的IP地址
base dc=wlq,dc=com
客户机最重要的一条 要在/etc/pam.d/system-auth文件下,添加一行,如下:
session required pam_mkhomedir.so skel=/etc/skel umask=0022
如不加这行的话,在服务器端登陆的时候,会提示,没创建家目录,登陆到客户机的时候,直接就到了客户机的根目录下了。。
加上的话,在登陆的时候,可以看到creating ....家目录在客户机上被创建
这样,一个简单的LDAP服务就配置好了,LDAP还有好多的需研究,以后学习吧。。。