一、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
{SSHA}Ct24HfPbIOy7tqf++84CL1hfEFC6VYlk (密码需保存,后面会用上)

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

database        bdb
suffix "dc=kwang,dc=cn"
checkpoint
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 ) is running...
$ chkconfig slapd on    # 设置开机启动

$  lsof -i:389     #检测端口是否在监听
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
slapd ldap 7u IPv4 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  -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:
result: Success # numResponses:
# numEntries:

至此,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() for details
# This file should be world readable but not world writable. BASE dc=kwang,dc=com
URI ldaps://<ldap-server-ip>:389/ #SIZELIMIT
#TIMELIMIT
#DEREF never TLS_CACERTDIR /etc/openldap/certs

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

[sssd]
config_file_version =
services = nss, pam
domains = default
debug_level = [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 >= 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 < 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= 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= 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 >= 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 < 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= 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= 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  /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 的安装与配置

Centos 6.8环境下OpenLDAP安装与部署的更多相关文章

  1. Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点

    Hyperledger fablic 1.0 在centos7环境下的安装与部署和动态增加节点 一.安装docker 执行代码如下: curl -sSL https://get.daocloud.io ...

  2. Docker版本与centos和ubuntu环境下docker安装介绍

    # Docker版本与安装介绍 * Docker-CE 和 Docker-EE * Centos 上安装 Docker-CE * Ubuntu 上安装 Docker-CE ## Docker-CE和D ...

  3. Redis在linux环境下的安装和部署

    官网:http://redis.io          windows版本下载地址https://github.com/MicrosoftArchive/redis/releases 1Redis建议 ...

  4. Hyperledger fablic 0.6 在centos7环境下的安装与部署

    原文:http://blog.csdn.net/zhaoliang1131/article/details/54617274 Hyperledger Fabric超级账本 项目约定共同遵守的 基本原则 ...

  5. centos / Linux 服务环境下安装 Redis 5.0.3

    原文:centos / Linux 服务环境下安装 Redis 5.0.3 1.首先进入你要安装的目录 cd /usr/local 2.下载目前最新稳定版本 Redis 5.0.3 wget http ...

  6. Linux/CentOS环境下如何安装和配置PhantomJS工作环境

    PhantomJS 是一个基于WebKit的服务器端 JavaScript API.它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, C ...

  7. CentOS环境下jdk安装部署

    1.准备jdk安装文件: 这里我使用的是 jdk-7u79-linux-x64.tar.gz 2.在 /usr/local 目录下创建 sotfware目录,并上传JDK文件: 解压文件并修改文件夹为 ...

  8. Redhat环境下编译安装Google Bazel

    Redhat环境下编译安装bazel 作者:Jack47 目前Google Bazel没有提供各个操作系统下的二进制安装包,只提供源代码,需要我们自己编译安装,详情可以见我翻译的中文版Google B ...

  9. RHEL5.6环境下yum安装MySQL

    RHEL5.6环境下yum安装MySQL记录,2017年2月20日 1.卸载原有的MySQL rpm -qa命令查询是否安装了MySQL [root@localhost mysql]# rpm -qa ...

随机推荐

  1. Linux终端彩色显示输出结果

    转义序列符 为了添加个人风格的彩色提示符,我们需要使用转义序列符.一个转义序列符是一个控制命令,它控制Shell执行某个特定的动作.一个转义序列符通常以 ESC开始,在Shell中被记录为" ...

  2. Fillder的前后端的应用

    测试需求:有一个功能,允许用钻石兑换金币,假设1钻石=1金币,前端控制一次至少兑换10个,最多100个,后台不做验证. 测试方案:输入10,也就是告诉前端我要兑换10个金币,等前端验证通过之后,截取要 ...

  3. 算法设计与分析 - 李春葆 - 第二版 - html v2

    1 .1 第 1 章─概论   1.1.1 练习题   1 . 下列关于算法的说法中正确的有( ).   Ⅰ Ⅱ Ⅲ Ⅳ .求解某一类问题的算法是唯一的   .算法必须在有限步操作之后停止   .算法 ...

  4. fsLayuiPlugin富文本编辑器使用(layedit)

    富文本编辑器基于layedit实现.演示地址:http://fslayui.itcto.cn 富文本编辑器使用 必须使用textarea标签 id必须定义 必须定义样式fsLayedit 可以通过he ...

  5. 2018VUE面试题总结

      Vue面试题 一:什么是MVVM MVVM是是Model-View-ViewModel的缩写,Model代表数据模型,定义数据操作的业务逻辑,View代表视图层,负责将数据模型渲染到页面上,Vie ...

  6. 洛谷P2279 消防局的设立【树形dp】

    题目:https://www.luogu.org/problemnew/show/P2279 题意:一棵树.在节点处建消防站,可以覆盖与他距离在2之内的节点.问最少要建多少个消防站,可以覆盖所有的节点 ...

  7. BZOJ 2095 [Poi2010]Bridges (二分+最大流判断混合图的欧拉回路)

    题面 nnn个点,mmm条双向边(正向与反向权值不同),求经过最大边权最小的欧拉回路的权值 分析 见 commonc大佬博客 精髓就是通过最大流调整无向边的方向使得所有点的入度等于出度 CODE #i ...

  8. 【51nod 1340】地铁环线

    题目 有一个地铁环线,环线中有N个站台,标号为0,1,2,...,N-1.这个环线是单行线,一共由N条有向边构成,即从0到1,1到2,..k到k+1,...,N-2到N-1,N-1到0各有一条边.定义 ...

  9. SIGAI深度学习第三集 人工神经网络2

    讲授神经网络的理论解释.实现细节包括输入与输出值的设定.网络规模.激活函数.损失函数.初始化.正则化.学习率的设定.实际应用等 大纲: 实验环节: 理论层面的解释:两个方面,1.数学角度,映射函数h( ...

  10. Proxy详解

    一.Proxy基础 1. 什么是Proxy? Proxy是一个构造函数,可以通过它生成一个Proxy实例. const proxy = new Proxy(target, handler); // t ...