openldap完整版本搭建記錄


  文檔信息
目        的:搭建一套完整的OpenLDAP系統,實現賬號的統一管理。
                    1:OpenLDAP服務端的搭建
                    2:PhpLDAPAdmin的搭建
                    3:OpenLDAP的打開日志信息
                    4:OpenLDAP與migrationtools實現導入系統賬號的相關信息
                    5:OpenLDAP客戶端的配置
                    6:OpenLDAP與SSH
                    7:OpenLDAP限制用戶登錄系統
                    8:OpenLDAP強制用戶一登錄系統更改密碼
                    9:OpenLDAP與系統賬號結合Samba
                   10:OpenLDAP的主從
                   11:OpenLDAP的雙主

系統環境信息:

操作系統:CentOS release 6.2 (Final)

基礎環境准備:

關閉防火牆:/etc/init.d/iptables stop  && chkconfig iptables off

關閉NetworkManager:/etc/init.d/NetworkManager stop && chkconfig NetworkManager off

SeLinux設為disabled: setenforce 0

yum源倉庫的配置:本次部署使用了阿里雲yum源

  1)  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

  2)yum clean all 清除緩存

  3)yum makecache 創建緩存

一、OpenLDAP服務器的搭建

1. 安裝OpenLDAP的相關

  yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools,其中compat-openldap這個包與主從有很大的關系

安裝完后,可以看到自動創建了ldap用戶:
[root@rpm ~]# tail -n 1 /etc/passwd
ldap:x:55:55:LDAP User:/var/lib/ldap:/sbin/nologin

可以通過rpm -qa |grep openldap查看安裝了哪些包:

[root@rpm ~]# rpm -qa | grep openldap
openldap-2.4.40-16.el6.x86_64
openldap-devel-2.4.40-16.el6.x86_64
openldap-clients-2.4.40-16.el6.x86_64
openldap-servers-2.4.40-16.el6.x86_64
openldap-servers-sql-2.4.40-16.el6.x86_64
compat-openldap-2.3.43-2.el6.x86_64

2.  查看OpenLDAP版本,使用:slapd -VV

