Centos6.5下OpenLdap搭建(環境配置+雙機主從配置+LDAPS+enable SSHA)


為什么要做這個事

公司打算做統一認證,由於LDAP支持radius,可以把網絡、安全設備集中在一個LDAP中認證;

OpenLDAP

OpenLDAP 是 LDAP 協議的一個開源實現。LDAP 服務器本質上是一個為只讀訪問而優化的非關系型數據庫。它主要用做地址簿查詢(如 email 客戶端)或對各種服務訪問做后台認證以及用戶數據權限管控。(例如,訪問 Samba 時,LDAP 可以起到域控制器的作用;或者 Linux 系統認證 時代替 /etc/passwd 的作用。)

環境

Centos 6.5 雙機:

10.65.0.38

10.65.0.39

安裝

centos6.4默認安裝了LDAP,但沒有裝ldap-server和ldap-client, yum安裝最簡單:

su root
# yum install -y openldap openldap-servers openldap-clients

准備數據庫目錄,openldap配置文件

# 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
# mv /etc/openldap/slapd.d{,.bak}

為什么要將slapd.d目錄移動為.bak文件,如果這個文件存在,直接修改slapd.conf后還需要重新生成slapd.d目錄,因為官方 對於 OpenLDAP 2.4 ,不推薦使用 slapd.conf 作為配置文件。從這個版本開始所有配置數據都保存在 /etc/openldap/slapd.d/中。如果沒有以上第三步的操作,每次重新生成slapd.d的步驟為:

# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/

如果沒有將slapd.d改變名稱,意味着每次改變slapd.conf時,都需要運行以上命令,生成新的slapd.d目錄,接着要改變slapd.d的屬主:

# chown -R ldap:ldap /etc/openldap/slapd.d
# slapindex
# chown ldap:ldap /var/lib/openldap/openldap-data/*

最后,在將openLDAP服務重啟,保證配置文件變更生效,這里建議直接就吧slapd.d目錄做個備份,然后刪掉,這樣改變slapd.conf后,直接重啟服務就可生效。

# service slapd restart

配置

vim修改slapd.conf文件,步驟如下:

1、設置目錄樹后綴,一般以公司域名來設置

2、設置LDAP管理員DN

3、修改LDAP管理員口令

找到語句:

suffix "dc=my-domain,dc=com"
rootdn "cn=Manager,dc=my-domain,dc=com"
rootpw secret

將其改為:

suffix "dc=example,dc=com"
rootdn "cn=Manager,dc=example,dc=com"
rootpw {SSHA}NXV9Fl28qCHMmA6P sjhVX0uejTKE6OYr

以上的密文值是通過以下命令生成的

# slappasswd -s your_secret_string

配置文件修改之后分下權限

chown ldap.ldap /etc/openldap/*
chown ldap.ldap /var/lib/ldap/*

重啟服務:

# service slapd restart

數據導入

新建文件example.ldif

dn:dc=example,dc=com
objectclass:dcObject
objectclass:organization
o:Example, Inc.
dc:example

dn:cn=Manager,dc=example,dc=com
objectclass:organizationalRole
cn:Manager

通過命令導入:

/usr/bin/ldapadd -x -W -D "cn=Manager,dc=example,dc=com" -f example.ldif

 

配置基於TLS的OpenLDAP

如果要使用基於TLS的LDAPS安全協議來連接,必須先生成證書,可以使用自簽發的SSL證書。說到這個自簽發證書,被狠狠的坑了很久,查了無數文檔,直到看到wiki上的一句話才解決問題,把wiki上的官方文檔貼一下,讓大家少進坑為妙:

Warning: OpenLDAP cannot use a certificate that has a password associated to it.

如果OpenLDAP要利用證書來使用LDAPS協議,證書必須不含密碼。

創建的步驟為:

$ openssl req -new -x509 -nodes -out slapdcert.pem -keyout slapdkey.pem -days 365

接下來將會要求輸入一些,證書創建的信息,包括省份,城市,之類的,按照實際的填即可,有些可以為空,值得注意的是,CN值必須為服務器主機名或者IP值

CN (Common Name):10.65.0.38

將生成的證書文件 slapdcert.pem及私鑰文件slapdkey.pem,移動到/etc/openldap/openldap/ssl目錄下(沒有的話可以先創建):

# mv slapdcert.pem slapdkey.pem /etc/openldap/ssl/
# chmod -R 755 /etc/openldap/ssl/
# chmod 400 /etc/openldap/ssl/slapdkey.pem
# chmod 444 /etc/openldap/ssl/slapdcert.pem
# chown ldap /etc/openldap/ssl/slapdkey.pem

配置基於SSL的slapd

修改配置文件(/etc/openldap/slapd.conf)

# Certificate/SSL Section
TLSCipherSuite HIGH:MEDIUM:-SSLv2
TLSCertificateFile /etc/openldap/ssl/slapdcert.pem
TLSCertificateKeyFile /etc/openldap/ssl/slapdkey.pem

關閉openldap,然后重新啟動基於SSL的slapd

/etc/init.d/slapd stop
slapd -h "ldap:/// ldaps:///"

配置雙機主從復制 LDAP:

按照以上步驟安裝從OpenLDAP服務器,使用Syncrepl方式來同步主從服務器數據,該方式是slave服務器以拉的方式同步master的用戶數據,  該方式缺點:當你修改一個條目中的一個屬性值(or大批量的萬級別的某1屬性值),它不是簡單的同步過來這些屬性,而是把修改的條目一起同步更新來。

1、配置master LDAP , vim /etc/openldap/slapd.conf 加入以下

#replication
index entryCSN,entryUUID eq  
overlay syncprov  
syncprov-checkpoint 100 10  
syncprov-sessionlog 100

2、配置 slave LDAP ,vim /etc/openldap/slapd.conf 加入以下

#replication
index entryCSN,entryUUID eq

syncrepl rid=123
        provider=ldap://10.65.0.38
        type=refreshOnly
        interval=00:00:00:00
        searchbase="dc=example,dc=com"
        filter="(objectClass=inetOrgPerson)"
        scope=sub                   
        attrs="cn,sn,ou,mail,sambaNTPassword,sambaSID,uid,userPassword"
        schemachecking=off
        bindmethod=simple
        binddn="cn=Manager,dc=example,dc=com"
        credentials=your_secret

 

配置導入明文密碼是自動變為ssha hash值

vim /etc/openldap/slapd.conf ,將以下值加入(1、加入這個schema 2、啟動ppolicy模塊 3、啟用明文轉換SSHA)

#Include schema

include /usr/local/etc/openldap/schema/ppolicy.schema

# Load dynamic backend modules:

moduleload ppolicy.la

# After database definitions, You can add followings.

overlay ppolicy
ppolicy_hash_cleartext

重啟LDAP服務器

測試:

創建一個LDIF文件

dn: cn=john,ou=Users,dc=example,dc=com
objectClass: person
sn: doe
cn: john
userPassword: johnldap

使用ldapadd命令導入:

ldapadd -x -D "cn=asela,dc=example,dc=com" -W -f user.ldif

使用客戶端打開該dn值,將會看到密碼已經變為SSHA的密碼。

PS:推薦使用的客戶端LDAP administrator

這個直接去官網下載 http://www.ldapbrowser.com/download.htm

配置連接:

image

image

連接后的效果

image

 

參考的blog:

1、http://my.oschina.net/5lei/blog/193484

2、http://xacmlinfo.org/2015/06/25/enable-hash-passwords-in-openldap/

3、https://wiki.archlinux.org/index.php/OpenLDAP_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

4、http://407711169.blog.51cto.com/6616996/1529506


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM