OpenLDAP介绍和安装

LADP

1、目录服务

目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样。

目录服务是由目录数据库和一套访问协议组成的系统。类似以下的信息适合储存在目录中:

  • 企业员工信息,如姓名、电话、邮箱等;
  • 公用证书和安全密钥;
  • 公司的物理设备信息,如服务器,它的IP地址、存放位置、厂商、购买时间等;

LDAP是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写,LDAP是从X.500目录访问协议的基础上发展过来的,目前的版本是v3.0。与LDAP一样提供类似的目录服务软件还有ApacheDS、Active Directory、Red Hat Directory Service 。

 

2、LDAP特点

  • LDAP的结构用树来表示,而不是用表格。正因为这样,就不能用SQL语句了
  • LDAP可以很快地得到查询结果,不过在写方面,就慢得多
  • LDAP提供了静态数据的快速查询方式
  • Client/server模型,Server 用于存储数据,Client提供操作目录信息树的工具
  • 这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前
  • LDAP是一种开放Internet标准,LDAP协议是跨平台的Interent协议

 

3、LDAP主要的简称含义:

  • o– organization(组织-公司)
  • ou – organization unit(组织单元-部门)
  • c – countryName(国家)
  • dc – domainComponent(域名)
  • sn – suer name(真实名称)
  • cn – common name(常用名称)

 

OpenLDAP介绍

OpenLDAP 是一款轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP),属于开源集中账号管理架构的实现,且支持众多系统版本,被广大互联网公司所采用。

LDAP 具有两个国家标准,分别是X.500 和LDAP。OpenLDAP 是基于X.500 标准的,而且去除了X.500 复杂的功能并且可以根据自我需求定制额外扩展功能,但与X.500 也有不同之处,例如OpenLDAP 支持TCP/IP 协议等,目前TCP/IP 是Internet 上访问互联网的协议。

OpenLDAP 则直接运行在更简单和更通用的TCP/IP 或其他可靠的传输协议层上,避免了在OSI会话层和表示层的开销,使连接的建立和包的处理更简单、更快,对于互联网和企业网应用更理想。LDAP 提供并实现目录服务的信息服务,目录服务是一种特殊的数据库系统,对于数据的读取、浏览、搜索有很好的效果。目录服务一般用来包含基于属性的描述性信息并支持精细复杂的过滤功能,但OpenLDAP 目录服务不支持通用数据库的大量更新操作所需要的复杂的事务管理或回滚策略等。

OpenLDAP 默认以Berkeley DB 作为后端数据库,Berkeley DB 数据库主要以散列的数据类型进行数据存储,如以键值对的方式进行存储。Berkeley DB 是一类特殊的数据库,主要用于搜索、浏览、更新查询操作,一般对于一次写入数据、多次查询和搜索有很好的效果。Berkeley DB 数据库是面向查询进行优化,面向读取进行优化的数据库。Berkeley DB 不支持事务型数据库(MySQL、MariDB、Oracle 等)所支持的高并发的吞吐量以及复杂的事务操作。

OpenLDAP 目录中的信息是按照树形结构进行组织的,具体信息存储在条目(entry)中,条目可以看成关系数据库中的表记录,条目是具有区别名(Distinguished Name,DN)的属性(attribute),DN 是用来引用条目,DN 相当于关系数据库(Oracle/MySQL)中的主键(primary key),是唯一的。属性由类型(type)和一个或者多个值(value)组成,相当于关系数据库中字段的概念。

 

OpenLDAP优点

OpenLDAP 目录服务有以下10 个优点。

  • OpenLDAP 是一个跨平台的标准互联网协议,它基于X.500 标准协议。

  • OpenLDAP 提供静态数据查询搜索,不需要像在关系数据中那样通过SQL 语句维护数据库信息。

  • OpenLDAP 基于推和拉的机制实现节点间数据同步,简称复制(replication)并提供基于TLS、SASL 的安全认证机制,实现数据加密传输以及Kerberos 密码验证功能。

  • OpenLDAP 可以基于第三方开源软件实现负载(LVS、HAProxy)及高可用性解决方案,24 小时提供验证服务,如Headbeat、Corosync、Keepalived 等。

  • OpenLDAP 数据元素使用简单的文本字符串(简称LDIF 文件)而非一些特殊字符,便于维护管理目录树条目。 章

  • OpenLDAP 可以实现用户的集中认证管理,所有关于账号的变更,只须在OpenLDAP 服务器端直接操作,无须到每台客户端进行操作,影响范围为全局。

  • OpenLDAP 默认使用协议简单如支持TCP/ZP 协议传输条目数据,通过使用查找操作实现对目录树条目信息的读写操作,同样可以通过加密的方式进行获取目录树条目信息。

  • OpenLDAP 产品应用于各大应用平台(Nginx、HTTP、vsftpd、Samba、SVN、Postfix、OpenStack、Hadoop 等)、服务器(HP、IBM、Dell 等)以及存储(EMC、NetApp 等)控制台,负责管理账号验证功能,实现账号统一管理。

  • OpenLDAP 实现具有费用低、配置简单、功能强大、管理容易及开源的特点。

  • OpenLDAP 通过ACL(Access Control List)灵活控制用户访问数据的权限,从而保证数据的安全性。

 

