Centos6 yum安裝openldap+phpldapadmin+TLS+雙主配置

 

 

1.概念介紹

 

LDAP是輕量目錄訪問協議,英文全稱是Lightweight Directory Access Protocol,通常都簡稱爲LDAP。它是基於X.500標準的,可是簡單多了而且能夠根據須要定製。與X.500不一樣,LDAP支持TCP/IP,這對訪問Internet是必須的。LDAP的核心規範在RFC中都有定義,全部與LDAP相關的RFC均可以在LDAPman RFC網頁中找到。 簡單說來,LDAP是一個獲得關於人或者資源的集中、靜態數據的快速方式。 LDAP是一個用來發布目錄信息到許多不一樣資源的協議。一般它都做爲一個集中的地址本使用,不過根據組織者的須要,它能夠作得更增強大php

 

如今市場上有關LDAP的產品已有不少,各大軟件公司都在他們的產品中集成了LDAP服務,如Microsoft的ActiveDirectory、Lotus的Domino Directory、IBM的WebSphere中也集成了LDAP服務。LDAP的開源實現是OpenLDAP,它比商業產品一點也不差,並且源碼開放。html

OpenLDAP 是最經常使用的目錄服務之一,它是一個由開源社區及志願者開發和管理的一個開源項目,提供了目錄服務的全部功能,包括目錄搜索、身份認證、安全通道、過濾器等等。大多數的 Linux 發行版裏面都帶有 OpenLDAP 的安裝包。OpenLDAP 服務默認使用非加密的 TCP/IP 協議來接收服務的請求,並將查詢結果傳回到客戶端。因爲大多數目錄服務都是用於系統的安全認證部分好比:用戶登陸和身份驗證,因此它也支持使用基於 SSL/TLS 的加密協議來保證數據傳送的保密性和完整性。OpenLDAP 是使用 OpenSSL 來實現 SSL/TLS 加密通訊的前端

這裏引伸一下LDAP主要的簡稱含義:java

  • o– organization(組織-公司)
  • ou – organization unit(組織單元-部門)
  • c – countryName(國家)
  • dc – domainComponent(域名)
  • sn – suer name(真實名稱)
  • cn – common name(經常使用名稱)

 

2. 環境介紹

 

這裏準備3臺虛擬機,在cloudstack上生成很方便,固然能夠根據本身需求來部署,能夠只部署簡單的ldap,也能夠部署ldap+ca,也能夠部署ldap複製,前2個均可以在一臺服務器上進行。linux

openldap master:         192.168.1.137            域名:openldap.54im.comgit

openldap slave:             192.168.1.143             域名:openldap2.54im.comweb

ca+openldap client:    192.168.1.111              域名:openldap-ca.54im.com算法

 

2. 準備工做

 

在3臺服務器上均進行以下操做。shell

  • dns配置


vi /etc/resolv.conf數據庫

nameserver 8.8.8.8
nameserver 8.8.4.4

  • selinux配置
固然生產環境建議仍是開啓,我這裏偷懶下先關掉。
 
setenforce  0
 
  • epel配置
 
rpm -Uvh http://mirror-fpt-telecom.fpt.net/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
 

 

3. yum部署ldap

 

 

  • yum安裝openldap:

 

 

  • 日誌配置:

 

 

  • 建立管理員密碼,儘可能使用高強度密碼
這裏我設置的密碼爲 54im.com,生存的{SSHA}DOS0VOBzmvD3beMsuFllLBOi6CAt4Kcj一會配置文件要用

 

 

修改slapd.conf配置


vi /etc/openldap/slapd.conf 我這裏列出要修改的項

 

修改suffix 和rootdn,rootpw,suffix我這裏用了二級域名,若是你想用主域名也能夠,寫成dc=54im,dc=com,其中rootpw能夠是明文,這裏咱們通過SSHA算法加密下,

 

  • 測試下配置文件是否修改爲功

 

 

這裏有個日誌級別的問題

你能夠同時設置幾種日誌級別,方法是將日誌級別的數字加起來。 好比同時設置Trace和Stats級別,那麼在slapd.conf中:

loglevel 257

或者啓動OpenLDAP時,使用命令參數-d 257來指定

 

  • 建立數據庫文件(從模版複製)生成DB_CONFIG
 

 

 

啓動ldap服務,自動建立數據庫文件

服務啓動後,能夠看到生成了幾個數據庫文件

 

  •  檢查搜索域
-x 信息排序
-b 指定搜索範圍起點

 

  • 數據錄入
服務器正常運做後,就能夠錄入信息了。信息的錄入有三種方法,一種是手工錄入,一種是.ldif文件格式錄入,一種是web界面錄入(下面會介紹phpldapadmin錄入)。信息錄入用到ldapadd這個程序。這裏咱們介紹用.ldif方式錄入
  • 建立待認證的用戶 

 

 

  •  安裝及配置遷移工具

 

  •  建立認證帳戶文件

主要的概念:

dn:惟一區分名

dc:所屬區域

ou:所屬組織

cn/uid:全名/登陸ID

 

運行腳本migrate_base.pl,它會建立根項,併爲 Hosts、Networks、Group和 People 等建立低一級的組織單元,指定爲base.ldif文件,這裏咱們只有下面這3個

建立用戶和組的數據庫文件

 

  •  遷移系統用戶到ldap數據庫

若是出現錯誤:
ldap_bind: Invalid credentials (49)
就表示你要麼給出了錯誤的」cn=」條目,要麼給出了錯誤的密碼
Enter LDAP Password:(輸入你剛纔設置的密碼),正確以後會顯示:

若是有防火牆,記得打開389端口

 

 

4. phpldapadmin安裝

 

yum安裝apache+php環境

 

yum安裝phpldapadmin

 

我這裏是yum安裝的,因此config.d下面有phpldapadmin.conf,改下httpd.conf中的servername就能夠。

注意:若是是下載的phpldapadmin包接下的話須要修改httpd.conf配置文件,最文件最後新增

修改phpldapadmin配置文件

 

重啓httpd服務後訪問

 

登陸ldap

登陸後便可新增用戶和組等操做,看了到咱們遷移進去的3個用戶和組

 

 

5.ldap客戶端配置

 

我這裏客戶端安裝在192.168.1.111 這臺服務器上,這臺後面也會作證書服務器。

 

咱們能夠在終端使用圖像化界面配置,在crt裏面輸入  authconfig-tui

 

這裏注意,若是有dns的狀況下話,能夠用域名,不然要綁定hosts或者用IP,TLS這裏咱們先不選,後面再介紹

authconfig-tui會修改不少配置文件,先來檢查下

 

 

 

 

 

啓動nslcd服務,並設置爲開機啓動

驗證:

顯示如上信息,說明帳戶能夠登陸,但沒找到用戶主目錄。這須要在本地配置nfs並經過autofs自動掛載服務器家目錄到本地客戶端

 

6.用戶目錄自動掛載

 

6.1 服務器端配置

nfs在openldap服務器上配置,默認centos 6上已經安裝了nfs

配置nfs

若是開了selinux,則須要 setsebool  -P    use_nfs_home_dirs   on

vi /etc/sysconfig/nfs,去掉一些端口的註釋符(可選,若是不取消這些端口註釋,客戶端showmount的時候會報錯,不影響掛載)

重啓nfs

配置防火牆

在客戶端檢查下nfs輸出

 

6.2 客戶端配置

默認狀況下,centos 6已經安裝了nfs及autofs,若是沒有,則使用yum –y install nfs-utils autofs

配置autofs服務

重啓下autofs服務:service autofs restart

客戶端測試:

 

注意事項:

  對/etc/auto.nfs文件使用*及&通配符時,則/etc/auto.master裏的掛載點必須與服務器的掛載點同名同目錄/nfshome,不然客戶端su – 切換時會提示找不到目錄。

  不建議把ldap用戶直接建立在/home文件夾裏。不然因爲/etc/auto.nfs文件裏的*及&符號的自動匹配的做用,客戶autofs會自動在內存中建立/home目錄,會隱藏掉實際的/home目錄

 

