openldap的搭建(版本在2.4以下)

        目录服务就是按照树状存储信息的模式。LDAP是轻量目录访问协议(LightweightDirectory Access Protocol)的缩写,LDAP标准实际上是在X.500标准基础上产生的一个简化版本。

l  LDAP特点:

<1>LDAP的结构用树来表示,而不是用表格。正因为这样,就不能用SQL语句了

<2>LDAP可以很快地得到查询结果,不过在写方面,就慢得多

<3>LDAP提供了静态数据的快速查询方式:Client/server模型,Server 用于存储数,Client提供操作目录信息树的工具,这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前

<4>LDAP是一种开放Internet标准,LDAP协议是跨平台的的Interent协议它是基于X.500标准的,与X.500不同,LDAP支持TCP/IP(即可以分布式部署)

l  LDAP适用范围:

LDAP存储数据需要从不同的地点读取,但是不需要经常更新的信息最为有用。

l  身份认证在LDAP中提供三种认证机制:

<1>匿名。

<2>基本认证:通过用户名和密码进行身份识别,又分为简单密码和MD5密码认证

<3>LDAP提供的在SSL和TLS安全通道基础上进行的身份认证,包括数字证书的认证。

l  Ldap端口号:389,636

cat /etc/services | grep ldap

ldap   389/tcp   明文

ldap   389/udp   明文

ldaps  636/tcp   # LDAP overSSL

ldaps  636/udp   # LDAPover SSL

l  TLS 安全性:

分布式LDAP 是以明文的格式通过网络来发送信息的,包括client访问sldap的密码。TLS(SSL 的后继者,由OpenSSL 包)加密机制来解决这个问题。

l  LDAP目录数据结构

<1>在LDAP中目录是按照树型结构组织——目录信息树(DIT) ,DIT是一个主要进行读操作的数据库。

<2>DIT由条目(Entry)组成,条目相当于关系数据库中表的记录;条目是具有分辨名DN(Distinguished  Name)的属性-值对(Attribute-value,简称AV)的集合。

在UNIX文件系统中,最顶层是根目录(root),LDAP目录也通常用ROOT做根,通常称为BaseDN.

因为历史(X.500)的原因,LDAP目录用OU(Organization Unit)从逻辑上把数据分开来。Ou 也是一种条目,容器条目,Ou 下就是真正的用户条目

DN,Distinguished Name分辨名。在LDAP中,一个条目的分辨名叫做“DN”,DN是该条目在整个树中的唯一名称标识,DN相当于关系数据库表中的关键字(Primary  Key);是一个识别属性,通常用于检索

l  常见的两种DN设置:

基于cn(姓名)

cn=test,ou=auth,dc=baike,dc=com

最常见的cn是/etc/group转来的条目

基于uid(User ID)

uid=test,  ou=auth,dc=baike,dc=com

最常见的uid是/etc/passwd转来的条目

Base DN:LDAP目录树的最顶部就是根,也就是Base DN。

LDIF 格式(此格式用于LDAP数据导入、导出):LDIF是LDAP数据库信息的一种文本格式。

一、检查环境:

VPN服务器:10.0.18.122

[[email protected]~]# cat /etc/redhat-release

CentOSrelease 5.8 (Final)

[[email protected]~]# uname -a

Linux TEST12.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64GNU/Linux

二、安装openldap软件

[[email protected]~]# yum -y install openldap-*

######################################################################

Yum安装openlap时安装和升级的软件包如下:

Install:

openldap-servers.x86_640:2.3.43-25.el5_8.1

openldap-servers-overlays.x86_640:2.3.43-25.el5_8.1

openldap-servers-sql.x86_640:2.3.43-25.el5_8.1

DependencyInstalled:

libtool-ltdl.x86_640:1.5.22-7.el5_4

unixODBC-libs.x86_640:2.2.11-10.el5

Updated:

openldap.i3860:2.3.43-25.el5_8.1

openldap.x86_640:2.3.43-25.el5_8.1

openldap-clients.x86_640:2.3.43-25.el5_8.1

openldap-devel.i3860:2.3.43-25.el5_8.1

openldap-devel.x86_640:2.3.43-25.el5_8.1

######################################################################

三、配置openldap

<1>备份配置文件sldap.conf和ldap.conf

[[email protected]~]# cd /etc/openldap/

[[email protected]]# ls

cacerts  DB_CONFIG.example  ldap.conf schema  slapd.conf

[[email protected]]# cp slapd.conf slapd.conf_liqunyan_$(date +%F)

[[email protected]]# cp ldap.conf ldap.conf_liqunyan_$(date +%F)

[[email protected]]# ls

cacerts  ldap.conf schema     slapd.conf_liqunyan_2013-02-27

DB_CONFIG.example  ldap.conf_liqunyan_2013-02-27  slapd.conf

<2>用哈希散列的方式生成root管理员密码

[[email protected]]# slappasswd -h {SSHA}

Newpassword:

Re-enter newpassword:

{SSHA}jT3zYgVa1Ys7x4Bp2g/Iec5wDTLQfk4t

<3>修改配置文件slapd.conf

[[email protected]]# cat slapd.conf|egrep -v "^#|^$"

include         /etc/openldap/schema/core.schema

include         /etc/openldap/schema/cosine.schema

include        /etc/openldap/schema/inetorgperson.schema

include         /etc/openldap/schema/nis.schema

allowbind_v2

pidfile         /var/run/openldap/slapd.pid

argsfile        /var/run/openldap/slapd.args

TLSCACertificateFile/etc/pki/tls/certs/ca-bundle.crt

TLSCertificateFile /etc/pki/tls/certs/slapd.pem

TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem

[l1] access todn.base="cn=Subschema" by * read

access to *

by self write

by users read

by anonymous auth

database        bdb

suffix          "dc=abc,dc=com"

rootdn         "cn=Manager,dc=abc,dc=com"

[l2] rootpw         {SSHA}jT3zYgVa1Ys7x4Bp2g/Iec5wDTLQfk4t[l3]

directory       /var/lib/ldap

indexobjectClass                       eq,pres

indexou,cn,mail,surname,givenname     eq,pres,sub

indexuidNumber,gidNumber,loginShell    eq,pres

indexuid,memberUid                    eq,pres,sub

indexnisMapName,nisMapEntry            eq,pres,sub

<4>启动ldap服务

[[email protected]]# /etc/init.d/ldap start

Startingslapd:                                           [  OK  ]

[[email protected]]# netstat -lant|grep 389

tcp        0     0 0.0.0.0:389              0.0.0.0:*                   LISTEN

[[email protected]]# ps -ef|grep ldap

ldap     26976    1  0 04:37 ?   00:00:00 /usr/sbin/slapd -h ldap:///ldaps:/// -u ldap

root     26987 3148  0 04:40 pts/0    00:00:00 grep ldap

四、迁移用户数据到目录服务数据库

[[email protected]~]# cd /usr/share/openldap/migration/

[[email protected]]#vi migrate_common.ph

# DefaultDNS domain

$DEFAULT_MAIL_DOMAIN = "abc.com";

# Default base

$DEFAULT_BASE = "dc=abc,dc=com"

[l4] <1>首先创建基本的数据库文件

[[email protected]]#./migrate_base.pl >base.ldif[l5]

修改生成的base.ldif文件

