Centos 6.8环境下OpenLDAP安装与部署

一、OpenLDAP介绍

LDAP 全称轻量级目录访问协议(英文:Lightweight Directory Access Protocol),是一个运行在 TCP/IP 上的目录访问协议。LDAP实现提供被称为目录服务的信息服务,可以看做是一张特殊的数据库系统。可以有效的解决众多网络服务的用户账户问题,规定了统一的身份信息数据库、身份认证机制和接口,实现了资源和信息的统一管理,保证了数据的一致性和完整性。

二、OpenLDAP Server 端部署

1. 安装 OpenLDAP 服务

yum -y install openldap openldap-*

OpenLDAP 配置文件信息:

  • /etc/openldap/slapd.conf:OpenLDAP的主配置文件,记录根域信息,管理员名称,密码,日志,权限等
  • /etc/openldap/slapd.d/*:这下面是/etc/openldap/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 模板数据库配置文件

2. 配置 OpenLDAP,包括准备DB_CONFIG和slapd.conf

cd /etc/openldap/
cp /usr/share/openldap-servers/slapd.conf.obsolete slapd.conf
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

3. 配置 OpenLDAP 管理员密码

$ slappasswd -s 123456
{SSHA}Ct24HfPbIOy7tqf++84CL1hfEFC6VYlk  (密码需保存,后面会用上)

4. 修改slapd.conf,主要配置dc和rootpw,rootpw配置为上述步骤中的密码

database        bdb
suffix          "dc=kwang,dc=cn"
checkpoint      1024 15
rootdn          "cn=Manager,dc=kwang,dc=cn"
rootpw       {SSHA}Ct24HfPbIOy7tqf++84CL1hfEFC6VYlk 

5. 修改目录权限

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

6. 启动slapd服务

$ /etc/init.d/slapd start
Starting slapd:                                            [  OK  ]

$ /etc/init.d/slapd status
slapd (pid  20539) is running...
$ chkconfig slapd on    # 设置开机启动

$  lsof -i:389     #检测端口是否在监听
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
slapd   20539 ldap    7u  IPv4 11741440      0t0  TCP *:ldap (LISTEN)

7. 测试/etc/openldap/slapd.conf配置是否正确

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

出现如下结果则表示配置文件已正确配置:

config file testing succeeded

三、OpenLDAP Server端安装migrationtools,创建根域目录

1. 安装migrationtools工具

migrationtools工具实现OpenLDAP用户及用户组的添加

yum install migrationtools -y

2. 编辑/usr/share/migrationtools/migrate_common.ph文件,生成基础组

将 DEFAULT_MAIL_DOMAIN 和 DEFAULT_BASE 值和 slapd.conf 文件对应。

# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "kwang.com";

# Default base 
$DEFAULT_BASE = "dc=kwang,dc=com";

3. 创建 OpenLDAP 根域条目 base.ldif 文件

对生成的 base.ldif 文件编辑,将不需要的条目删除。

dn: dc=kwang,dc=com
dc: kwang
objectClass: top
objectClass: domain

dn: ou=People,dc=kwang,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=kwang,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

4. 添加 base.ldif 到 ldap 中

ldapadd -x -D "cn=Manager,dc=kwang,dc=com" -w 123456 -f base.ldif   

5. 查询 ldap 中已添加的条目

$ ldapsearch -x -b "dc=kwang,dc=com" 
# extended LDIF
#
# LDAPv3
# base <dc=kwang,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# kwang.lan
dn: dc=kwang,dc=com
dc: kwang
objectClass: top
objectClass: domain

# People, kwang.lan
dn: ou=People,dc=kwang,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit

# Group, kwang.lan
dn: ou=Group,dc=kwang,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

# search result
search: 2
result: 0 Success

# numResponses: 4
# numEntries: 3

至此,OpenLDAP server端环境已部署。

四、OpenLDAP client端部署

客户端部署有两种方式 nslcd 和 SSSD,两种方式基本一致,SSSD相比更新,具有缓存功能,在LDAP server宕机时,依然能正常工作。因此本文主要介绍 SSSD 部署。

4.1 通过配置文件部署

1. 安装 SSSD

yum install openldap-clients nss-pam-ldapd -y
yum install authconfig sssd-ldap sssd -y 

2. 编辑 /etc/openldap/ldap.conf文件

# LDAP Defaults
#
 
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
 
BASE    dc=kwang,dc=com
URI     ldaps://<ldap-server-ip>:389/
 
#SIZELIMIT      12
#TIMELIMIT      15
#DEREF          never
 
TLS_CACERTDIR   /etc/openldap/certs

3. 编辑/etc/sssd/sssd.conf文件

[sssd]
config_file_version = 2
services = nss, pam
domains = default
debug_level = 5
   
[nss]
filter_users = root,ldap,named,avahi,haldaemon,dbus,radiusd,news,nscd
   
[domain/default]
id_provider = ldap
auth_provider = ldap
ldap_search_base = dc=kwang,dc=com
ldap_tls_reqcert = never
ldap_uri = ldaps://<ldap-server-ip>

4. 编辑/etc/nsswitch.conf文件

passwd:     files sss
shadow:     files sss
group:      files sss 

#如果本地用户和ldap用户,但是希望以ldap用户为准,file为补充时,可以修改/etc/nsswitch.conf 

 passwd: sss files
 shadow: sss files
 group: sss files

5. 编辑/etc/pam.d/system-auth 文件

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
#auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_sss.so use_first_pass
auth        required      pam_deny.so
 
account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     required      pam_permit.so
 
 
password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_sss.so use_authtok
password    required      pam_deny.so
 
 
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_sss.so
session     optional      pam_mkhomedir.so

6. 编辑/etc/pam.d/password-auth-ac 文件

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
#auth        requisite     pam_succeed_if.so uid >= 500 quiet  必须注释掉
auth        sufficient    pam_sss.so use_first_pass
auth        required      pam_deny.so
  
account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     [default=bad success=ok user_unknown=ignore] pam_sss.so
account     required      pam_permit.so
  
password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_sss.so use_authtok
password    required      pam_deny.so
  
session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_sss.so
session     optional      pam_mkhomedir.so 

7. 启动服务

chmod 600 /etc/sssd/sssd.conf
/etc/init.d/sssd restart

4.2 通过命令行部署

#安装程序
yum install openldap-clients nss-pam-ldapd -y
yum install authconfig sssd-ldap sssd -y 
 
#配置系统授权使用sss和ldap
authconfig  --enablemkhomedir \
 --enableldaptls\
 --enableldap\
 --enableldapauth\
 --ldapserver=ldaps://<ldap-server-ip>\
 --ldapbasedn="dc=kwang,dc=com"\
 --enableshadow\
 --update

#调整参数
sed -i '/uid >= 500/s/^/#/' /etc/pam.d/system-auth-ac
sed -i '/uid >= 500/s/^/#/' /etc/pam.d/password-auth-ac
sed -i '/\[domain\/default\]/a\ldap_tls_reqcert = never' /etc/sssd/sssd.conf
/etc/init.d/sssd restart

4.3 ldap 常用操作

1. 验证连通性

getent passwd kwang
id kwang

2. 缓存刷新

#一般情况手动刷新缓存
sss_cache -E
  
#sssd会将缓存信息保存在本地,特殊情况下,缓存存在冲突的情况,可以删除本地缓存,重启服务
rm -rf /var/lib/sss/db/*

至此,OpenLDAP server端和client端均已部署完成。

 

【参考资料】

[1].  CentOS6.7 安装配置LDAP Server

[2]. CentOS 6.9下OpenLDAP 的安装与配置

posted @ 2019-07-22 22:56  笨小康u  阅读(1017)  评论(0编辑  收藏  举报