1. 程式人生 > >OpenLDAP的安裝與基本配置

OpenLDAP的安裝與基本配置

openldap ldap jira phpldapadmin lam

一、OpenLDAP簡介

OpenLDAP是輕型目錄訪問協議(Lightweight Directory Access Protocol, LDAP)的自由和開源實現,在其OpenLDAP許可證下發行,並已經被包含在眾多流行的Linux發行版中。

使用輕量級目錄訪問協議(LDAP)構建集中的身份驗證系統可以減少管理成本,增強安全性,避免數據復制的問題,並提高數據的一致性。

通常,在實際工作環境中,都會通過LDAP來構建一個統一的賬號管理、身份驗證平臺,實現SSO單點登錄機制。


技術分享


二、寫在前面

LDAP這個東西,是公司準備實現統一用戶身份認證所了解到的,之前完全沒有概念, 網上搜索了一些基礎,理論知識,簡直蒙圈了,實在是太抽象了。後來一想, 理論的知識先大概有個了解, 先動手讓ldap跑起來再說其他, 在動手做的時候,如果遇到問題在回頭過去查閱資料,說不定慢慢就會理解了。

第一次搭建OpenLDAP的時候,查閱了很多論壇、博客的帖子,發現好多都是講的不夠完善,或者是點到即止,在安裝和配置遇到問題的時候,總要浪費很大一部分時間來遊走於各大搜索引擎去尋根問藥,相當痛苦,下面就是結合網友以及自己嘗試摸索的過程,總結成文,希望能夠幫助到有需要的朋友。


配置環境:

服務器操作系統: CentOS 6.5 x86_64 , RHEL/Suse 應該都類似

OpenLDAP版本:OpenLDAP 2.4


其實如果不是對LDAP各種參數要求都十分嚴格的情況下,比較建議采用 yum 的方式安裝。因為相關依賴環境,功能都十分全面,對於初學者,強烈建議第一次使用yum來安裝。


準備環境:

確保SELinux關閉:

# getenforce
1、臨時關閉
# setenforce 0

2、永久關閉
# vi /etc/selinux/config
將SELINUX=enforcing 改為 SELINUX=disabled
重啟機器即可

設定iptables防火墻規則:

# vim /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT -s 192.168.1.0/16
-A INPUT -m state --state NEW -m tcp -p tcp --dport 636 -j ACCEPT -s 192.168.1.0/16
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

重新加載後如下:
 
# iptables -L
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:http
ACCEPT     tcp  --  192.168.1.0/16       anywhere            state NEW tcp dpt:ldap
ACCEPT     tcp  --  192.168.1.0/16       anywhere            state NEW tcp dpt:ldaps


同步系統時間:

# ntpdate time.nist.gov



三、安裝OpenLDAP服務

1、yum 安裝所需軟件

# yum install -y openldap-*
# yum install -y compat-openldap   # 這個包和主從配置有很大關系

2、安裝完成後,準備配置文件

# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

OpenLDAP相關配置文件:

/etc/openldap/slapd.conf 主配置文件,管理員dn,密碼,日誌配置,權限等設置


3、創建LDAP管理員密碼

LDAP可以支持明文密碼,但是我們強烈建議使用加密密碼。 通過 slappasswd 命令創建加密密碼,返回一串密文,先復制保存一下,下一步需要在LDAP配置文件中使用。

ps. 這裏我輸入的密碼是: ldap

# slappasswd 
New password: 
Re-enter new password: 
{SSHA}5EkFHScR0hN0r3oRhd0aP4tyJ0ByopCd

4、進入 /etc/openldap 目錄下,編輯 slapd.conf 配置文件。

主要修改的地兒,suffix, rootdn, rootpw, rootdn 其實就是openldap的管理員。

技術分享


# cp /etc/openldap/slapd.conf /etc/openldap/slapd.conf.ori
# vi /etc/openldap/slapd.conf
....
# enable server status monitoring (cn=monitor)
database monitor
access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
        by dn.exact="cn=Manager,dc=test,dc=com" read
        by * none


#######################################################################
# database definitions
#######################################################################


