LDAP-openldap服務部署和測試(YUM安裝)

1. 概述

本篇博客主要記錄如何部署一臺LDAP服務器,用於在內網集羣節點中,進行全局用戶認證。node

注:有關LDAP的理論部分,參見博客《LDAP協議詳解.md》linux

本篇博客主要的部署環境爲:CentOS6.5_x86_64部署openldap,經過YUM安裝相關環境。ios

2. 服務端部署過程

2.1 軟件包說明

軟件包 軟件包說明
openldap 服務端和客戶端必須用的庫文件
openldap-clients 在LDAP服務端使用,用戶增刪改查的命令行環境
openldap-servers 用於啓動服務和配置,包括單獨的LDAP後臺守護進程
openldap-servers-sql 支持SQL模塊
compat-openldap openldap兼容性庫環境

2.2 部署過程

虛擬機console,經過執行命令:rpm -qa | grep openldap,查看是否已經安裝openldap的軟件包:sql

openldap-clients-2.4.23-32.el6_4.1.x86_64
openldap-2.4.23-32.el6_4.1.x86_64
openldap-servers-2.4.23-32.el6_4.1.x86_64

若沒有上述軟件包,執行命令:yum -y install openldap openldap-clients openldap-servers
此過程會同時安裝依賴軟件包:libtool-ltdl,portserver軟件包shell

