OpenLDAP 服务端安装与配置
一、什么是LDAP
目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。目录数据库和关 系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字 一样
二、LDAP特点
- LDAP的结构用树来表示,而不是用表格。正因为这样,就不能用SQL语句了
- LDAP可以很快地得到查询结果,不过在写方面,就慢得多
- LDAP提供了静态数据的快速查询方式
- Client/server模型,Server 用于存储数据,Client提供操作目录信息树的工具
- 这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前
- LDAP是一种开放Internet标准,LDAP协议是跨平台的Interent协议
三、LDAP组织数据结构
- DC (Domain Component) :可以理解给域名 -> baidu.com
- CN (Common Name) : 可以理解为域名里的三级域名,或者上图中的、用户名称、组名……
- OU (Organizational Unit) :可以理解为组别,组
四、OpenLDAP 安装方式
基于UNIX 发行操作系统环境下安装OpenLDAP 软件一般有两种方式:通过源码编译安装或是通过yum源直接安装rpm包。下面会笔者仅正对与yum的方式安装。这里就不在赘述安装方式,yum源可以使用阿里云源,安装OpenLDAP服务器需要提供守护进程和传统的OpenLDAP 管理配置工具,主要是slapd 和ldap-utils 套件。
前置条件
操作系统 | 所需软件包 |
---|---|
CentOS 6.8 X 64 | openldap,openldap-clients,openldap-devel,openldap-servers,openldap-servers-sql |
# 获取配置文件
cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
# 获取数据库配置文件
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# 修改权限
chown -R ldap.ldap /etc/openldap
chown -R ldap.ldap /var/lib/ldap
五、OpenLDAP 配置
1、slapd.conf配置文件参数
[root@ldap ~]# egrep -v "#|^$" /etc/openldap/slapd.conf
# include 行代表当前OpenLDAP 服务包含的schema 文件
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/collective.schema
include /etc/openldap/schema/sudo.schema
include /etc/openldap/schema/openssh-lpk-openldap.schema
# OpenLDAP 服务允许连接的客户端版本。
allow bind_v2
# OpenLDAP 进程启动时,pid 文件存放路径。
pidfile /var/run/openldap/slapd.pid
# OpenLDAP 参数文件存放的路径。
argsfile /var/run/openldap/slapd.args
# 传输加密的配置信息
TLSCACertificatePath /etc/openldap/certs
TLSCertificateFile "\"OpenLDAP Server\""
TLSCertificateKeyFile /etc/openldap/certs/password
database config
access to *
by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
by * none
database monitor
access to *
by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
by dn.exact="cn=root,dc=company,dc=com" read
by * none
# 指定OpenLDAP 数据库类型。
database bdb
# 指定OpenLDAP 服务域名(DN)
suffix "dc=company,dc=com"
checkpoint 1024 15
# 指定OpenLDAP 服务管理员信息(可以理解为创建高级管理员root)。
rootdn "cn=root,dc=company,dc=com"
# 指定OpenLDAP 服务管理员密码,使用slappasswd -s your_password来获取加密密码
rootpw {SSHA}hjqcrGsPL6H58QAS0QHBvihVS7x2HHKG
# 指定OpenLDAP 数据库文件的存放目录。
directory /var/lib/ldap
# 创建OpenLDAP 索引。
index objectClass eq,pres
index ou,cn,mail,surname,givenname eq,pres,sub
index uidNumber,gidNumber,loginShell eq,pres
index uid,memberUid eq,pres,sub
index nisMapName,nisMapEntry eq,pres,sub
2、启动服务并查询
启动ldap服务:
service slapd start
查询LDAP的目录条目,首先我们介绍一下ldapsearch命令,具体可以使用man帮助手册查看。
-b:指定查找的节点
-D:指定查找的DN
-x:使用简单认证
-W:查询是输入密码,或者使用-w password
-h:OpenLDAP的主机地址,可以使用IP或者域名
-H:使用LDAP服务器的URI地址进行操作
查询,看看结果返回是否正常,我们可以看到No such object,因为我们什么数据也没有添加,所以查询的结果为零,到此我们的配置都是正常的。
[root@ldap ~]# ldapsearch -x -D "cn=root,dc=company,dc=com" -h 10.0.40.21 -W
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# search result
search: 2
result: 32 No such object
# numResponses: 1
3、为ldap server添加数据
为ldap添加用户数据,有四种方法,分别如下,我们选择第四种方法进行试验。
- 可以直接修改slapd.d目录下面的数据文件,好处是不用重启服务,直接生效;
- 安装开源工具migrationtools来生成ldfi文件,并通过ldapadd来添加;
- 安装ldap 客户端,这种方法最为简单;
- 直接编辑ldfi文件,然后通过ldapadd添加。
手动编辑base.ldif文件:
[root@ldap ~]# vim base.ldif
#基本DN
dn: dc=company,dc=com
objectClass: organization
objectClass: dcObject
dc: company
ou: company
#用户
dn: ou=people,dc=company,dc=com
objectClass: top
objectClass: organizationalUnit
ou: people
#群组
dn: ou=group,dc=company,dc=com
objectClass: top
objectClass: organizationalUnit
ou: group
通过ldapadd导入数据:
[root@mldap ~]# ldapadd -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -f base.ldif
adding new entry "dc=company,dc=com"
adding new entry "ou=people,dc=company,dc=com"
adding new entry "ou=group,dc=company,dc=com"
回显反馈的结果添加成功,使用另一台机验证添加结果:
[root@test01 ~]# ldapsearch -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -b "dc=company,dc=com" -LLL
dn: dc=company,dc=com
objectClass: organization
objectClass: dcObject
dc: company
o: company
dn: ou=people,dc=company,dc=com
objectClass: top
objectClass: organizationalUnit
ou: people
dn: ou=group,dc=company,dc=com
objectClass: top
objectClass: organizationalUnit
ou: group
然后我们通过user.ldif和group.ldif增加一个用户和一个组。
[root@mldap ~]# cat user.ldif group.ldif
dn: uid=test1,ou=people,dc=company,dc=com
objectClass: posixAccount
objectClass: top
objectClass: inetOrgPerson
objectClass: shadowAccount
gidNumber: 0
givenName: test1
sn: test1
uid: test1
homeDirectory: /home/test1
loginShell: /bin/bash
shadowFlag: 0
shadowMin: 0
shadowMax: 99999
shadowWarning: 0
shadowInactive: 99999
shadowLastChange: 12011
shadowExpire: 99999
cn: test1
uidNumber: 24422
userPassword:: e1NIQX10RVNzQm1FL3lOWTNsYjZhMEw2dlZRRVpOcXc9
dn: cn=devops,ou=group,dc=company,dc=com
objectClass: posixGroup
objectClass: top
cn: DBA
memberUid: test1
gidNumber: 10673
添加用户和用户组:
[root@ldap ~]# ldapadd -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -f group.ldif
adding new entry "cn=devops,ou=group,dc=company,dc=com"
[root@ldap ~]# ldapadd -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -f user.ldif
adding new entry "uid=test1,ou=people,dc=company,dc=com"
然后通过下面的命令查看自己是否添加成功。
ldapsearch -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -b "dc=company,dc=com" -LLL
六、集成图形界面phpldapadmin
1.安装rpm包
yum -y install phpldapadmin
2.修改http配置文件
修改/etc/httpd/conf.d/phpldapadmin.conf
#
# Web-based tool for managing LDAP servers
#
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs
# Apache 2.4
Require local
# Apache 2.2
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
3.修改登录用户变量
vim /etc/phpldapadmin/config.php
#找到用户名变量
$servers->setValue('login','attr','uid');
#修改为
$servers->setValue('login','attr','dn');
4.启动httpd服务器
service httpd start