[root@rpm ~]# slapd -VV
@(#) $OpenLDAP: slapd 2.4.40 (Mar 22 2017 06:29:21) $
    mockbuild@c1bm.rdu2.centos.org:/builddir/build/BUILD/openldap-2.4.40/openldap-2.4.40/build-servers/servers/slapd

3.  OpenLDAP的相關配置文件信息

/etc/openldap/slapd.conf                                    # OpenLDAP的主配置文件,記錄根域信息,管理員名稱,密碼,日志,權限等
/etc/openldap/slapd.d/*                                     # 這下面是slapd.conf配置信息生成的文件,每修改一次配置信息,這里的東西就要重新生成
/etc/openldap/schema/*                                      # OpenLDAP的schema存放的地方
/var/lib/ldap/*                                             # OpenLDAP的數據文件
/usr/share/openldap-servers/slapd.conf.obsolete             # 模板配置文件
/usr/share/openldap-servers/DB_CONFIG.example               # 模板數據庫配置文件

      OpenLDAP監聽的端口:

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

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

 注意:從OpenLDAP2.4.23版本開始所有配置數據都保存在/etc/openldap/slapd.d/中,建議不再使用slapd.conf作為配置文件。但是本片博文依舊使用slapd.conf作為配置文件,我們一步一步進行配置和介紹。

4.  初始化OpenLDAP的配置

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG           # copy數據庫文件
cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf        # 此處copy是為了使用slapd.conf

 5.  修改配置文件

  首先,設置OpenLDAP管理員密碼,拷貝這個到/etc/openldap/slapd.conf里

[root@rpm ~]# slappasswd -s 123456
New password:
Re-enter new password:
{SSHA}JTudNsYrtbsksTdjxe4bFSwbrt1cF+LD

 拷貝秘聞密碼到/etc/openldap/slapd.conf里,這里的rootpw必須頂格寫,而且與后面的密碼文件用Tab鍵隔開,並修改對應序列。

 注意:其中cn=root中的root表示OpenLDAP管理員的用戶名,而olcRootPW表示OpenLDAP管理員的密碼。

 6.  重新生成配置文件信息文件

 先檢測/etc/openldap/slapd.conf是否有錯誤

[root@rpm openldap]# slaptest -f /etc/openldap/slapd.conf 
5b038945 bdb_db_open: DB_CONFIG for suffix "dc=wangjie,dc=com" has changed.
5b038945 Performing database recovery to activate new settings.
5b038945 bdb_db_open: database "dc=wangjie,dc=com": recovery skipped in read-only mode. Run manual recovery if errors are encountered.
config file testing succeeded

  授權數據文件,更改文件的所屬

[root@rpm openldap]# chown -R ldap:ldap /var/lib/ldap/
[root@rpm openldap]# ll /var/lib/ldap/
總用量 984
-rw-r--r-- 1 ldap ldap     4096  5月 22 11:08 alock
-rw------- 1 ldap ldap    24576  5月 22 11:08 __db.001
-rw------- 1 ldap ldap   188416  5月 22 11:08 __db.002
-rw------- 1 ldap ldap   270336  5月 22 11:08 __db.003
-rw------- 1 ldap ldap    98304  5月 22 11:08 __db.004
-rw------- 1 ldap ldap   753664  5月 22 11:08 __db.005
-rw------- 1 ldap ldap    32768  5月 22 11:08 __db.006
-rw-r--r-- 1 root root      845  5月 22 10:56 DB_CONFIG
-rw------- 1 ldap ldap     8192  5月 18 10:46 dn2id.bdb
-rw------- 1 ldap ldap    32768  5月 18 10:46 id2entry.bdb
-rw------- 1 ldap ldap 10485760  5月 22 11:08 log.0000000001

  我們先重啟slapd生成配置文件。

[root@rpm openldap]# /etc/init.d/slapd restart
停止 slapd:                                               [確定]
正在檢查 slapd 的配置文件:                                [警告]
5b0389a6 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
5b0389a6 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif"
config file testing succeeded
正在啟動 slapd:                                           [確定]

  接着回到檢測/etc/openldap/slapd.conf是否有錯誤

[root@rpm openldap]# slaptest -f /etc/openldap/slapd.conf
config file testing succeeded
  可以看到沒問題,然后重新生成配置文件的配置信息:
rm - rf /etc/openldap/slapd.d/*                                     # 先刪除最先的配置文件生成的信息 
slaptest -f/etc/openldap/slapd.conf -F /etc/openldap/slapd.d/       # 重新生成文件

   查看是否生成的是自己修改的配置文件信息,修改文件在/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}bdb.ldif

 

  重啟:/etc/init.d/slapd restart

[root@rpm openldap]# /etc/init.d/slapd restart
停止 slapd:                                               [確定]
正在啟動 slapd:                                            [確定]

 到這里為止,OpenLDAP服務端基本上完成了,我們可以通過PhpLDAPAdmin來登錄看一下,那先得安裝PhpLDAPAdmin

 二、PhpLDAPAdmin的搭建

1.  安裝EPEL倉庫,鏡像里沒有PhpLDAPAdmin這個的安裝包,所以得安裝EPEL倉庫,本次使用阿里雲的擴展源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum clean all 
yum makecache

2.  安裝PhpLDAPAdmin

     yum install -y phpldapadmin

3.  修改phpldapadmin的配置文件,訪問控制權限vim /etc/httpd/conf.d/phpldapadmin.conf,允許誰訪問,因為本次實驗環境,先全部允許。

4.  修改配置文件: /etc/phpldapadmin/config.php

$servers->setValue('login','attr','dn');                # 這一行的注釋去掉
$servers->setValue('login','attr','uid'); # 這一行注釋掉

5.  編輯root.ldif,導入管理員帳號信息。

  此文件對格式的要求比較大,之前一直報“additional info: dn: attribute type undefined”最后在第一行加了一個空行解決,一直沒有找到原因,如有妥善解決方法的,請留言賜教。

[root@rpm ~]# cat > root.ldif << EOF
> 
>dn: dc=oldwang,dc=com
>objectclass: dcObject
>objectclass: organization
>o: oldwang.com
>dc: oldwang
>
>dn: cn=root,dc=oldwang,dc=com
>objectclass: organizationalRole
>cn: root
>EOF
   導入信息:ldapadd -x -D "cn=root,dc=oldwang,dc=com" -W -f /root/root.ldif
 

  通過瀏覽器訪問:

也可以通過命令行查詢:ldapsearch -x -b "cn=root,dc=oldwang,dc=com"

 

 三、openLDAP的打開日志信息

 1.  現在配置文件里加上日志行 ,這里的日志級別有很多種,-2記錄為info信息。

  vim /etc/openldap/slapd.conf 加上loglevel -2

 

  這里修改了配置文件,所有得重新生成配置文件的信息

rm -rf /etc/openldap/slapd.d/*
slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
chown -R ldap.ldap /etc/openldap/slapd.d/

 2.  在/etc/rsyslog.conf文件中加入  

local4.*                                                /var/log/slapd/slapd.log

3.  創建日志文件目錄並修改屬組

mkdir /var/log/slapd
chmod 755 /var/log/slapd/
chown ldap.ldap /var/log/slapd/
 4.  重啟服務

 

5.  查看日志信息,tailf /var/log/slapd/slapd.log

 四、OpenLDAP與migrationtools實現導入系統賬號的相關信息

 本節需要migrationtools工具包,此工具包在之前的安裝中已經統一安裝過,如果之前沒有安裝請按照以下方法安裝

  yum -y install migrationtools

 1.  修改migrationtools的配置文件,vim /usr/share/migrationtools/migrate_common.ph 修改以下的兩個地方

 

2.  生成基礎的數據文件,可以自己修改這個生成的base.ldif文件,把不需要的去掉

  /usr/share/migrationtools/migrate_base.pl > base.ldif

3.  把base.ldif導入OpenLDAP的數據文件

  ldapadd -x -D "cn=root,dc=oldwang,dc=com" -W -f /root/base.ldif

 

  這里會報錯,我們可以通過-c參數強制加入

 

  導入之后,通過PhpLdapAdmin可以看到已經導入進來了

 4.  添加用戶及用戶組

  創建兩個測試用戶及用戶組,並修改密碼。

[root@rpm ~]# groupadd ldaptest1
[root@rpm ~]# groupadd ldaptest2
[root@rpm ~]# useradd -g ldaptest1 ldaptest1
[root@rpm ~]# useradd -g ldaptest2 ldaptest2
[root@rpm ~]# echo 123456 | passwd --stdin ldaptest1
更改用戶 ldaptest1 的密碼 。
passwd: 所有的身份驗證令牌已經成功更新。
[root@rpm ~]# echo password | passwd --stdin ldaptest2
更改用戶 ldaptest2 的密碼 。
passwd: 所有的身份驗證令牌已經成功更新。

  因為此次我們只想將剛創建的兩個用戶導入至openldap數據文件,所以將兩個用戶的相關信息截取出來

[root@rpm ~]# grep ldaptest /etc/passwd > users
[root@rpm ~]# grep ldaptest /etc/group > groups
[root@rpm ~]# cat users ldaptest1:x:500:502::/home/ldaptest1:/bin/bash ldaptest2:x:501:503::/home/ldaptest2:/bin/bash [root@rpm ~]# cat groups ldaptest1:x:502: ldaptest2:x:503:

 5.  使用migrationtools將兩個臨時用戶生成ldif文件

[root@rpm ~]# /usr/share/migrationtools/migrate_passwd.pl users > users.ldif
[root@rpm ~]# /usr/share/migrationtools/migrate_group.pl groups > groups.ldif

   查看生成的users.ldif --> cat users.ldif

cn: ldaptest1
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$V9.vDuo7$14R62mGHBJt90XhXX3920lJhf1G7LP35ZWsNgptq6dWvmd1x7PFwQ6D35C7qlNodvmLUt/xjLpiHI39IqpBjP/
shadowLastChange: 17674
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 500
gidNumber: 502
homeDirectory: /home/ldaptest1

dn: uid=ldaptest2,ou=People,dc=oldwang,dc=com
uid: ldaptest2
cn: ldaptest2
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$xVYndeJr$zhfe0FwT.3gu.t8rL8ohIHhyrgP90dvBHHsg0ZMQxVyEJ8.jxz7glem/xsllBtayNxms8csiw.JG0GCEZgpEa1
shadowLastChange: 17674
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 501
gidNumber: 503
homeDirectory: /home/ldaptest2

   查看生成的group.ldif --> cat group.ldif

dn: cn=ldaptest1,ou=Group,dc=oldwang,dc=com
objectClass: posixGroup
objectClass: top
cn: ldaptest1
userPassword: {crypt}x
gidNumber: 502

dn: cn=ldaptest2,ou=Group,dc=oldwang,dc=com
objectClass: posixGroup
objectClass: top
cn: ldaptest2
userPassword: {crypt}x
gidNumber: 503

6.  把用戶導入至openLDAP的數據文件

7.  然后在phpLDAPadmin中查看

 在這里就已經完成把系統的賬號屬性導入了OpenLDAP,然后就通過添加OpenLDAP用戶,來進行驗證,所以得先做好客戶端的設置

五、OpenLDAP客戶端配置

1.  停掉sssd服務  service sssd stop && chkconfig sssd off

2.  安裝nslcd服務  yum install nss-pam-ldapd

3. 修改 /etc/nslcd.conf 配置文件,下邊四行在原文件中是分散開備注是的,此處合並在一起。

4.  修改 /etc/pam_ldap.conf 配置文件

 

5. 修改 /etc/pam.d/system-auth 文件,文件中添加下圖標記的行

6.   修改 /etc/nsswitch.conf  配置文件,在此三行后邊增加ldap,修改后,默認登錄的用戶通過本地配置文件進行查找並匹配。當匹配不到用戶信息時,會通過后端配置的LDAP認證服務進行匹配

 

7.  修改 /etc/sysconfig/authconfig 文件,確保標記的已打開為yes

 USESHADOW=yes 啟用密碼驗證
 USELDAPAUTH=yes 啟用OpenLDAP驗證
 USELOCAUTHORIZE=yes 啟用本地驗證
         USELDAP=yes  啟用LDAP認證協議

 

8.  重啟服務

  /etc/init.d/nslcd restart

9.  驗證,通過phpldapadmin增加一個用戶,在ldaptest1的基礎上,復制一個ldaptest3的條目。

  首先復制組的條目,也可以直接復制用戶的條目,將組掛到已有的組中。

  

  根據自己的需求更改。  

  提交,之后自行查看,會發現多了一個新的組信息

  通過ldaptest1用戶賦值一個新的用戶條目。

  此時復制一個ldaptest3

  可以看到已經成功的添加了ldaptest3的用戶,這是OpenLDAP添加的,在本地是沒有的,用cat /etc/passwd 看是沒有ldaptest3用戶的

   在/etc/pam.d/system-auth配置文件里添加這一行:session     optional      pam_mkhomedir.so skel=/etc/skel/ umask=0022

   重啟 /etc/init.d/nslcd restart

   此時我們進行測試

10.  查看系統用戶列表

客戶端查詢:ldapsearch -H ldap://172.27.1.111 -x -b "ou=People,dc=oldwang,dc=com" |grep dn

服務端查詢:ldapsearch -x -b "ou=People,dc=oldwang,dc=com" |grep dn

查詢單個用戶:ldapsearch -x -b "uid=ldaptest3,ou=People,dc=oldwang,dc=com" | grep dn

[root@rpm ~]# ldapsearch -H ldap://172.27.1.111 -x -b "ou=People,dc=oldwang,dc=com" | grep dn
dn: ou=People,dc=oldwang,dc=com
dn: uid=ldaptest1,ou=People,dc=oldwang,dc=com
dn: uid=ldaptest2,ou=People,dc=oldwang,dc=com
dn: uid=ldaptest3,ou=People,dc=oldwang,dc=com
[root@rpm ~]# ldapsearch -x -b "ou=People,dc=oldwang,dc=com" | grep dn
dn: ou=People,dc=oldwang,dc=com
dn: uid=ldaptest1,ou=People,dc=oldwang,dc=com
dn: uid=ldaptest2,ou=People,dc=oldwang,dc=com
dn: uid=ldaptest3,ou=People,dc=oldwang,dc=com
[root@rpm ~]# ldapsearch -x -b "uid=ldaptest3,ou=People,dc=oldwang,dc=com" | grep dn
dn: uid=ldaptest3,ou=People,dc=oldwang,dc=com

 六、OpenLDAP與ssh

1.  修改 /etc/ssh/sshd_config 文件

 

2.  修改 /etc/pam.d/sshd  文件,用於第一次登陸的賬戶自動創建家目錄

   添加:session    required     pam_mkhomedir.so

3.  修改 /etc/pam.d/password-auth 文件

 

4.  重啟ssh:/etc/init.d/sshd restart

 七、OpenLDAP限制用戶登錄系統

  在賬號中,不能讓每個用戶都能登錄系統,所以要限制用戶登錄

1. 修改 /etc/pam.d/sshd 文件,在這里加上pam_access.so模塊

  添加:account    required     pam_access.so

2. 修改 /etc/security/access.conf 文件,這里限制ldaptest3用戶ssh登錄系統

 

測試:可以看到只有opentest3登錄不上

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

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



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