(修改成自己想要的结构,本实验中的结构如下:

[[email protected]]# cat base.ldif

dn:dc=abc,dc=com

dc: abc

objectClass:domain

[[email protected]]# cp base.ldif base1.ldif

[[email protected]]# cat base1.ldif

dn: ou=accounts,dc=abc,dc=com

ou: accounts

objectClass: top

objectClass: organizationalUnit

dn: ou=sysusers,dc=abc,dc=com

ou: sysusers

objectClass: top

objectClass: organizationalUnit

[l6] objectClass中organizationalUnit属性的说明:

objectclass ( 2.5.6.5 NAME ‘organizationalUnit‘

DESC‘RFC2256: an organizational unit‘

SUPtop STRUCTURAL

MUSTou

MAY (userPassword $ searchGuide $ seeAlso $ businessCategory $

x121Address $ registeredAddress $ destinationIndicator $

preferredDeliveryMethod $ telexNumber $ teletexTerminalIdentifier $

telephoneNumber $ internationaliSDNNumber $

facsimileTelephoneNumber $ street $ postOfficeBox $ postalCode $

postalAddress $ physicalDeliveryOfficeName $ st $ l $ description ) )

以上内容在/etc/openldap/schema/core.schema中有相关说明。

[[email protected]]# cp base1.ldif base2.ldif

[[email protected]]# cat base2.ldif

dn:ou=users,ou=accounts,dc=abc,dc=com

ou: users

objectClass:top

objectClass:organizationalUnit

dn:ou=groups,ou=accounts,dc=abc,dc=com

ou: groups

objectClass:top

objectClass:organizationalUnit

<2>从/etc/group中迁移ldap中用户组的信息

[[email protected]]# grep root /etc/group >group.in

[[email protected] migration]# ./migrate_group.pl group.in>group.ldif

[l7] [[email protected]]# cat groups.ldif

dn:cn=staff,ou=groups,ou=accounts,dc=abc,dc=com

objectClass:posixGroup

cn: staff

gidNumber: 1

posixGroup的相关信息:

objectclass ( 1.3.6.1.1.1.2.2 NAME ‘posixGroup‘

DESC‘Abstraction of a group of accounts‘

SUPtop STRUCTURAL

MUST (cn $ gidNumber )

MAY (userPassword $ memberUid $ description ) )

在/etc/openldap/schema/nis.schema中可以查看到相关信息。

<3>从/etc/passwd和/etc/shadow中迁移ldap中用户的信息:

[[email protected]]# grep root /etc/passwd > passwd.in

[[email protected] migration]# ./migrate_passwd.plpasswd.in >users.ldif

[l8] [[email protected] migration]# cat users.ldif

dn:cn=liqunyan,ou=users,ou=accounts,dc=abc,dc=com

objectClass:posixAccount

objectClass:inetOrgPerson

givenName::576k6Imz

sn:: 5p2O

cn: liqunyan

uid:liqunyan

uidNumber:3236

gidNumber: 1

homeDirectory:/home/liqunyan

loginShell:/bin/sh

mail:[email protected]

employeeType:staff

userPassword::e1NIQX1GN1ZLZVRFWUIvY0NqUkJjV0NodTdrWW2275pxc9

dn:cn=aa,ou=users,ou=accounts,dc=abc,dc=com

objectClass:posixAccount

objectClass:inetOrgPerson

givenName::55Ge

sn:: 546L

cn: aa

uid: aa

uidNumber:2872

gidNumber: 1

homeDirectory:/home/aa

loginShell:/bin/sh

mail:[email protected]

employeeType:staff

userPassword::e1NIQX1mWFVTMEtPVG81R21sd25RRnc3cjRjWEZ5UXc9

[[email protected]]# cat sysusers.ldif

dn:uid=lsync,ou=sysusers,dc=abc,dc=com

uid: lsync

userPassword::e01ENX1wMnB5WWVqTmZkb0hYT1VLcWFFb3JBPT0=

objectClass:account

objectClass:simpleSecurityObject

objectClass:top

dn:uid=mail,ou=sysusers,dc=abc,dc=com

uid: mail

userPassword::e01ENX05ZG5DcnU5ZFhnSDN4Sk02cWkyOGV3PT0=

objectClass:account

objectClass:simpleSecurityObject

objectClass:top

dn:uid=auth,ou=sysusers,dc=abc,dc=com

uid: auth

userPassword::e01ENX1KeCtKMmNQZWJYOGV3L3VjS0NsOTFBPT0=

objectClass:account

objectClass:simpleSecurityObject

objectClass:top

account和simpleSecurityObject的相关信息:

objectclass ( 0.9.2342.19200300.100.4.5 NAME‘account‘

SUPtop STRUCTURAL

MUSTuserid

MAY (description $ seeAlso $ localityName $

organizationName $ organizationalUnitName $ host )

)

objectclass ( 0.9.2342.19200300.100.4.19 NAME‘simpleSecurityObject‘

SUP topAUXILIARY

MUSTuserPassword )

<4>将以上的结构一层一层导入到ldap中

[[email protected]]# ldapadd -x -D "cn=Manager,dc=abc,dc=com" -W -f base.ldif

Enter LDAPPassword:[l9]

adding newentry "dc=abc,dc=com"

[[email protected]]# ldapadd -x -D "cn=Manager,dc=abc,dc=com" -W -f base1.ldif

Enter LDAPPassword:

adding newentry "ou=accounts,dc=abc,dc=com"

adding newentry "ou=sysusers,dc=abc,dc=com"

[[email protected]]# ldapadd -x -D "cn=Manager,dc=abc,dc=com" -W -fbase2.ldif

Enter LDAPPassword:

adding newentry "ou=users,ou=accounts,dc=abc,dc=com"

adding newentry "ou=groups,ou=accounts,dc=abc,dc=com"

[[email protected]]# ldapadd -x -D "cn=Manager,dc=abc,dc=com" -W -fgroups.ldif

Enter LDAPPassword:

adding newentry "cn=staff,ou=groups,ou=accounts,dc=abc,dc=com"

[[email protected]]# ldapadd -x -D "cn=Manager,dc=abc,dc=com" -W -fsysusers.ldif

Enter LDAPPassword:

adding newentry "uid=lsync,ou=sysusers,dc=abc,dc=com"

adding newentry "uid=mail,ou=sysusers,dc=abc,dc=com"

adding newentry "uid=auth,ou=sysusers,dc=abc,dc=com"

ldapadd -x-D "cn=Manager,dc=abc,dc=com" -W -f users.ldif

Enter LDAPPassword:

adding newentry "cn=liqunyan,ou=users,ou=accounts,dc=abc,dc=com"

adding newentry "cn=aa,ou=users,ou=accounts,dc=abc,dc=com"

<5>查看导入的用户信息。

[[email protected]]# /usr/bin/ldapsearch-LLL -W -x -H ldap://127.0.0.1 -D "cn=Manager,dc=abc,dc=com" -b"ou=sysusers,dc=abc,dc=com" "(uid=lsync)"[l10]

Enter LDAPPassword:

dn:uid=lsync,ou=sysusers,dc=abc,dc=com

uid: lsync

userPassword::e01ENX1wMnB5WWVqTmZkb0hYT1VLcWFFb3JBPT0=

objectClass:account

objectClass:simpleSecurityObject

objectClass:top

[[email protected]]#/usr/bin/ldapsearch -LLL -W -x -H ldap://127.0.0.1 -D"cn=Manager,dc=abc,dc=com" -b"ou=users,ou=accounts,dc=abc,dc=com" "(uid=liqunyan)"[l11]

Enter LDAPPassword:

dn:cn=liqunyan,ou=users,ou=accounts,dc=abc,dc=com

objectClass:posixAccount

objectClass:inetOrgPerson

givenName::576k6Imz

sn:: 5p2O

cn: liqunyan

uid:liqunyan

uidNumber:3236

gidNumber: 1

homeDirectory:/home/liqunyan

loginShell:/bin/sh

mail:[email protected]

employeeType:staff

userPassword::e1NIQX1GN1ZLZVRFWUIvY0NqUkJjV0NodTdrWW2275pxc9

说明:

《1》      修改用户的密码:

知道自己的密码,给自己设置新的密码:

[[email protected]]# ldappasswd -x -H ldap://127.0.0.1 -D"cn=liqunyan,ou=users,ou=accounts,dc=abc,dc=com" -W"cn=liqunyan,ou=users,ou=accounts,dc=abc,dc=com" -S

Newpassword:

Re-enter newpassword:

Enter LDAPPassword:[l12]

Result:Success (0)

[[email protected]]# /usr/bin/ldapsearch -LLL -W -x -H ldap://127.0.0.1 -D"cn=Manager,dc=abc,dc=com" -b"ou=users,ou=accounts,dc=abc,dc=com" "(uid=liqunyan)"

Enter LDAPPassword:

dn: cn=liqunyan,ou=users,ou=accounts,dc=abc,dc=com

objectClass:posixAccount

objectClass:inetOrgPerson

givenName::576k6Imz

sn:: 5p2O

cn: liqunyan

uid:liqunyan

uidNumber:3236

gidNumber: 1

homeDirectory:/home/liqunyan

loginShell:/bin/sh

mail: [email protected]

employeeType:staff

userPassword::e1NTSEF9RktlNDRtSXhiaDRKMlZ4RDFFa2lTaW5jQmRpZXdzcGI=

管理员给任何一个用户修改密码:

[[email protected]]# ldappasswd -x -H ldap://127.0.0.1 -D"cn=Manager,dc=abc,dc=com" -W"cn=aa,ou=users,ou=accounts,dc=abc,dc=com" -S

Newpassword:

Re-enter newpassword:

Enter LDAPPassword:[l13]

Result:Success (0)

[[email protected]]# /usr/bin/ldapsearch -LLL -W -x -H ldap://127.0.0.1 -D"cn=Manager,dc=abc,dc=com" -b"ou=users,ou=accounts,dc=abc,dc=com" "(uid=aa)"

Enter LDAPPassword:

dn:cn=aa,ou=users,ou=accounts,dc=abc,dc=com

objectClass:posixAccount

objectClass:inetOrgPerson

givenName::55Ge

sn:: 546L

cn: aa

uid: aa

uidNumber:2872

gidNumber: 1

homeDirectory:/home/aa

loginShell:/bin/sh

mail:[email protected]

employeeType:staff

userPassword::e1NTSEF9cXhPajMzemNpYkJUWVpBN2R3OHpsMGV3ZkJ3bXA3ZTc=



[l1]此三行最前端不要有空格

[l2]Suffix和rootdn修改成自己的域后缀。

[l3]管理员密码,注意rootpw和密码之间不能存在空格,要用tab键隔开。

[l4]将此选项中的域名修改成自己的域名。

[l5]基本的数据库文件可以用此命令生成,也可以自己手写,如果手写,手写内容必须符合相关属性。

[l6]添加ou  account和sysusers(就是abc.com的分支机构)

[l7]同样,group.ldif可以使用命令生成,也可以自己手写创建。

[l8]同样,sysusers.ldif可以使用命令生成,也可以自己手写创建。

[l9]此密码为上面设置的root密码。

[l10]查询lsync用户信息

[l11]查看liqunyan用户信息。

[l12]此处输入的是自己的密码

[l13]此处输入的就是管理员root的密码。

时间: 2024-11-02 16:34:01

openldap的搭建(版本在2.4以下)的相关文章

Android 环境搭建 版本问题

jdk1.6 1.7  eclipse 3.7.2    SDK-r12 ADT 12 SDK和ADT必须配套 搭建环境需要四个软件: 1.JDK(这是最新版本jdk1.7官方下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html) 2.SDK(这是最新版本android-sdk_r12官方下载地址:http://developer.android.com/sdk/index.html) 3.Eclipse(

Linux下搭建版本控制器SVN

关于版本控制器,大致可分为集中式和分布式两种. 集中式的版本控制器通常会存在一个中央服务器,主要是用来存放版本库的,(这里暂且先不说分支的事)当我们工作之前,首先需要从中央服务器得到一份最新版本的代码,修改完毕之后,再次推送到中央服务器.集中式的版本控制器有个最大的缺点,就是必须要联网才能工作,同时,一旦中央服务器挂掉,整个项目就全部奔溃,但是用起来确实要方便一些. 分布式版本控制器的优势就很明显了,对于分布式的版本控制器,并没有中央服务器一说,加入该版本控制器的每个人的电脑上都有一个完整的版本

GitLab完整搭建(版本6.3.1)

CentOS6.7安装gitlab GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. 它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释.可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库.团队成员可以利用内置的简单聊天程序(Wall)进行交流.它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找. 前期规划: 1).操作系统Cento

VSS+SourceAnywhere for VSS搭建版本控制系统教程

VSS:Microsoft Visual Source Safe,本教程使用VSS2005(好像2005就是官方更新的最后一版了). SourceAnywhere for VSS:分为服务端和客户端:VSS本身只能实现局域网共享,SAW在VSS基础上包装实现远程访问. 一.安装和配置VSS 1.1安装VSS 1.2配置VSS 此项的主要任务是创建项目和添加可访问项目的账号 选择创建数据库所要建在的位置 默认密码为空,如下步出现警告,点击OK即可 账号已加上 二.安装和配置SourceAnywhe

Linux Golang 环境搭建(版本1.6.2)

1.下载安装包 https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz 2.解压缩安装包到/usr/local目录 tar -C /usr/local -xzf go1.6.2.linux-amd64.tar.gz 3.配置Golang环境变量 1) 配置到缺省位置:export PATH=$PATH:/usr/local/go/bin 2)配置到自定义目录($HOME): export GOROOT=$HOME/go e