7.配置TLS傳輸加密

配置openldap的加密,能夠用自簽名證書,也能夠用CA中心簽名,這裏個人CA中心簽名,CA服務器是 192.168.1.111

前言:

爲啥要用TLS?

Openldap默認使用簡單驗證,對slapd的全部訪問都使用明文密碼經過未加密通道進行。爲了確保信息安全,須要對信息進行加密傳輸,SSL(Secure Sockets Layer)是一個可靠的解決方案。

它使用 X.509 證書,由可信任第三方(Certificate Authority (CA))進行數字簽名的一個標準格式的數據。有效的數字簽名意味着已簽名的數據沒有被篡改。若是簽名的數據被更改,將不會經過驗證

SSL/TLS 加密原理簡介

SSL/TLS 是基於 PKI 機制的加密方式,包括證書認證、密鑰交換、非對稱加密、對稱加密。SSL/TLS 採用 CA 做爲服務端和客戶端都信賴的具備權威性的組織,證書的頒發和認證都依賴於 CA,並假定 CA 頒發的證書是可靠的、可信賴的,證書裏面的內容是真實的、有效的,並可用於客戶機和服務器進行安全的可靠的通訊加密。

SSL/TLS 證書用來認證服務器和客戶機雙方的身份,並用於密鑰交換時候的非對稱加密。密鑰交換完畢以後,就能夠用這個密鑰作通訊數據的對稱加密了,具體的加密算法是由客戶機和服務器互相協商得來。服務器和客戶機因爲 SSL/TLS 庫的不一樣以及用戶的配置不一樣,雙方支持的算法列表不徹底相同,當雙方作 SSL/TLS 握手的時候,就須要將本身支持的算法列表及優先順序告知對方,一旦對方按照優先順序找到了第一個支持的算法,那麼協商完成,不然雙方協商失敗,SSL/TLS 鏈接斷開

  • 安裝openssl

yum install openssl

  • 準備工做

 

 

  •  CA服務器生存本身的私鑰,公鑰(證書)

利用剛纔建立的RSA私鑰建立自簽署的根證書

 

  •  openldap服務器生成私鑰,並生成證書請求文件
在192.168.1.137這臺服務器上執行,生成私鑰的時候我選擇了不要密碼,不然啓動服務的時候還要輸入次密碼

 

  •  向CA服務器請求證書

 

  •  CA服務器頒發證書
 

 

 

  •  openldap服務器下載本身的證書

 

 

  • openldap服務器安裝證書:

 

 

  • CA服務器發佈本身的公鑰,openldap客戶端下載公鑰
客戶端有圖像界面的話能夠用setup配置,運行system-config-authentication,而後勾選使用TLS,輸入證書連接(能夠用ftp或者http把CA服務器的公鑰共享出來)
我這裏直接scp過去(因爲客戶端和我ca服務器在一臺,這裏我只要複製下就能夠,其餘同窗該rz的rz,該scp的scp吧)
cp /etc/pki/CA/private/CA.key /etc/openldap/cacerts/
  • openldap客戶端修改配置
以前的是ldap,如今改成ldaps

而後重啓/etc/init.d/nslcd restart

 

  •  openldap客戶端測試

 

 

 

若是遇到以下錯誤:

在客戶端的ldap.conf中加了「TLS_REQCERT allow」,重啓nslcd 後出現了正常結果

  •  ldap驗證賬號密碼
這裏的密碼就是以前在openldap服務器端建立的系統賬號密碼

 

 

  •  搜索ldap服務器域信息

 

 

 

8.配置openldap雙主實現高可用 mirrorMode

 

首先咱們來配置一臺和主同樣的openldap,保證如下條件

1、保證兩臺服務器裏都配置的同樣的根dc,好比個人是:dc=openldap,dc=54im,dc=com。

2、兩邊的管理賬戶都有cn=Manager,dc=openldap,dc=54im,dc=com,密碼都爲54im.com。

