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提供的在SSLTLS安全通道基礎上進行的身份認證,包括數字證書的認證。

l  Ldap端口號:389636

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的密碼。TLSSSL 的後繼者,由OpenSSL 包)加密機制來解決這個問題。

l  LDAP目錄數據結構

<1>LDAP中目錄是按照樹型結構組織——目錄信息樹(DIT ,DIT是一個主要進行讀操做的數據庫。sql

<2>DIT由條目(Entry)組成,條目至關於關係數據庫中表的記錄;條目是具備分辨名DNDistinguished  Name)的屬性-值對(Attribute-value,簡稱AV)的集合。數據庫

UNIX文件系統中,最頂層是根目錄(root),LDAP目錄也一般用ROOT作根,一般稱爲BaseDN.

由於歷史(X.500)的緣由,LDAP目錄用OUOrganization Unit)從邏輯上把數據分開來。Ou 也是一種條目,容器條目,Ou 下就是真正的用戶條目

DNDistinguished Name分辨名。在LDAP中,一個條目的分辨名叫作「DN」DN是該條目在整個樹中的惟一名稱標識,DN至關於關係數據庫表中的關鍵字(Primary  Key);是一個識別屬性,一般用於檢索

l  常見的兩種DN設置:

基於cn(姓名)

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

最多見的cn/etc/group轉來的條目

基於uidUser ID

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

最多見的uid/etc/passwd轉來的條目

Base DNLDAP目錄樹的最頂部就是根,也就是Base DN

LDIF 格式(此格式用於LDAP數據導入、導出)LDIFLDAP數據庫信息的一種文本格式。

1、檢查環境:安全

×××服務器:10.0.18.122服務器

[root@TEST1~]# cat /etc/redhat-release 網絡

CentOSrelease 5.8 (Final)數據結構

[root@TEST1~]# uname -aapp

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

2、安裝openldap軟件tcp

[root@TEST1~]# 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            

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

3、配置openldap

<1>備份配置文件sldap.confldap.conf

[root@TEST1~]# cd /etc/openldap/

[root@TEST1openldap]# ls

cacerts  DB_CONFIG.example  ldap.conf schema  slapd.conf

[root@TEST1openldap]# cp slapd.conf slapd.conf_liqunyan_$(date +%F)

[root@TEST1openldap]# cp ldap.conf ldap.conf_liqunyan_$(date +%F)

[root@TEST1openldap]# ls

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

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

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

[root@TEST1openldap]# slappasswd -h {SSHA}

Newpassword:

Re-enter newpassword:

{SSHA}jT3zYgVa1Ys7x4Bp2g/Iec5wDTLQfk4t

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

[root@TEST1openldap]# 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服務

[root@TEST1openldap]# /etc/init.d/ldap start

Startingslapd:                                           [  OK  ]

[root@TEST1openldap]# netstat -lant|grep 389

tcp        0     0 0.0.0.0:389              0.0.0.0:*                   LISTEN     

[root@TEST1openldap]# 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

4、遷移用戶數據到目錄服務數據庫

[root@TEST1~]# cd /usr/share/openldap/migration/

[root@TEST1migration]#vi migrate_common.ph

# DefaultDNS domain

$DEFAULT_MAIL_DOMAIN = "abc.com";

# Default base

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

[l4] <1>首先建立基本的數據庫文件

[root@TEST1migration]#./migrate_base.pl >base.ldif[l5] 

修改生成的base.ldif文件

(修改爲本身想要的結構,本實驗中的結構以下:

[root@TEST1migration]# cat base.ldif

dn:dc=abc,dc=com

dc: abc

objectClass:domain

 

[root@TEST1migration]# cp base.ldif base1.ldif

[root@TEST1migration]# 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] objectClassorganizationalUnit屬性的說明:

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中有相關說明。

[root@TEST1migration]# cp base1.ldif base2.ldif

[root@TEST1migration]# 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中用戶組的信息

[root@TEST1migration]# grep root /etc/group >group.in

[root@TEST1 migration]# ./migrate_group.pl group.in>group.ldif

[l7] [root@TEST1migration]# 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中用戶的信息:

[root@TEST1migration]# grep root /etc/passwd > passwd.in

[root@TEST1 migration]# ./migrate_passwd.plpasswd.in >users.ldif

[l8] [root@TEST1 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:liqunyan@aa.com

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:aa@aa.com

employeeType:staff

userPassword::e1NIQX1mWFVTMEtPVG81R21sd25RRnc3cjRjWEZ5UXc9

 

[root@TEST1migration]# 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

 

accountsimpleSecurityObject的相關信息:

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

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

Enter LDAPPassword: [l9] 

adding newentry "dc=abc,dc=com"

 

[root@TEST1migration]# 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"

 

[root@TEST1migration]# 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"

 

[root@TEST1migration]# 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"

 

[root@TEST1migration]# 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>查看導入的用戶信息。

[root@TEST1migration]# /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

 

[root@TEST1migration]#/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:liqunyan@aa.com

employeeType:staff

userPassword::e1NIQX1GN1ZLZVRFWUIvY0NqUkJjV0NodTdrWW2275pxc9

說明:

《1》      修改用戶的密碼:

知道本身的密碼,給本身設置新的密碼:

[root@TEST1openldap]# 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)

[root@TEST1openldap]# /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: liqunyan@aa.com

employeeType:staff

userPassword::e1NTSEF9RktlNDRtSXhiaDRKMlZ4RDFFa2lTaW5jQmRpZXdzcGI=

管理員給任何一個用戶修改密碼:

[root@TEST1openldap]# 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)

[root@TEST1openldap]# /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:aa@aa.com

employeeType:staff

userPassword::e1NTSEF9cXhPajMzemNpYkJUWVpBN2R3OHpsMGV3ZkJ3bXA3ZTc=


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

 [l2]Suffixrootdn修改爲本身的域後綴。

 [l3]管理員密碼,注意rootpw和密碼之間不能存在空格,要用tab鍵隔開。

 [l4]將此選項中的域名修改爲本身的域名。

 [l5]基本的數據庫文件能夠用此命令生成,也能夠本身手寫,若是手寫,手寫內容必須符合相關屬性。

 [l6]添加ou  accountsysusers(就是abc.com的分支機構)

 [l7]一樣,group.ldif能夠使用命令生成,也能夠本身手寫建立。

 [l8]一樣,sysusers.ldif能夠使用命令生成,也能夠本身手寫建立。

 [l9]此密碼爲上面設置的root密碼。

 [l10]查詢lsync用戶信息

 [l11]查看liqunyan用戶信息。

 [l12]此處輸入的是本身的密碼

 [l13]此處輸入的就是管理員root的密碼。

相關文章
相關標籤/搜索