neo4j企业版集群搭建

一.HA高可用集群搭建 版本采用的是neo4j-enterprise-3.5.3-unix.tar.gz 1.1.集群ip规划 192.168.56.10 neo4j-node1 192.168.56.11 neo4j-node2 192.168.56.12 neo4j-node3 192.168.56.13 neo4j-node4 192.168.56.14 neo4j-node5 1.2.免密登录配置 $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa #生

ldap统一认证架构方案及实现指南(一)

一.ldap目录服务介绍什么是目录服务?  目录是一类为了浏览和搜索数据而设计的特殊的数据库.例如,为人所熟知的微软公司的活动目录(active directory)就是目录数据库的一种.目录服务是按照树状形式存储信息的,目录包含基于属性的描述性信息,并且支持高级的过滤功能. 什么是LDAP?  LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简单多了并且可以根据需要定制.与X.

gitlab完整迁移

环境介绍: CentOS 6.7 gitlab:6.3.1 需求:gitlab从A服务器迁移至B服务器 第一.在B服务器上部署gitlab环境 参考<GitLab完整搭建(版本6.3.1)> 第二.备份A服务器上的数据 1).打包仓库文件 #su- git $cd/home/git/ $tarzcvf repositories.tar.gz ./repositories 2).备份sql文件 $mysqldump-uroot -pxxxx gitlabhq_production > /t

日志分析(一) 环境准备

参照 http://nkcoder.github.io/blog/20141031/elkr-log-platform-deploy/此作者搭建环境过程. 借一张图: 搭建版本为: Elasticsearch:1.5.2 Logstash:1.4.2 Kibana:4.0.2 Shipper节点配置如下: input { file { path => "/var/log/nginx/*_access.log" } } filter { if [path] =~ "acc