3、保證目前AB兩臺服務器的數據徹底一致。若是閒麻煩能夠先導出全部數據,而後刪除看成全新安裝,待同步完成後從其中一臺導入便可。

前言:

Openldap 2.4的同步機制已經和2.3徹底不一樣,我這裏的同步機制採用的是鏡像模式,而且雙向鏡像。

  • yum安裝ldap和http php phpldapadmin

 

  •  配置slapd.conf

 

 

我這裏是yum安裝的,因此config.d下面有phpldapadmin.conf,改下httpd.conf中的servername就能夠。

注意:若是是下載的phpldapadmin包接下的話須要修改httpd.conf配置文件,最文件最後新增

  • 配置phpldapadmin

 

最後啓動slpad服務

/etc/init.d/slapd start

  • 訪問openldap2.54im.com 的phpldapadmin
 
  • 在openldap.54im.com上導出下數據
 
導出後會是文本的形式顯示在界面上,咱們把內容負責到一個文件裏面叫 openldap.ldif
  • 在openldap2.54im.com上導入數據
在openldap 節點2上咱們能夠看到 把openldap.54im.com 上的數據導入進去了,目前爲止2邊的數據已經徹底一致了。
  • 配置openldap.54im.com上的slapd.conf
注意先備份下原來的配置文件

因爲openldap2上我沒有配置TLS,因此這裏主主同步我用ldap 389來同步。固然我openldap上同時開了 ldap和ldaps

 

 這裏解釋下各參數含義

 

 

重啓ldap服務
killall -9 slapd
slapd -h ldap:/// ldaps:///
  • 配置openldap2.54im.com上的slapd.conf
openldap2 服務器上我沒有配置TLS,這裏我能夠直接重啓ldap服務  /etc/init.d/slapd restart
  • 在openldap.54im.com上新增用戶
 
這裏能夠指定用戶所屬組,用戶的shell
 
肯定信息無誤,點提交就完成新建用戶
 
 
能夠看到在People這個ou已經有咱們新建的用戶了
 
  • 在openldap2.54im.com上查看用戶是否同步,並刪掉用戶,
  • 在openldap2.54im.com上新增組,而後看openldap.54im.com上是否也進行同步

 

9.另外一個ldap管理工具 LDAP Account Manager

若是平時賬號操做比較頻繁的話,推薦使用ldap account manager這個工具。
LDAPAccountManager(LAM)是一個用來管理儲存在一個LDAP目錄中的用戶的web前端應用程序,管理系統,管理員能夠經過加密的方式進行操做,加強了安全性。LAM支持管理的賬號類型有Samba2/三、Unix地址簿接口和計算機須要的信息,包括NIS映射、E-mail假名,MAC地址等。

LDAP Account Manager強大功能

一、使用LAM,能夠經過Web接口較爲直觀的、簡便的管理存儲在LDAP目錄裏的用戶、用戶組和計算機系統帳戶。

二、管理Unix的用戶、用戶組、主機、域名。

三、強大的過濾和排序功能。

四、賬號屬性管理。

五、多構造屬性。

六、直觀樹狀查看模式。

七、計劃查看模式。

八、經過文件上傳建立賬號。

九、全部賬號可導出爲PDF文件格式。

十、管理用戶、用戶組、配額和自動建立刪除用戶的Home目錄。

十一、支持LDAP+SSL加密模式。

十二、多國語言支持,如Catalan、Chinese(Traditional)等。

 

安裝需求

一、PHP5語言環境和Perl語言環境。

二、OpenLDAP2.0或更高版本。

三、支持CSS的網頁瀏覽器。

四、Apache WebServer,建議安裝SSL、PHP-Module(PHP-Module with ldap、Gettext、XML、Mcrypt+mhash)等模塊。

 

在CentOS6.5安裝LDAP Account Manager比較方便,只用用官方提供的rpm包安裝。

  • 下載安裝:

這裏會自動在httpd.conf生成配置文件,很是方便。

 

cat /etc/httpd/conf.d/lam.apache.conf

  •  配置文件修改

 

  •  登陸:
