现在的位置: 首页 > 综合 > 正文

CentOS部署OpenLDAP认证之 Server

2012年04月04日 综合 ⁄ 共 3753字 ⁄ 字号 暂无评论

一些基本概念
Server的安装与配置
Web管理工具phpldapadmin
Clients的安装与配置
生产环境使用OpenLDAP做认证(主备、Server安全、TLS)

一、基本概念
DN、OU、DC、O,这些概念网上都有资料。
一般用来做用户认证,我是拿来做系统用户认证,很多人做FTP或Samba用户认证。

二、Server端的安装与配置
openldap这玩意对细节的要求非常苛刻,稍不注意就会报错。
参考:http://www.server-world.info/en/note?os=CentOS_6&p=ldap&f=1
http://www.openldap.org/doc/admin24/

SERVER端,操作系统:CentOS 6.2:
I、OpenLDAP的安装与基本配置
1)Yum安装
yum -y install openldap openldap-servers openldap-clients openldap-devel //一定要全安装,否则后面可能会报错
2)vi /etc/sysconfig/ldap,确保SLAPD_LDAPI=yes
3)vi /etc/openldap/slapd.conf,添加如下两行:
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
4)备份/etc/openldap/slapd.d目录,然后重建该目录,并生成文件:
cp -a /etc/openldap/slapd.d /etc/openldap/slapd.d.BAK2012-03-26
rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
5)编辑重新生成后的配置文件:
a) vi /etc/openldap/slapd.d/cn=config/olcDatabase\=\{0\}config.ldif,修改第4行配置如下:
olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
注意严格按照原文件单词之间的空格数进行修改,by前面有两个空格
b) vi /etc/openldap/slapd.d/cn=config/olcDatabase\=\{1\}monitor.ldif,输入以下行:
dn: olcDatabase={1}monitor
objectClass: olcDatabaseConfig
olcDatabase: {1}monitor
olcAccess: {1}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcMonitoring: FALSE
structuralObjectClass: olcDatabaseConfig
creatorsName: cn=config
modifiersName: cn=config
注:以上所有输入行,确保行首无空格。
6)修改slapd.d目录的属主和权限,并启动ldap:
chown -R ldap. /etc/openldap/slapd.d
chmod -R 700 /etc/openldap/slapd.d
/etc/rc.d/init.d/slapd start
chkconfig slapd on

II、初始化用户认证信息
1)依次输入以下命令,并确保无报错:
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/core.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
最有可能出现的错误:no permission to create parent directory. 我遇到了几次,没办法解决,最后是严格按照上面的步骤,重新安装了一遍才OK。
2)创建管理员密码,尽量使用高强度密码:
slappasswd
注:a) 上述命令会生成一个经过SSHA算法加密的密码,保存该密文,后面要用到
b) slappasswd支持的加密算法,可使用man slappasswd查看

3)创建backend.ldif文件,输入以下行:
# replace the section "dc=***,dc=***" to your own suffix
# replace the section "olcRootPW: ***" to your own password generated by slappasswd above
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib64/openldap
olcModuleload: back_hdb
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcSuffix: dc=abc,dc=com
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=root,dc=abc,dc=com
olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcMonitoring: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=root,dc=abc,dc=com" write by anonymous auth by self write by * no
ne
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=root,dc=abc,dc=com" write by * read
然后执行如下命令:
ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif
4)编辑frontend.ldif,并输入以下行:
# replace the section "dc=***,dc=***" to your own suffix
# replace the section "userPassword: ***" to your own password generated by slappasswd above
dn: dc=abc,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: abc com
dc: abc
dn: cn=root,dc=abc,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: root
userPassword: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
dn: ou=people,dc=abc,dc=com
objectClass: organizationalUnit
ou: people
dn: ou=groups,dc=abc,dc=com
objectClass: organizationalUnit
ou: groups
然后执行如下命令:
ldapadd -x -D cn=root,dc=abc,dc=com -W -f frontend.ldif //注意替换自己的cn和dc
最有可能出现的错误:ldap_bind: Invalid credentials (49)。检查两方面:上述命令中的cn和dc是否输入正确,以及密码是否输入正确。

5) 如果忘记管理员密码,或者想修改该密码:
ldappasswd -x -v -S -W -D cn=root,dc=abc,dc=com
然后重启openLDAP:/etc/init.d/slapd restart

给我留言

留言无头像?