database        bdb
suffix          "dc=test,dc=com"
checkpoint      1024 15
rootdn          "cn=Manager,dc=test,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoided.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
# rootpw                secret
# rootpw                {crypt}ijFYNcSNctBYg
rootpw                  {SSHA}5EkFHScR0hN0r3oRhd0aP4tyJ0ByopCd
.......

保存退出。


當然,也可以如下設置明文密碼:

技術分享


5、BerkeleyDB配置。 拷貝 DB_CONFIG 文件到指定目錄, 否則後續會報錯: warning - no DB_CONFIG file found in directory /var/lib/ldap

PS: OpenLDAP默認使用的是伯克利數據庫作為後臺數據存儲介質,在OpenLDAP-Servers包中已經包含了,直接把配置文件復制到相關目錄即可。

# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

6、刪除 /etc/openldap/slapd.d 目錄下所有的文件,否則後續在使用 ldapadd 命令的時候會報錯

PS: 默認情況下,/etc/openldap/slapd.d目錄下有一些默認的配置文件,必須刪除,然後重新建議,這一步很重要

這是因為 2.4 和 2.3 配置文件兼容性問題導致, 參考: http://www.openldap.org/doc/admin24/appendix-common-errors.html

# rm -rf /etc/openldap/slapd.d/*

7、配置相應目錄權限

# chown -R ldap:ldap /var/lib/ldap/
# chown -R ldap:ldap /etc/openldap/

8、啟動 LDAP 的 slapd 服務, 並設置開機啟動

# chkconfig slapd on
# service slapd start

9、重新生成 slapd.d 下的配置文件

# slaptest  -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded

然後重新賦予配置文件的權限:
# chown -R ldap:ldap /etc/openldap/slapd.d

10、重新啟動 LDAP 的 slapd 服務

# service slapd restart

使用 netstat -tulpn 查看服務是否正常啟動

技術分享


11、開啟 SSL

# vim /etc/sysconfig/ldap

SLAPD_LDAPS=yes


我們可以看到, OpenLDAP監聽端口:

默認監聽端口: 389 (明文數據傳輸)

加密監聽端口: 636 (加密數據傳輸)


四、給OpenLDAP添加日誌功能,添加如下內容

1、編輯 /etc/openldap/slapd.conf

# vim /etc/openldap/slapd.conf
loglevel 296

2、編輯 /etc/rsyslog.conf

# vim /etc/rsyslog.conf
local4.*   /var/log/ldap.log

3、重啟服務

# service rsyslog restart
# service slapd restart


五、遷移用戶數據到OpenLDAP

系統用戶通常保存在 /etc/passwd, /etc/shadow文件內,所以我們需要遷移用戶數據到openldap數據庫。但是LDAP只能識別特定格式的文件,即後綴為 ldif 的文件(也是文本文件),所以不能直接使用 /etc/passwd, /etc/shadow直接導入。 最簡單的方法是使用padl提供的遷移工具包,是一系列perl編寫的腳本, migrationtools 工具,之前的openldap包中已經包含了這些腳本,但是在redhat6.5中已經沒有了,要單獨下載。

1、安裝配置 migrationtools

# yum install -y migrationtools

2、切換到 migrationtool 目錄下,進行基本配置

# cd /usr/share/migrationtools/
編輯migrate_common.ph

# vi  migrate_common.ph
...
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "test.com";


# Default base
$DEFAULT_BASE = "dc=test,dc=com";
.......
保存退出。:-)

3、生成 ldif 文件

a、在目錄MigrationTools裏面使用migrate_base.pl腳本生成基本的數據結構

# ./migrate_base.pl > /tmp/base.ldif

導入數據:
##﹚ 指定你在slapd.conf中設置的管理員密碼,也可以使用¦,交互式輸入密碼
##ゝ 指定數據文件的路徑

# ldapadd -x -D "cn=Manager,dc=test,dc=com" -w ldap -f /tmp/base.ldif

查詢已經導入數據庫的數據:
# ldapsearch -h -H ldap://192.168.1.35 -b "dc=test,dc=com"

