LDAP服务器用于统一认证账户信息,有点类似通讯录,实现集中管理用户账户的功能。系统为CentOS6.3。
一、安装openldap
yum install openldap openldap-servers openldap-clients openldap-devel compat-openldap
二、安装Berkeley DB
yum install db4 db4-utils
openldap使用Berkeley DB存储数据。
三、安装web server
由于目录服务是一套复杂的概念,所以这里安装phpLDAPadmin方便于管理。
yum install httpd php php-bcmath php-gd php-mbstring php-xml php-ldap
配置apache、php过程略过。
四、安装phpldapadmin
cd /tmp
wget http://sourceforge.net/projects/phpldapadmin/files/phpldapadmin-php5/1.2.3/phpldapadmin-1.2.3.zip/download
unzip phpldapadmin-1.2.3.zip
cp -R phpldapadmin-1.2.3 /var/www/html/phpldapadmin
cd /var/www/html/phpldapadmin/config
cp config.php.example config.php
五、配置openldap
安装完openldap后我们看到在/etc/openldap目录下有certs、schema、slapd.d三个目录和ldap.conf一个文件。
1)certs目录用于存放TLS认证的CA证书等。
2)(该目录用于旧的配置方法,已废弃)schema目录下有.schema文件和.ldif文件。
3)slapd.d目录是openldap2.4.x的配置目录。/etc/openldap/slapd.d/cn=config存放数据库的配置文件,/etc/openldap/slapd.d/cn=config/cn=schema存放.ldif文件。
4)ldap.conf是openldap client的配置文件。
1、
首先生成管理员密码:
slappasswd
输完两遍密码后会生成一个加密散列字符串,保存下来。
如:
{SSHA}JiW3WU7jREOTOMZKT6CklgJZriLIj738
2、
编辑数据库配置文件,设置域名:
vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif
找到:
olcSuffix: dc=my-domain,dc=com
修改dc:
olcSuffix: dc=ldap,dc=live-in,dc=org
设置目录树后缀(域名),作用是定义根的名字。
找到:
olcRootDN: cn=Manager,dc=my-domain,dc=com
修改dc:
olcRootDN: cn=admin,dc=ldap,dc=live-in,dc=org
设置管理员DN。
PS:LDAP管理员cn默认为Manager,可以改成自己需要的名字。
在olcDatabase={2}bdb.ldif最后添加:
olcRootPW: {SSHA}JiW3WU7jREOTOMZKT6CklgJZriLIj738
设置管理员密码。
3、
指定监控权限:
vim /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif
找到:
dn.base="cn=manager,dc=my-domain,dc=com"
修改为:
dn.base="cn=admin,dc=ldap,dc=live-in,dc=org"
修改默认域名。
4、
设置Database Cache:
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
设置权限:
chown -R ldap:ldap /var/lib/ldap/
测试配置文件是否有错:
slaptest -u
提示:
config file testing succeeded
测试通过。
启动slapd服务:
service slapd start
六、配置phpldapadmin
1、编辑phpldapadmin配置文件
vim /var/www/html/phpldapadmin/config/config.php
找到"Define your LDAP servers in this section"区块。
将:
$servers->setValue('server','host','127.0.0.1');
$servers->setValue('server','port',389);
前的注释去掉。
将:
$servers->setValue('server','base',array(''));
修改为:
$servers->setValue('server','base',array('dc=ldap,dc=live-in,dc=org'));
在array中输入设置的olcSuffix。
将:
$servers->setValue('login','auth_type','session');
前的注释去掉。
2、
设置用户和组:
chown -R apache:apache /var/www/html/phpldapadmin
3、
浏览器访问:http://IP/phpldapadmin/index.php
使用RootDN和RootPW登陆:
cn=admin,dc=ldap,dc=live-in,dc=org
123456
此时左侧目录树会显示:This base cannot be created with PLA.
3、添加根节点
cd /etc/openldap
vim base.ldif
输入:
dn: dc=ldap,dc=live-in,dc=org
o: ldap
objectclass: dcObject
objectclass: organization
添加数据库:
ldapadd -f base.ldif -x -D cn=admin,dc=ldap,dc=live-in,dc=org -W
输入密码后会提示:
adding new entry "dc=ldap,dc=live-in,dc=org"
在浏览器里刷新一下条目就会显示出根节点。
-------------------------我是分割线-------------------------
七、接下来做一个实验
A机器为上面安装的LDAP服务器,用户从LDAP服务器上获取账户密码登录另一台B机器。B机器上先搜索本地账户,如果没有就从A机器获得账户。A机器IP为192.168.1.100,B机器IP为192.168.1.200。
phpldapadmin设置
1、浏览器登陆phpldapamdin,点击根节点,点击创建一个子条目,选择Posix Group。创建一个名为ldaptest的组。
2、点击cn=ldaptest,点击创建一个子条目,选择User Account。
3、设定用户名,密码,GID,家目录,登陆的shell。其中的User ID就是登陆的用户名。
客户端(B机器)设置
安装所需的软件包:
yum install openldap-clients pam_ldap nss-pam-ldapd
1、编辑openldap客户端配置文件
vim /etc/openldap/ldap.conf
输入:
URI ldap://192.168.1.100
BASE dc=ldap,dc=live-in,dc=org
在客户端测试下搜索数据库:
ldapsearch -x -b "dc=ldap,dc=live-in,dc=org"
2、
vim /etc/pam_ldap.conf
修改:
host 192.168.1.100
base dc=ldap,dc=live-in,dc=org
3、
使用图形交互界面设置pam和ldap其余内容
authconfig-tui
User Information选择:
Use LDAP
Authentication选择:
Use Shadow Passwords
Use LDAP Authentication
Local authorization is sufficient
PS:交互界面修改了/etc/pam_ldap.conf、/etc/pam.d/system-auth、/etc/nsswitch.conf这三个文件。
4、设置第一次登陆时建立家目录
vim /etc/pam.d/system-auth
在最后添加:
session required pam_mkhomedir.so skel=/etc/skel umask=0022
重启B机器使设置生效。随后使用test1用户名及密码登陆。
显示:
Creating directory '/home/users/test1'.
Last login: Fri Feb 8 14:00:54 2013 from 192.168.1.200
-sh-4.1$
登陆成功!
PS1:这里还未设置LDAP服务器的TLS加密。
PS2:debug模式命令slapd -d 1,可以查看交互详细情况。
参考资料:
openldap基础及安装
http://www.overclockers.com/forums/showthread.php?t=707070
http://www.cnblogs.com/obpm/archive/2010/08/28/1811065.html
http://blog.csdn.net/destina/article/details/6188993
http://www.cnblogs.com/adforce/archive/2011/09/15/2177061.html
ldap整合ssh
http://blog.csdn.net/flyoxs/article/details/6007643
(责任编辑:IT) |