2.3 配置過程

  1. 複製配置文件模板,到系統配置目錄下
    cp -a /usr/share/openldap-servers/sldap.conf.obsolete /etc/openldap/slapd.conf
  2. 刪除舊的動態配置文件
    rm -rf /etc/openldap/sladp.d/*
  3. 複製數據庫配置文件模板,到系統配置目錄下
    cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
  4. 修改數據庫配置文件所在目錄屬主
    chown -R ldap.ldap /var/lib/ldap
  5. 生成加密密鑰
    虛擬機console執行命令:slappasswd
    提示New password:輸入liwanliang
    提示Re-enter new password,輸入liwanliang
    將生成的內容:{SSHA}SdorCU0SF/bBERBdPtkSVdWv94Hc826r,複製保存下來
  6. 修改主配置文件,修改內容以下:
    有關openldap的配置詳解,參見博客《LDAP-openldap配置文件詳解.md》數據庫

    database config
    access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
        by * none
    database monitor
    access to *
    by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
        by dn.exact="cn=Manager,dc=liwanliang,dc=com" read
        by * none
    database bdb
    suffix "dc=liwanliang,dc=com"
    checkpoint 1024 15
    rootdn "cn=Manager,dc=liwanliang,dc=com"
    rootpw {SSHA}SdorCU0SF/bBERBdPtkSVdWv94Hc826r
  7. 修改相關目錄屬性
    虛擬機console執行命令:chown -R ldap.ldap /etc/openldapchown -R ldap.ldap /var/lib/ldapvim

  8. 刪除舊的動態配置文件
    虛擬機console執行命令:rm -rf /etc/openldap/slapd.d/*
  9. 啓動服務並設置開機啓動
    虛擬機console執行命令:service slapd start && chkconfilg slapd on ,此時如有報錯可忽略。
    查看是否啓動服務:service slapd statusnetstat -tupln|grep slapd
  10. 動態配置文件
    openldap的動態配置文件位於/etc/openldap/slapd.d/下,每次修改了主配置文件/etc/openldap/slapd.conf以後,都須要從新生成動態配置文件,即:
    刪除動態配置文件: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/

3. 測試

上述過程已經部署好了openldap並啓動了服務,這僅是第一步,openldap有沒有工做,還須要進一步驗證和測試。
虛擬機console執行命令:ldapsearch -x -LLL;若是這個命令報錯:【No suce object(32)】,則須要修改配置文件/etc/openldap/ldap.conf
修改內容以下:後端

BASE dc=liwanliang,dc=com
URI ldap://192.168.80.8
TLS_CACERTDIR /etc/openldap/certs

上過過程說明已經基本完成了openldap的部署和測試,能夠投入使用。bash

此時還有一種狀況會產生【No suce object(32)】,即上述過程完成以後,並未經過ldapadd添加任務用戶時,也會報一樣的錯誤。服務器

此時能夠在添加用戶以後,進行配置和查看。

4. 生成LDIF格式文件

往openldap數據庫存放數據,有多種方式:1. 手動編輯;2. 用工具生成
手動編輯這裏不介紹。工具生成指的是用migrationtools腳原本產生ldif文件

4.1 安裝migrationtools工具

虛擬機console執行命令:rpm -qa | grep migrationtools,查看系統是否已經安裝migrationtools
若沒有安裝,執行命令:yum -y installl migrationtools,進行工具安裝

4.2 用migrationtools生成ldif文件

這裏是但願用openldap來實現用戶認證,所以須要把系統中存在的user和group產生ldif,添加到ldap的數據庫中。
虛擬機console執行命令:
/usr/share/migrationtools /migrate_base.pl > base.ldif
/usr/share/migrationtools/migrate_passwd.pl /etc/passwd > passwd.ldif
/usr/share/migrationtools/migrate_group.pl /etc/group > group.ldif

4.3 添加ldif到ldap數據庫

上面過程,已經將用戶認證時須要的文件/etc/passwd和/etc/group生成ldif文件。
改用ldap驗證時,就須要將這幾個文件添加到ldap數據庫中。
虛擬機console執行命令:
ldapadd -x -D "cn=Manager,dc=liwanliang,dc=com' -c -W -f base.ldif
ldapadd -x -D "cn=Manager,dc=liwanliang,dc=com" -c -W -f passwd.ldif
ldapadd -x -D "cn=Manager,dc=liwanliang,dc=com" -c -W -f group.ldif
提示輸入密碼時,輸入liwanliang,回車

5. 日誌配置

5.1 openldap的日誌級別

虛擬機console執行命令:slapd -d ?,可以看到如下內容:

各參數說明以下:

Any 開啓全部的函數調用
Trace 跟蹤Trace函數調用
Rackets 與函數包處理相關的信息
Args 全面的debug信息
Conns 連接數管理的相關信息
BER 記錄包發送和接收的信息
Filter 記錄過濾處理的過程
Config 記錄配置文件的相關信息
ACL 記錄訪問控制列表的相關信息
Stats 記錄連接,操做系統以及統計信息
Stats2 記錄向客戶端響應的統計信息
Shell 記錄與shell後端通訊信息
Parse 記錄條目的分析結果信息
Sync 記錄數據同步資源消耗信息
None 不記錄信息

5.2 配置日誌功能

  1. 修改主配置文件/etc/openldap/slapd.conf,最後一行添加:loglever -1
  2. 虛擬機console執行命令:mkdir -p /var/log/slapd && chown -R ldap.ldap /var/log/sladp
  3. 修改系統日誌配置文件,使其重定向日誌到ldap日誌目錄,vim /etc/rsyslog.conf,最後一行添加如下內容:
    local4. * /var/log/slapd/slapd.log
  4. 利用Logrotate自動切割日誌
    進入目錄/etc/logrotate.d,建立文件ldap,添加如下內容:

    /var/log/slapd/slapd.log {
        prerotate
           /usr/bin/chattr    -a    /var/log/slapd/slapd.log
        endscript
        compress
        delaycompress
        notifempty
        rotate    100
        size    10M
        postroatte
            /usr/bin/chattr    +a    /var/log/slapd/slapd.log
        endsript
    }
  5. 重啓日誌服務並觀察
    虛擬機console執行命令:service rsyslogd restart
    觀察日誌文件是否更新:tail -f /var/log/slapd/slapd.log

6. 客戶端配置

這裏的客戶端端不是指ldap命令行客戶端,而是須要經過LDAP服務器驗證的客戶端節點。
本篇博客已經部署了KVM虛擬機node11,在node11上配置採用用戶採用LDAP驗證。

6.1 基礎環境準備

關閉sssd進程,並安裝nslcd進程

注:有關NSS,NSCD,NSLCD,SSSD服務的區別,參見包括《》

虛擬機console執行命令:rpm -qa | grep nss-pam-ldapd,查看系統是否已經安裝客戶端
若未安裝,執行命令:yum -y install nss-pam-ldapd進行安裝

6.2 配置nslcd客戶端

  1. 修改nslcd.conf配置文件,vim /etc/nslcd.conf,文末添加內容以下:

    uri ldap://192.168.80.8/
    base dc=liwanliang,dc=com
    ssl no
    tls_cacertdir /etc/openldap/certs
  2. 修改pam_ldap.conf配置文件,vim /etc/pam_ldap.conf,文末添加內容以下:

    uri ldap://192.168.80.8
    ssl no
    tls_cacertdir /etc/openldap/certs
    bind_policy soft
  3. 修改系統認證的PAM配置,vim /etc/pam.d/system-auth,修改內容以下:

  4. 修更名字服務NSS配置文件,vim /etc/nssiwch.conf,修改部分以下:

    passwd:      files     ldap
    shadow:     files     ldap
    group:      files     ldap
  5. 修改系統認證方式配置文件,vim /etc/sysconfig/authconfig,修改部份內容以下:

    USESHADOW=yes    //啓用密碼驗證
    USELDAPAUTH=yes    //啓用openldap驗證
    USELOCAUTHORIZE=yes    //啓用本地驗證
    USELDAP=yes        //啓用LDAP認證協議
  6. 啓動nslcd服務進程
    虛擬機console執行命令:service iptables stop && setenforce 0,即關閉防火牆和selinux
    啓動服務,並設置開機啓動:service nslcd start && chkconfig nslcd on
  7. 客戶端驗證
    在虛擬機node11上,執行命令:id liwl01,若是獲取到liwl01的用戶信息,則說明配置成功

7. 添加系統用戶

在從此的實踐過程當中,會存在添加系統進程用戶的需求,好比部署Nagios時,須要添加nagios和nagioscmd用戶;
部署slurm任務調度系統時,須要添加munge和slurmadmim用戶等。
這裏就須要利用migrationtools來實現往LDAP服務器中添加用戶,而後實現全局認證便可。具體過程以下:

7.1 添加用戶

這裏添加用戶liwl02
在虛擬機console中執行命令:useradd -u 501 liwl02
給liwl02添加密碼:passwd liwl02,輸入密碼兩次完成密碼添加

7.2 產生ldif文件

由於已經生成了base.ldif文件,這次添加用戶,再也不須要生成base.ldif文件
虛擬機console執行命令:
migrate_passwd.pl /etc/passwd > passwd.ldif,該命令建立passwd.ldif
migrate_group.pl /etc/group > group.ldif,該命令建立group.ldif
編輯passwd.ldif,只保留如下部份內容,其他刪除:

dn: uid=liwl02,ou=People,dc=liwanliang,dc=com
uid: liwl02
cn: liwl02
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$VKwyR9xY$GmXIUT9zJqE5/foaPKwgoDPfXS8XnkG1WcqjHoNBmLcMUvbyrOV6BVLXEmc6K140BM9r4fHAL33ZxSzWiZ8c//
shadowLastChange: 17699
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 501
gidNumber: 501

編輯group.ldif,只保留如下部分,其他刪除:

dn: cn=liwl02,ou=Group,dc=liwanliang,dc=com
objectClass: posixGroup
objectClass: top
cn: liwl02
userPassword: {crypt}x
gidNumber: 501

7.3 添加ldif文件至LDAP數據庫中

虛擬機console執行命令, 添加兩個文件中新加的內容:
ldapadd -x -D "cn=Manager,dc=liwanliang,dc=com" -c -W -f passwd.ldif
ldapadd -x -D "cn=Manager,dc=liwanliang,dc=com" -c -W -f group.ldif
輸入密碼liwanliang便可添加進入

7.4 驗證

在虛擬機node11上,經過執行命令id liwl02驗證是否添加成功

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

相關文章
相關標籤/搜索