b、在目錄MigrationTools裏面使用migrate_passwd.pl 和 migrate_group.pl 腳本將 /etc/passwd, /etc/group文件中的用戶轉化為 ldap 可以識別的數據結構 ldif 格式的文件

# ./migrate_passwd.pl /etc/passwd /tmp/passwd.ldif
# ./migrate_group.pl /etc/group /tmp/group.ldif

導入數據:
# ldapadd -x -D "cn=Manager,dc=test,dc=com" -w ldap -f /tmp/passwd.ldif
# ldapadd -x -D "cn



六、安裝 phpLDAPadmin

安裝EPEL倉庫

# rpm -ivh http://mirrors.ukfast.co.uk/sites/dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rp

安裝phpLDAPadmin

# yum install -y phpldapadmin

修改 phpldapadmin配置文件(該文件會自動創建),添加訪問權限

# vim /etc/httpd/conf.d/phpldapadmin.conf
在這行後面添加
Allow from ::1
Allow from 192.168.1    //這裏修改為你自己的ip段

技術分享

修改php配置文件, 禁止自動登錄和php登錄配置

# vim /etc/phpldapadmin/config.php

#(line 398)
//$servers->setValue(‘login‘,‘attr‘,‘uid‘);

#(line 530)
$servers->newServer(‘ldap_pla‘);
$servers->setValue(‘server‘,‘name‘,‘LDAP Server‘);
$servers->setValue(‘server‘,‘host‘,‘127.0.0.1‘);
$servers->setValue(‘server‘,‘port‘,389);
$servers->setValue(‘server‘,‘base‘,array(‘dc=test,dc=com‘));
$servers->setValue(‘login‘,‘auth_type‘,‘session‘);
$servers->setValue(‘login‘,‘bind_id‘,‘dc=test,dc=com‘);
$servers->setValue(‘login‘,‘bind_pass‘,‘ldap‘);
$servers->setValue(‘server‘,‘tls‘,false);

配置完成後,啟動apache

# chkconfig httpd on
# service httpd start

然後通過瀏覽器進行訪問: http://192.168.1.35/ldapadmin/ (這個ip 換成你自己的實際ip)

技術分享

這裏需要註意的是: Login DN: 一定要是完整的 DN, 而不是 RDN。

密碼就是我們前面 slappasswd 命令設置的密碼, 也就是ldap管理員 rootdn(Manager)的密碼,然後就登錄成功了。

技術分享


七、安裝 LAM(和phpLDAPadmin功能相似的GUI工具,可選 )

下載ldap-account-manager包,我這裏下載的是較老的版本4.6 ,(最新版應該 6.0了)。

如果沒有lamp環境
# yum install -y httpd php php-ldap php-gd


# unzip ldap-account-manager-4.6.RC1.zip
# mv ldap-account-manager-4.6.RC1 /var/www/html/lam
# chown -R apache:apache /var/www/html/lam

順便編輯之前的 /etc/phpldapadmin/conf.php 中增加一行
# vim /etc/httpd/conf.d/phpldapadmin.conf
Alias /lam /var/www/html/lam


配置

# cd /var/www/html/lam/config
# cp config.cfg_sample config.cfg
# cp lam.conf_sample lam.conf

# vim lam.conf
serverURL: ldap://192.168.1.35:389
admins: cn=Manager,dc=test,dc=com
treesuffix: dc=test,dc=org

其他 dc=my-domain 全部更換為: dc=yourdomain

重啟 httpd 服務

# service httpd restart


然後通過瀏覽器訪問即可, http://192.168.1.35/lam ,更改為你自己的 ip

技術分享

然後通過 Manager 賬號以及密碼就可以登錄成功了。

技術分享


至此, 可能我們基本可以把 slapd 跑起來了, 但是OpenLDAP做起來感覺還是比較麻煩,也是自己結合網上的資料、教程,實際測試成功後,整理了這篇文章,希望能夠幫助到有需要的朋友。


後續還有ldap的具體應用, 比如 wifi, jira, VPN, jenkins 等應用案例。



本文出自 “Share your knowledge” 博客,請務必保留此出處http://skypegnu1.blog.51cto.com/8991766/1939302

OpenLDAP的安裝與基本配置