转载:http://blog.csdn.net/hitabc141592/article/details/22931179
最近由于工作的原因,需要做一些DevOps和Saas相关的工作,需要使用到LDAP来搭建一个统一的账号管理认证平台,把需要用到的N台Linux Server配置好LDAP服务。
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
Note:
本次配置的服务器环境是<redhat enterprise linux 6.5>, Centos/Suse类似, Debian/Ubuntu安装包可能略有不同,但是大致过程应该相似。
PS:LDAP 是C/S结构的,所以接下来我们要设计好哪台机器上搭建LDAP Server,剩下的机器上安装LDAP Client.
LDAP Server Machine:192.168.1.10 (此IP为机器的实际IP,自己配置时根据实际情况而定)
LDAP Client Machine:192.168.1.11 (此IP为机器的实际IP,自己配置时根据实际情况而定)
LDAP Client Machine N...... (其余N多的client机器不一一列举,完成一个client配置后,其他机器Clone整个过程即可 :-))
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
写在开始之前:在自己第一次做LDAP配置的时候,也曾查阅了很多国内的相关博客和帖子,发现好多讲的都不够完善,让人在安装和配置调试遇到问题是,总要浪费很大一部分时间来游走于各大搜索引擎去寻根问药,多么痛苦的过程,而且好多还被“墙”了,你们懂得。。。Anyway,通过不断的尝试和摸索,还是搞定了LDAP的配置,下面来和大家分享一下整个配置过程,包括:client/server配置,su配置,ssh配置...
# yum install openldap-* -y
会提示安装以下几个必须的包,另外鉴于依赖,可能还会安装一些其他的包,所以我们选择-y:
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
....
OpenLDAP 使用Berkely-DB来作为数据库存储信息,我们可以去官网下载解压到本地安装。But,用Yum的话,应该会帮我们做好这一切事情。 我们只要在安装完后检查一下是否安装了db4*相关的rpm包就可以了。If true,那恭喜,我们可以进行下一步了。If not,请用yum命令安装。
查看rpm安装包的命令:rpm -qa | grep db4
# cd /etc/openldap/
# cp /usr/share/openldap-servers/slapd.conf.obsolete slapd.conf
Note: redhat6.0或6.1版本配置文件在主目录有备份:
# cd /etc/openldap/
# cp slapd.conf.bak slapd.conf
{SSHA}pfAJm+JJa4ec2y8GjTc8uMEJpoR5YKLy
....
# enable server status monitoring (cn=monitor)
database monitor
access to *
by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
by dn.exact="cn=admin,dc=test,dc=com" read
by * none
#######################################################################
# database definitions
#######################################################################
database bdb
suffix "dc=test,dc=com"
checkpoint 1024 15
rootdn "cn=admin,dc=test,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}pfAJm+JJa4ec2y8GjTc8uMEJpoR5YKMn
.......
保存退出。
# vi migrate_common.ph
...
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "test.com";
# Default base
$DEFAULT_BASE = "dc=test,dc=com";
.......
保存退出。:-)
PS.本地需要做ldap控制的账号都要导入到LDAP DB中,否则客户端配置无法正常识别登录。
yum install nss-pam-ldapd pam_ldap -y
安装完成后,配置ldap 客户端配置文件:
vim /etc/openldap/ldap.conf
添加
BASE:dc=test,dc=com
URL:192.168.1.10 --->此处为LDAP Server IP
添加enumerate=true,(因该不是必须的,但是加上为妙)
getent passwd |grep ldapuser1
vim /etc/pam.d/system-auth update: pam_sss.so --> pam_ldap.so 可以实现用户su之间切换
******Please Makre sure all this updated*****************************************************************
其中/etc/pam.d/
vim /etc/pam.d/system-auth
vim /etc/pam.d/password-auth
auth required pam_env.so
auth sufficient pam_fprintd.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_ldap.so
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 type=
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=ok default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session optional pam_ldap.so
配置文件是RHEL6实现用户名验证机制配置文件,大多数服务的配置将都会调用它们。
vim /etc/pam.d/system-auth update: pam_sss --> pam_ldap 可以实现用户su之间切换
*********************************************************************************************************
service nslcd restart
服务重启之后因该就可以使用LDAP 服务了。
可以 su ldapsuer1或者ssh ldapuser1@xxxxx来使用。
客户端配置完成!
操作LDAP的方式有很多,下面以bash下用openldap-clients 套件提供的工具来进行。
dn: uid=ldapuser1,ou=People,dc=test,dc=com
changetype: modify
replace: uidNumber
uidNumber: 1000
把以上内容写入test.ldif中,运行如下命令:
ldapmodify -x -D "cn=admin,dc=test,dc=com" -w yourpasswd -f test.ldif
a、ldapadd 与ldapmodify -a 作用相同
b、如果在添加或修改时,报Naming violation等错误,则说明添加或修改的内容不符合schema中定义的对象属性规范,需修改后才能重新操作。
OK,到这里基本上完整的LDAP配置和使用方法已经比较完整了,大家可以按照步骤自由的去尝试,遇到新问题也可以去google上找答案(Google is a great teacher! :-)).
Good Luck!