配置文件中有機器這個OU,數據庫中沒有,因此這裏提示建立machines這個OU
 
 
能夠按樹形結構查看
 
 

10.windown上對openldap進行驗證

 

 

在windows想驗證本身搭建的openldap是否配置成功,有個圖像化的操做界面,首先電腦上得安裝java軟件jdk-8u5-windows-x64.exe。(不是瀏覽器那個java插件)

軟件下載:http://pan.baidu.com/s/1ntHQF4P

軟件解壓後,運行lbe.bat這個

 

 

11.關閉openldap匿名查詢

 

 

默認openldap匿名查詢開了,因此只要別人知道你的openldap服務器ip就能夠掃描到你的組織架構,OU,用戶等信息,這些對外公佈是不安全的。

好比上面這個圖,我只輸入了openldap的域名,勾上匿名,就能夠查到你得額Base DN,而後保存後,就能夠鏈接看到你整個組織架構了。

怎麼關閉openldap的匿名查詢呢,只要在slapd.conf配置文件中加入disallow bind_anon便可(加在 allow bind_v2 這行後面)。

發現已經鏈接不上咱們的openldap了。

 

 

12.  附錄

 

12.1. OpenSSL相關命令:

建立CA中心:( umask 77; openssl genrsa -out private/my-ca.key -des3 2048 )

openssl req -new -x509 -key private/my-ca.key -days 365 > my-ca.crt

私鑰加密:openssl rsa -in encrypted.key -out unencrypted.key

私鑰解密:openssl rsa -in unencrypted.key -out encrypted.key

生成私鑰:( umask 77; openssl genrsa 1024 > dovecot.key )

生成CSR:(umask 77; openssl req -new -key somefile.key -out somefile.csr )

可用/etc/pki/tls/certs/Makefile建立CSR

查看CSR:openssl req -noout -in somefile.csr -text

建立CA簽名證書:openssl ca -in my.csr -out my.crt

證書吊銷:openssl ca -revoke badcert.crt

生成證書吊銷列表CRL:openssl ca -gencrl -out revoked.crl

生成DER供firefox使用:openssl crl -in revoked.crl -outform. DER -out revoked.der.crl

檢查CRL內容:openssl crl -in revoked.crl -noout -text

 

12.2 快速清除openldap配置

附:兩種快速清除配置、從新導入數據的配置命令

==================     前面五行都是相同的   =====================

 

 

==================     如下爲第一種方法   =====================

==================     如下爲第二種方法   =====================

 

 

12.3 手工數據錄入

 

手動錄入方法

第一步是要創建DN:

注意:若是你用複製/粘貼功能把以上內容拷貝過去,必定要注意每行後面不要有空格,建議仍是手工輸入,按Ctrl+d存盤。

第二步是創建RDN:

輸入密碼,這裏的密碼是在配置文件中rootpw項設置的密碼,不是操做系統中root用戶的密碼。驗證經過後就可輸入如下內容:

輸入完全部信息後,按Ctrl+d結束存盤。若是出現出錯信息,請查一下對象類和屬性的對應關係有沒有錯或輸入失誤。初學者就容易出錯的地方是對象類和屬性的對應關係沒有處理好。對象類和屬性是在schema文檔中定義的。它們之間的關係是這樣的,對象類中有些屬性是必選的,有些屬性是可選的。錄入信息的屬性必須在對象類中有定義才能用。

輸入如下命令可查詢到剛纔輸入的信息。

若是按以上配置文件設置了acl,用上面的查詢命令是查詢不到受保護的內容的。如上面的userPassword and mail。要查詢到這些受限內容,須要經過驗證才能夠:

 

 

本文參考:

http://www.server-world.info/en/note?os=CentOS_6&p=ldap&f=4

http://iceblood.blog.163.com/blog/static/11331322720125843938486/

http://blog.sina.com.cn/s/blog_92dc41ea0101fyh9.html

http://blog.sina.com.cn/s/blog_64aac6750101gwst.html

http://mosquito.blog.51cto.com/2973374/1098456

相關文章
相關標籤/搜索