OpenLDAP 功能

在LDAP 的功能模型中定义了一系列利用LDAP 协议的操作,主要包含以下4 部分。

  • 查询操作(ldapsearch):允许查询目录并取得条目,其查询性能比关系数据库好。

  • 更新操作(ldapupdate):目录树条目支持条目的添加、删除、修改等操作。

  • 同步操作:OpenLDAP 是一种典型的分布式结构,提供复制同步,可将主服务器上的数据通过推或拉的机制实现在从服务器上更新,完成数据的同步,从而避免OpenLDAP 服务器出现单点故障,影响用户验证。

  • 认证和管理操作:允许客户端在目录中识别自己,并且能够控制一个会话的性质。

 

OpenLDAP 目录架构介绍

官网: http://www.openldap.org/doc/admin24/intro.html#What is LDAP

目前OpenLDAP 目录架构分为两种:一种为互联网命名组织架构;另一种为企业级命名组织架构。本节分别为介绍两种架构的用途,但本书主要以企业级命名组织架构为核心进行阐述OpenLDAP 内部逻辑结构、工作原理以及企业实践等相关知识。

LDAP 的目录信息是以树形结构进行存储的,在树根一般定义国家(c=CN)或者域名(dc=com),其次往往定义一个或多个组织(organization,o)或组织单元(organization unit,ou)。一个组织单元可以包含员工、设备信息(计算机/打印机等)相关信息。例如uid=babs,ou=People,dc=example,dc=com。

1、互联网命名组织架构

2、企业级命名组织架构

 

centos6 环境下安装

  • epel配置(阿里源)
rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm
  • yum安装
yum install openldap openldap-servers openldap-clients openldap-devel compat-openldap -y
  • 日志配置
mkdir /var/log/slapd
chmod 755 /var/log/slapd/
chown ldap:ldap /var/log/slapd/

sed -i "/local4.*/d" /etc/rsyslog.conf
cat >> /etc/rsyslog.conf << EOF
local4.*                        /var/log/slapd/slapd.log
EOF

service rsyslog restart
  • 创建管理员密码
[root@localhost slapd]# slappasswd
New password: 
Re-enter new password: 
{SSHA}HmwPb4UqjJaYAtcvfLqhfXKGchhpabTm

修改slapd.conf配置

cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
mv /etc/openldap/slapd.d{,.bak}
  • 配置ldap管理员用户密码
vim /etc/openldap/slapd.conf
rootpw {SSHA}HmwPb4UqjJaYAtcvfLqhfXKGchhpabTm

测试下配置文件是否修改成功

[root@localhost openldap]# slaptest -u -f slapd.conf
config file testing succeeded
  • 日志级别
[root@localhost openldap]# slapd -d ?
Installed log subsystems:
 
        Any                            (-1, 0xffffffff)记录所有的信息
        Trace                          (1, 0x1)跟踪功能调用的信息
        Packets                        (2, 0x2)包处理的debug信息
        Args                           (4, 0x4)丰富的debug信息
        Conns                          (8, 0x8)连接管理信息
        BER                            (16, 0x10)包的收发信息
        Filter                         (32, 0x20)搜索过滤的处理过程
        Config                         (64, 0x40)配置文件的处理过程
        ACL                            (128, 0x80)访问控制列表处理过程
        Stats                          (256, 0x100)连接、操作及其结果的统计数据
        Stats2                         (512, 0x200)向客户端返回的结果的统计信息
        Shell                          (1024, 0x400)与shell后端的通信信息
        Parse                          (2048, 0x800)显示记录条目的分析信息
        Sync                           (16384, 0x4000)从服务器数据同步资源消耗处理信息
        None                           (32768, 0x8000)
 
NOTE: custom log subsystems may be later installed by specific code

可以同时设置几种日志级别,方法是将日志级别的数字加起来。 比如同时设置Trace和Stats级别,那么在slapd.conf中:

loglevel 257

或者启动OpenLDAP时,使用命令参数-d 257来指定。

  • 创建数据库文件(从模版复制)生成DB_CONFIG
cd /var/lib/ldap/
cp /usr/share/openldap-servers/DB_CONFIG.example ./DB_CONFIG
chown ldap.ldap DB_CONFIG

启动ldap服务,自动创建数据库文件

/etc/init.d/slapd start

服务启动后,可以看到生成了几个数据库文件

  • 检查搜索域

根据配置文件/etc/openldap/slapd.conf中的suffix的值进行查询

[root@localhost openldap]# ldapsearch -x -b "dc=my-domain,dc=com"
# extended LDIF
#
# LDAPv3
# base <dc=my-domain,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1
-x 信息排序
-b 指定搜索范围起点
  • 数据录入

 服务器正常运作后,就可以录入信息了。信息的录入有三种方法,信息录入用到ldapadd这个程序。

  1. 手工录入,
  2. .ldif文件格式录入,
  3. web界面录入。

 

posted @ 2017-01-25 15:20  shhnwangjian  阅读(1076)  评论(0编辑  收藏  举报