精华内容
下载资源
问答
  • OpenLDAP安装部署
    2022-01-11 15:01:22

    环境

    系统版本:
    CentOS Linux release 7.6.1810 (Core)
    
    OpenLDAP版本:
    OpenLDAP: slapd 2.4.44
    
    LDAP服务端IP:192.168.75.129

    一、安装相关软件

    1、使用yum安装

    [root@xph ~]# yum install -y openldap openldap-clients openldap-servers compat-openldap openldap-devel

    2、安装libdb相关依赖

    [root@xph ~]# yum -y install libdb.x86_64 libdb-devel.x86_64

    3、拷贝数据库配置文件

    [root@xph ~]# cp /usr/share/openldap-servers/DB_CONFIG.example  /var/lib/ldap/DB_CONFIG

    4、授权给ldap用户(yum安装会自动创建)

    [root@xph ~]# chown -R ldap:ldap /var/lib/ldap/DB_CONFIG 

    5、启动ldap服务

    [root@xph ~]# systemctl start slapd && systemctl enable slapd

    6、查看状态

    [root@xph ~]# systemctl status slapd

    二、修改管理者密码

    1、生成管理员密码(记录下这个密码,后面需要用到)

    更多相关内容
  • openldap安装

    2021-10-19 18:44:37
    文章目录1 生产服务器硬件配置需求2 openldap master服务安装3 ldap参数配置优化。3.1 配置ldap管理员密码参数3.2 日志及缓存参数。3.4 配置syslog记录ldap服务日志配置syslog3.5 配置LDAP数据库路径3.6 查看...

    1 生产服务器硬件配置需求

    ldap服务对系统环境的要求不高,一般在生产场景,ldap服务应该最少是两台,这样某一台物理服务器岩机才不会因单点问题影响生产业务故障,下面是在工作中单台的硬件配置参考:

    设备名称配置描述
    CPU一颗四核至强处理器 Intel(R)Xeon(R)CPU E5606@2.13GHz
    MEM8GB(2×4GB)667MHz
    RaidSAS Raid 10/Raid0 SAS6I Raid卡(支持1/0/5/6/10)。
    DISK 146GBx1 3.5英寸SAS硬盘 15k

    操作系统:Centos7/8 64bit。

    操 作 系 统其 它
    CentOS-7.6当前很稳定且免费的Linux版本。

    网卡及IP资源

    名 称接 口IP用途
    ldap主服务器01eth010.0.0.17外部管理IP,用于WAN数据转发。
    eth110.0.0.17备用管理IP,用于LAN内数据转发。
    ldap从服务器02eth010.0.0.8管理IP,用于LAN数据转发。
    eth110.0.0.18外部管理IP,用于WAN数据转发。

    Tips:内外网IP分配可采用最后8位相同的方式,这样使于管理。


    2 openldap master服务安装

    yum 安装OpenLDAP组件

    yum install -y \
    openldap \
    openldap-servers \
    openldap-clients \
    openldap-devel \
    compat-openldap
    

    默认OpenLdap服务所使用的端口为389,此端口采用明文传输数据,数据信息得不到保障。所以可以通过配置CA及结合TLS/SASL实现数据加密传输,所使用端口为636。

    编译安装

    yum install -y \
    libtool-ltdl \
    libtool-ltdl-devel \
    gcc \
    openssl \
    openssl-devel
    

    重新生成配置文件

    slapadd -n 0 -F /etc/openldap/slapd.d -l /etc/openldap/slapd.ldif
    

    Openldap依赖的相关软件:

    • http://www.openldap.org/doc/admin24/install.html

    3 ldap参数配置优化。

    3.1 配置ldap管理员密码参数

    • /etc/openldap/slapd.d/*/etc/openldap/slapd.ldif配置信息生成的文件,每修改一次配置信息,这里的东西就要重新生成。
    • /var/lib/ldap/*:OpenLDAP的数据文件。
    • /usr/share/openldap-servers/DB_CONFIG.example:模板数据库配置文件。
    • /usr/share/openldap-servers/slapd.ldif:默认模板配置文件。

    默认OpenLdap服务所使用的端口为389,此端口采用明文传输数据,数据信息得不到保障。所以可以通过配置CA及结合TLS/SSL实现数据加密传输,所使用端口为636

    cp /usr/share/openldap-servers/slapd.ldif /etc/openldap/
    

    指定密码,不提示

    [root@node06 openldap]# slappasswd -s 123 
    {SSHA}OHmKWcXD6YUDEPhCK9W5ut8EK2esIaNF
    
    # 指定要搜索的后缀
    olcSuffix: dc=etiantian,dc=org
    # rootdn,使用这个dn可以登录服务器
    olcRootDN: cn=admin,dc=etiantian,dc=org
    olcDbDirectory: /var/lib/ldap
    # 指定ldapserver管理员密码==
    olcRootPW: {SSHA}OHmKWcXD6YUDEPhCK9W5ut8EK2esIaNF
    

    3.2 日志及缓存参数。

    # 设置日志级别,记录日志信息方便调试 stats 256(日志连接/操作/结果) 
    olcLogLevel: stats
    
    # 设置ldap可以缓存的记录数
    olcDbCacheSize: 1000
    
    # checkpoint 可以吧内存中的数据写会数据文件的操作,此设置表示每达到2048kb或者10分钟执行一次
    olcDbCheckpoint: 1024 10
    
    include: file:///etc/openldap/schema/collective.ldif   # OpenLDAP的核心schema必须
    include: file:///etc/openldap/schema/corba.ldif # 
    include: file:///etc/openldap/schema/cosine.ldif
    include: file:///etc/openldap/schema/duaconf.ldif
    include: file:///etc/openldap/schema/dyngroup.ldif
    include: file:///etc/openldap/schema/inetorgperson.ldif
    include: file:///etc/openldap/schema/java.ldif
    include: file:///etc/openldap/schema/misc.ldif
    include: file:///etc/openldap/schema/nis.ldif
    include: file:///etc/openldap/schema/openldap.ldif
    include: file:///etc/openldap/schema/pmi.ldif
    include: file:///etc/openldap/schema/ppolicy.ldif
    

    ###3.3 授权及安全参数配置

    access to dn="cn=subschema" by * read
    access to 
        by self write 
        by dn subtree="ou=sysusers,dc=intra,dc=qq,dc=com" read
        by anonymous auth
    

    权限管理的说明

    • http://www.openldap.org/doc/admin24/access-control.html

    提示:

    参数在文件中的先后位置不能随意动。

    空行和以“#”开头的注释行将被忽略。如果一行以空格开头,它将被认为是接着前一行的(即使前一行是注释)。


    官方配置文件详解:

    • http://www.openldap.org/doc/admin24/guide.html#Configuring%20slapd
    • http://www.openldap.org/software/man.cgi?query=slapd-config&sektion=5&apropos=0&manpath=OpenLDAP+2.4-Release

    3.4 配置syslog记录ldap服务日志配置syslog

    记录ldap服务日志,默认级别为256;

    echo 'local4.*          /var/log/slapd.log' >> /etc/rsyslog.conf
    
    local4.*                /var/log/slapd.log
    

    3.5 配置LDAP数据库路径


    注意

    slapd.conf中设定了LDAP数据库格式为hdb,存储路径/var/1ib/ldap


    cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
    
    chown ldap.ldap /var/lib/ldap/DB_CONFIG
    chmod 700 /var/lib/ldap/DB_CONFIG
    

    3.6 查看OpenLDAP 数据库

    此时要查看OpenLDAP数据库,会发现没有内容

    ldapsearch -LLL -x -W -H ldap://10.0.0.4 -D "cn=admin,dc=seal,dc=com" -b "dc=seal,dc=com" "(uid=*)"
    
    Enter LDAP Password: 
    No such object (32)
    

    Reference

    • http://www.openldap.org/faq/data/cache/1.html
    • http://www.openldap.org/doc/admin24/appendix-common-errors.html

    4 为OpenLDAP初始化数据

    通过OpenLDAP客户端工具来初始化数据经过长期的使用、教学比对,第三种方法比较适合初学者学习掌握,不过本文以最简单的不好理解的方法讲解。

    为ldap master 初始化基础用户数据。

    通过事先准备好的文件初始化数据。

    cat << EOF | ldapadd -x -H ldaps://10.0.0.4 -D "cn=admin,dc=seal,dc=com" -W 
    dn: dc=seal,dc=com
    objectClass: organization
    objectClass: dcObject
    dc: seal
    o: seal
    
    dn: ou=People,dc=seal,dc=com
    objectClass: organizationalUnit
    ou: People
    
    dn: ou=group,dc=seal,dc=com
    objectClass: organizationalUnit
    ou: group
    
    dn: cn=tech,ou=group,dc=seal,dc=com
    objectClass: posixGroup
    gidNumber: 10001
    cn: tech
    EOF
    
    cat << EOF | ldapadd -x -H ldaps://10.0.0.4 -D "cn=admin,dc=seal,dc=com" -W 
    dn: cn=test_admin,ou=Group,dc=seal,dc=com
    objectClass: groupOfUniqueNames
    cn: test_admin
    uniqueMember: cn=test_admin,ou=Group,dc=seal,dc=com
    EOF
    

    一个条目的完整信息

    cat << EOF | ldapadd -x -H ldaps://10.0.0.4 -D "cn=admin,dc=seal,dc=com" -W 
    dn: uid=user01,ou=People,dc=seal,dc=com
    objectClass: posixAccount
    objectClass: inetOrgPerson
    objectClass: organizationalPerson
    objectClass: person
    homeDirectory: /home/user01
    loginShell: /bin/bash
    uid: user01
    cn: user01
    uidNumber: 10004
    gidNumber: 10001
    userPassword: {SSHA}hJpIIVxj1qS9g05qUlgG+o7MO14EXbFQ
    sn: user01
    givenName: user01
    
    dn: uid=oldgirl,ou=People,dc=seal,dc=com
    objectClass: posixAccount
    objectClass: inetOrgPerson
    objectClass: organizationalPerson
    objectClass: person
    homeDirectory: /home/oldgirl
    loginShell: /bin/bash
    uid: oldgirl
    cn: oldgirl
    userPassword: {SSHA}2pvE4C6xy8dkmW2aD/eEocVajg8BujWW
    uidNumber: 10005
    gidNumber: 10001
    sn: oldgirl
    EOF
    

    提示:

    • 以上信息中ldap用户1:user01密码111,用户2:oldgirl 密码123456
    • 这些原始信息是如何获得的?

    3.8.3检查初始化的ldap测试数据。

    查询导入的结果:

    ldapsearch -LLL -w 123 -x -H ldap://10.0.0.4 -D "cn=admin,dc=seal,dc=com" -b "dc=seal,dc=com"
    

    ldapsearch命令参数说明

    参数说 明
    -W指定密码,交互式,不需要在命令上写密码
    -w指定密码,需要命令上指定密码
    -Hldapapi
    -D所绑定的服务器的DN,如cn=admin,dc=etiantian,dc=org
    -f-f: filename.ldif文件
    -b-b 指定查询的相对节点
    -LLL以LDIF格式打印响应,不带注释
    -x简单的认证

    备份ldap数据库数据

    ldapadd -x -H ldap://etiantian.org -D "cn=admin,dc=etiantian,dc=org" -W -f base.ldif >base.ldif
    ldapadd -x -H ldap://etiantian.org -D "cn=admin,dc=etiantian,dc=org" -W -f test.ldif >test.ldif
    

    ldapsearch -x -H ldaps://10.0.0.4 -W -D “cn=admin,dc=seal,dc=com” -b “dc=seal,dc=com” ‘(uid=user1)’

    展开全文
  • windows下OpenLdap安装及使用
  • openldap安装部署

    2020-04-15 11:42:00
    OPENLDAP安装部署 这里,举例:有5台机器,选择其中一台安装openldap的服务端,然后在所有的机器都得安装openldap的客户端。 2.1. openldap服务端安装 2.1.1. openldap服务端必要软件安装 1.使用yum命令安装 # yum ...

    1. LDAP概述

    1.1. LDAP基本概念

    LDAP的目的是为各种软件提供统一标准的认证机制,所有软件就可以不再用独有的用户管理方法,而是通过这种统一的认证机制进行用户认证。

    1.2. LDAP的主要应用场景

    • 网络服务:DNS服务
    • 统一认证服务
    • Linux PAM(ssh,login, cvs…)
    • Apache访问控制
    • 各种服务登录(ftpd, php based, perl based, python based…)
    • 个人信息类,比如地址簿
    • 服务器信息,如账号管理,邮件服务等

    1.3. LDAP的用户管理示例

    管理多台Linux服务器时,如果每台服务器都有自己独立的用户名和密码,那么记忆和维护这些信息就非常具有挑战性。举例: 每次学生上机的座位可能都不同,用户名和密码等相关的信息经常被修改。如果相互配合不好,就很容易造成有些人无法登录,并且学生的文件资料也难以保存。通过将老师使用的电脑配置成为LDAP和NFS服务器,为所有的学生提供密码验证服务来解决这个问题。

    轻量级目录访问协议(LDAP)提供了安全、可靠的账号管理。Linux发行版中提供的OpenLDAP软件安装一个客户机/服务器模型实现了轻量级目录访问协议(LDAP)

    1.4. LDAP的基本模型

    LDAP的基本模型是建立在"条目"(Entry)的基础上。一个条目是一个或多个属性的集合,并且具有一个全局唯一的"可区分名称"(用dn表示)。与关系型数据(后面简称数据库)进行类比,一个条目相当于数据库中的一条记录,而dn相当于数据库中记录的关键字,属性相当于数据库中的字段。

    温馨提示:dn必须是全局唯一的。

    LDAP中,将数据组织成一个树形结构,这与现实生活中的很多数据结构可以对应起来,而不像设计关系型数据库的表,需要进行多种变化。如下图所展示的就是一个树形结构的数据。

    在上图所示的树形结构中,树的根结点是一个组织的域名(node3.com,可以根据自己意愿配),其下分为2个部分,分别是ou=admin和dc=hdp,dc=hdp下面又分ou=people和ou=group。admin用来管理所有管理人员,people用来管理登录系统的用户,group用来管理系统中的用户组。当然,在该图中还可继续增加其他分支。

    对于图中所示的树形结构,使用关系数据库来保存数据的话,需要设置多个表,一层一层分别保存,当需要查找某个信息时,再逐层进行查询,最终得到结果。

    若使用目录来保存该图中的数据,则更直观。图中每个结点用一个条目来保存,不同类型的结点需要保存的数据可能不同,在LDAP中通过一个称为objectClass的类型来控制不同结点需要的数据(称为属性)。

    1.5. LDAP的工作模型

    openLDAP工作模型解释如下:

    1. 客户端向OpenLDAP服务器发起验证请求;
    2. 服务器接受用户请求后,并通过slapd进程向后端的数据库进行查询;
    3. slapd将查询的结果返回给客户端即可。如果有缓存机制,服务器端会先将查询的条目进行缓存,然后再发给客户端。

    2. OPENLDAP安装部署

    这里,举例:有5台机器,选择其中一台安装openldap的服务端,然后在所有的机器都得安装openldap的客户端。

    2.1. openldap服务端安装

    2.1.1. openldap服务端必要软件安装

    1.使用yum命令安装

    # yum install -y openldap openldap-clients openldap-servers compat-openldap openldap-devel

    2. 安装libdb相关依赖

    # yum -y install libdb.x86_64 libdb-devel.x86_64

    3. 复制一个默认配置到指定目录下,并授权,这一步一定要做,然后再启动服务,不然生成密码时会报错

    # cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

    4. 授权给ldap用户,此用户yum安装时便会自动创建

    # chown -R ldap. /var/lib/ldap/DB_CONFIG

    5. 启动ldap server服务,先启动服务,配置后面再进行修改

    # systemctl start slapd
    # systemctl enable slapd

    6. 查看状态,正常启动则OK

    # systemctl status slapd

    2.1.2.  修改管理者密码

    从openldap2.4.23版本开始,所有配置都保存在/etc/openldap/slapd.d目录下的cn=config文件夹内,不再使用slapd.conf作为配置文件。配置文件的后缀为ldif,且每个配置文件都是通过命令自动生成的,任意打开一个配置文件,在开头都会有一行注释,说明此为自动生成的文件,请勿编译,使用ldapmodify命令进行修改。

    安装openldap后,会有三个命令用于修改配置文件,分别为ldapadd,ldapmodify,ldapdelete,顾名思义就是添加,修改和删除。而需要修改或增加配置时,则需要先写一个ldif后缀的配置文件,然后通过命令将写的配置更新到slapd.d目录下的配置文件中去,完整的配置过程如下:

    1. 生成管理员密码,记录下这个密码,后面需要用到

    # slappasswd -s 123456
    {SSHA}kUhPHG2ffoZKzwl/pUxQg6W+WaFwpjQ/

    2. 新增修改密码文件,ldif为后缀,不要在/etc/openldap/slapd.d目录下创建类似文件,生成的文件为需要通过命令去动态修改ldap现有配置,如下,在用户目录~下,创建文件

    # cd ~
    # vim changepwd.ldif
    dn: olcDatabase={0}config,cn=config
    changetype: modify
    add: olcRootPW
    olcRootPW: {SSHA}kUhPHG2ffoZKzwl/pUxQg6W+WaFwpjQ/

    密码修改配置文件内容解释:

    第一行执行配置文件,这里就表示指定为 cn=config/olcDatabase={0}config文件。到/etc/openldap/slapd.d/目录下就能找到此文件。

    第二行 changetype 指定类型为修改

    第三行 add表示添加 olcRootPW 配置项

    第四行指定 olcRootPW配置项的值

    在执行下面的命令前,可以查看原本的olcDatabase={0}config文件,里面是没有olcRootPW这个项的,执行命令后,你再看就会新增olcRootPW项,而且内容是我们文件中指定的值加密后的字符串

    3. 执行命令,修改ldap配置,通过-f 执行文件

    # ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif

    4. 执行修改命令后,有如下输出则为正常:

    查看olcDatabase={0}config内容,cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif,新增了一个olcRootPW项

    2.1.3. 导入基本schema

    我们需要向ldap中导入一些基本的schema。这些schema文件位于/etc/openldap/schema/目录中,schema控制着条目拥有哪些对象类和属性,可以自行选择需要的进行导入。依次执行下面的命令,导入基础的一些配置,我这里将所有的都导入一下,其中core.ldif是默认已经加载了的,不用导入。

    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif
    # ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif

    2.1.4. 修改域名

    修改域名,新增changedomain.ldif,这里自定义的域名为node1.com,管理员用户账号为admin。如果要修改,则修改文件中相应的dc=node3.com,dc=com为自己的域名。

    # vim changedomain.ldif
    dn: olcDatabase={1}monitor,cn=config
    changetype: modify
    replace: olcAccess
    olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=admin,dc=node3,dc=com" read by * none
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    replace: olcSuffix
    olcSuffix: dc=node3,dc=com
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    replace: olcRootDN
    olcRootDN: cn=admin,dc=node3,dc=com
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    replace: olcRootPW
    olcRootPW: {SSHA}w9g8YjPiphKbTeuTC0xTcVyrH6I6XXBe
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    add: olcAccess
    olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=node3,dc=com" write by anonymous auth by self write by * none
    olcAccess: {1}to dn.base="" by * read
    olcAccess: {2}to * by dn="cn=admin,dc=node3,dc=com" write by * read

    执行命令,修改配置

    # ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif

    最后这里有5个修改,所以执行会输出5行表示成功

    2.1.5. 启用memberof功能

    新增add-memberof.ldif,#开启memberof支持并新增用户支持memberof配置

    # vim add-memberof.ldif
    dn: cn=module{0},cn=config
    cn: module{0}
    objectClass: olcModuleList
    objectclass: top
    olcModuleload: memberof.la
    olcModulePath: /usr/lib64/openldap
    
    dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config
    objectClass: olcConfig
    objectClass: olcMemberOf
    objectClass: olcOverlayConfig
    objectClass: top
    olcOverlay: memberof
    olcMemberOfDangling: ignore
    olcMemberOfRefInt: TRUE
    olcMemberOfGroupOC: groupOfUniqueNames
    olcMemberOfMemberAD: uniqueMember
    olcMemberOfMemberOfAD: memberOf

    新增refint1.ldif文件

    # vim refint1.ldif
    dn: cn=module{0},cn=config
    add: olcmoduleload
    olcmoduleload: refint

    新增refint2.ldif文件

    # vim refint2.ldif
    dn: olcOverlay=refint,olcDatabase={2}hdb,cn=config
    objectClass: olcConfig
    objectClass: olcOverlayConfig
    objectClass: olcRefintConfig
    objectClass: top
    olcOverlay: refint
    olcRefintAttribute: memberof uniqueMember  manager owner

    依次执行下面命令,加载配置,顺序不能错

    # ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add-memberof.ldif
    # ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif
    # ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif

    至此,配置修改完了。

    2.1.6. 创建node3组织

    在上述基础上,我们来创建一个node3 company的组织,node3为域名,并在其下创建一个admin的组织角色(该组织角色内的用户具有管理整个LDAP的权限)和People和Group两个组织单元:

    # vim node3.ldif
    dn: dc=node3,dc=com
    dc: node3
    objectClass: top
    objectClass: domain
    o: node3
    
    dn: cn=admin,dc=node3,dc=com
    objectClass: organizationalRole
    cn: admin
    description: LDAP admin
    
    dn: dc=hdp,dc=node3,dc=com
    changetype: add
    dc: hdp
    objectClass: top
    objectClass: dcObject
    objectClass: organization
    o: hdp
    
    dn: ou=People,dc=hdp,dc=node3,dc=com
    ou: People
    objectClass: organizationalUnit
    
    dn: ou=Group,dc=hdp,dc=node3,dc=com
    ou: Group
    objectClass: organizationalUnit

    执行命令,添加配置,这里要注意修改域名为自己配置的域名,然后需要输入上面我们生成的密码

    # ldapadd -x -D cn=admin,dc=node3,dc=com -W -f node3.ldif

    添加结果为:

     注:这里的LDAP密码为节点2.2.2.1配置的管理者密码

    通过以上的所有步骤,我们就设置好了一个LDAP目录树:其中基准dc=node3,dc=com是该树的跟节点,其下有一个管理域cn=admin,dc=node3,dc=com和一个组织单元dc=hdp,dc=node3,dc=com, 其下有两个子属性ou=People,dc=hdp,dc=node3,dc=com及ou=Group,dc=hdp,dc=node3,dc=com。

    2.1.7. 创建新用户和新用户组的ldif文件

    先生成一个密码123456:

    # slappasswd -s 123456
    {SSHA}32S2uLFahPZMqMzVYhT8fOKOp8RzremG

    创建新用户的ldif文件

    # vim ldapuser.ldif
    
    #这里testUser用户,我将其加入到testgroup组中
    # create new
    # replace to your own domain name for "dc=***,dc=***" section
    dn: uid=testldap,ou=People,dc=hdp,dc=node3,dc=com
    objectClass: inetOrgPerson
    objectClass: posixAccount
    objectClass: shadowAccount
    uid: testldap
    cn: testgroup
    sn: test
    userPassword: {SSHA}32S2uLFahPZMqMzVYhT8fOKOp8RzremG
    loginShell: /bin/bash
    uidNumber: 2000
    gidNumber: 3000
    homeDirectory: /home/testldap
    
    #这是添加一个用户组名为testgroup的cn,在名为Group的ou下
    dn: cn=testgroup,ou=Group,dc=hdp,dc=node3,dc=com
    objectClass: posixGroup
    cn: testgroup
    gidNumber: 3000
    memberUid: testldap

    向openldap服务端添加新用户testldap

    # ldapadd -x -D cn=admin,dc=node3,dc=com -W -f ldapuser.ldif

    为该用户修改密码为123456命令为:

    # ldappasswd -x -H ldap://192.168.1.107:389 -D "cn=admin,dc=node3,dc=com" -W "uid=testldap,ou=People,dc=hdp,dc=node3,dc=com" -s 123456

    注:

    • ldap://192.168.1.107:389为openldap的服务端ip加端口;
    • cn=admin,dc=node3,dc=com为openldap上面设置的管理者节点;
    • uid=testldap,ou=People,dc=hdp,dc=node3,dc=com为用户id;
    • 123456为修改指定的用户密码。

    2.2. OpenLDAP客户端安装

    2.2.1. OpenLDAP客户端安装必要软件

    使用yum命令安装

    # yum install -y openldap openldap-clients sssd nss-pam-ldapd

    2.2.2.OpenLDAP客户端NSS服务配置

    1. 修改/etc/nslcd.conf

    # vim /etc/nslcd.conf
    uid nslcd
    gid ldap
    uri ldap://192.168.1.107:389
    # ldap目录树的基准
    base dc=node3,dc=com
    # ldap的管理域
    binddn cn=admin,dc=node3,dc=com
    # ldap管理者密码
    bindpw 123456
    ssl no
    tls_cacertdir /etc/openldap/cacerts

    2. 启动服务并设置开机自启动

    # chmod 600 /etc/nslcd.conf
    # systemctl start nslcd
    # systemctl enable nslcd

    3. 配置/etc/nsswitch.conf

    # vim /etc/nsswitch.conf
    #passwd:     files sss 
    #shadow:     files sss
    #group:      files sss
    #initgroups: files sss
    passwd:     files ldap
    shadow:     files ldap
    group:      files ldap
    hosts:      files dns myhostname
    bootparams: nisplus [NOTFOUND=return] files
    
    ethers:     files
    netmasks:   files
    networks:   files
    protocols:  files
    rpc:        files
    services:   files sss
    
    #netgroup:   files sss
    netgroup:   nisplus sss
    publickey:  nisplus
    automount:  files nisplus sss
    aliases:    files nisplus

    4. 测试是否可用

    # getent passwd | grep testldap
    testldap:x:2000:3000:testgroup:/home/testldap:/bin/bash

    2.2.3. OpenLDAP客户端SSSD服务配置

    1. 修改/etc/sssd/sssd.conf文件,在执行authconfig命令时默认生成,如果文件不存在则新建,文件内容如下:

    # vim /etc/sssd/sssd.conf
    [domain/default]
    autofs_provider = ldap
    ldap_schema = rfc2307bis
    krb5_realm = REDPEAK.COM
    ldap_search_base = dc=node3,dc=com
    krb5_server = 192.168.1.107
    id_provider = ldap 
    auth_provider = ldap
    chpass_provider = ldap
    ldap_uri = ldap://192.168.1.107:389
    ldap_id_use_start_tls = False
    cache_credentials = True
    ldap_tls_cacertdir = /etc/openldap/cacerts
    [sssd]
    services = nss, pam, autofs
    domains = default
    
    [nss]
    homedir_substring = /home
    
    [pam]
    
    [sudo]
    
    [autofs]
    
    [ssh]
    
    [pac]
    
    [ifp]
    
    [secrets]

    2. 修改sssd.conf文件权限

    # chmod 600 /etc/sssd/sssd.conf

    3. 启动sssd服务并加入系统自启动

    # systemctl start sssd
    # systemctl enable sssd
    # systemctl status sssd

    2.2.4. OpenLDAP与SSH集成

    1. 修改配置文件/et    c/ssh/sshd_config,是ssh通过pam认证账号

    PasswordAuthentication yes
    
    UsePAM yes

    注意:默认使用的是密码认证方式,在集成SSH登录时需要确保PasswordAuthentication yes配置为yes。

    2. 修改配置文件/etc/pam.d/sshd,以确认调用pam认证文件

    # vim /etc/pam.d/sshd
    #%PAM-1.0
    auth       required     pam_sepermit.so
    auth       substack     password-auth
    auth       include      postlogin
    # Used with polkit to reauthorize users in remote sessions
    -auth      optional     pam_reauthorize.so prepare
    account    required     pam_nologin.so
    account    include      password-auth
    password   include      password-auth
    # pam_selinux.so close should be the first session rule
    session    required     pam_selinux.so close
    session    required     pam_loginuid.so
    # pam_selinux.so open should only be followed by sessions to be executed in the user context
    session    required     pam_selinux.so open env_params
    session    required     pam_namespace.so
    session    optional     pam_keyinit.so force revoke
    session    include      password-auth
    session    include      postlogin
    #加入此行后确保登录成功后创建用户的home目录
    session    required     pam_mkhomedir.so
    # Used with polkit to reauthorize users in remote sessions
    -session   optional     pam_reauthorize.so prepare

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

    # vim /etc/pam.d/password-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        required      pam_faildelay.so delay=2000000
    auth        [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok] pam_localuser.so
    auth        sufficient    pam_unix.so nullok try_first_pass
    auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
    #auth        sufficient    pam_sss.so forward_pass
    auth        sufficient    pam_ldap.so forward_pass
    auth        required      pam_deny.so
    
    account     required      pam_unix.so broken_shadow
    account     sufficient    pam_localuser.so
    account     sufficient    pam_succeed_if.so uid < 1000 quiet
    #account     [default=bad success=ok user_unknown=ignore] pam_sss.so
    account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
    
    account     required      pam_permit.so
    
    password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
    password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
    #password    sufficient    pam_sss.so use_authtok
    password    sufficient    pam_ldap.so use_authtok
    
    password    required      pam_deny.so
    
    session     optional      pam_keyinit.so revoke
    session     required      pam_limits.so
    -session     optional      pam_systemd.so
    session     optional      pam_mkhomedir.so umask=0077
    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_ldap.so

    4. 修改配置文件/etc/pam.d/system-auth配置文件

    # vim /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        required      pam_faildelay.so delay=2000000
    auth        sufficient    pam_fprintd.so
    auth        [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet
    auth        [default=1 ignore=ignore success=ok] pam_localuser.so
    auth        sufficient    pam_unix.so nullok try_first_pass
    auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
    #auth        sufficient    pam_sss.so forward_pass
    auth        sufficient    pam_ldap.so forward_pass
    auth        required      pam_deny.so
    
    account     required      pam_unix.so broken_shadow
    account     sufficient    pam_localuser.so
    account     sufficient    pam_succeed_if.so uid < 1000 quiet
    #account     [default=bad success=ok user_unknown=ignore] pam_sss.so
    account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
    account     required      pam_permit.so
    
    password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
    password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
    #password    sufficient    pam_sss.so use_authtok
    password    sufficient    pam_ldap.so use_authtok
    password    required      pam_deny.so
    
    session     optional      pam_keyinit.so revoke
    session     required      pam_limits.so
    -session     optional      pam_systemd.so
    session     optional      pam_mkhomedir.so umask=0077
    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_ldap.so

    5. 重启ssh、sssd和nslcd

    # systemctl restart sshd
    # systemctl restart sssd
    # systemctl restart nslcd

    到此为止就完成了OpenLDAP与SSH的集成

    2.2.5. 验证SSH登录

    随便登录一台机器

    1. 确认testldap用户只存在于OpenLDAP

    # more /etc/passwd |grep testldap
    # id testldap
    uid=2000(testldap) gid=2000(testgroup) groups=2000(testgroup)

    2. su切换至testldap用户

    # su testldap
    # id testldap
    uid=2000(testldap) gid=2000(testgroup) groups=2000(testgroup)

    3. ssh登录

    # ssh testldap@node2
    testldap@node2's password: 
    Last failed login: Mon Jan 20 17:16:03 CST 2020 from node2 on ssh:notty
    There were 3 failed login attempts since the last successful login.
    Last login: Mon Jan 20 17:14:51 2020 from node2
    [testldap@node2 ~]$ pwd
    /home/testldap
    [testldap@node2 ~]$ id
    uid=2000(testldap) gid=3000(testgroup) groups=3000(testgroup)

    3. 总结

    【参考资料】

    https://www.cnblogs.com/somata/p/LinuxLDAPUserAuthentication.html 配置Linux使用LDAP用户认证(本地登录成功示例)

    https://cloud.tencent.com/developer/article/1100823  如何在RedHat7中实现OpenLDAP集成SSH登录并使用sssd同步用户 (ssh登录成功示例)

    https://blog.csdn.net/weixin_41004350/article/details/89521170 失败案例

    https://blog.csdn.net/u010783533/article/details/88572697 搭建ldap

    https://segmentfault.com/a/1190000010270703 php ldap扩展

    https://www.cnblogs.com/jpfss/p/11021948.html Linux下LDAP统一认证解决方案

    https://blog.csdn.net/u011607971/article/details/86153608 LDAP_ACCOUNT_MANAGER安装

    https://www.cnblogs.com/zsql/p/11759422.html 离线安装openldap,解决yum命令后出现libldap-2.4.so.2: cannot open shared object file

    https://www.jianshu.com/p/e196b75a47a2 centos7 限制ldap用户登陆主机

    https://blog.mowd.tw/p/844 Ubuntu 設定 LDAP + PAM + NFS 實現多台電腦單一帳號驗證

    https://cloud.tencent.com/developer/article/1026304 Centos7.2下针对LDAP的完整部署记录

    https://blog.csdn.net/dqatsh/article/details/2961758 使用OpenLDAP实现集中用户认证

    http://www.ttlsa.com/linux/openldap-openssh-lpk-sudo-tls-auth/ LINUX下基于LDAP集中系统用户认证系统

    https://www.cnblogs.com/dufeixiang/p/11624210.html linux 利用LDAP身份集中认证

    https://boke.wsfnk.com/archives/433.html 如何添加用户条目 Add Users 及如何将本地linux账户添加至ldap条目树中

    https://www.cnblogs.com/lfdblog/p/9805245.html  ldap 用户组和用户

    https://cloud.tencent.com/developer/article/1078660 如何在OpenLDAP中实现将一个用户添加到多个组

    https://blog.csdn.net/listen2you/article/details/82706921 启用OpenLDAP的memberOf特性

    http://www.ldap.org.cn/296.html

    https://www.jianshu.com/p/e196b75a47a2

    展开全文
  • openldap安装手册.docx

    2021-11-02 10:23:55
    含搭建流程 automount nfs sudo autofs自动挂载 ssh
  • OpenLDAP安装使用及与各系统的集成

    千次阅读 2021-12-20 11:13:00
    OpenLDAP安装使用及与各系统的集成 公司内部运行着各个系统,如:jira、jenkins、svn、gitlab等等,每次有新同事入职,运维人员都需要在各个系统中添加或者删除用户,非常的不方便。为了解决频繁去各个系统中创建和...

    OpenLDAP安装使用及与各系统的集成

    公司内部运行着各个系统,如:jira、jenkins、svn、gitlab等等,每次有新同事入职,运维人员都需要在各个系统中添加或者删除用户,非常的不方便。为了解决频繁去各个系统中创建和删除账号,决定使用ldap集成各个系统,实现账号密码统一管理。如果有兴趣可以看看关于ldap的介绍,也可以跳过直接搭建使用,然后基本就理解ldap是个什么东西了

    注意:在命令中以#开头的信息为使用root用户执行的命令,其他信息为命令执行后的输出内容。

    一、LDAP介绍

    在安装OpenLDAP之前,我们首先来介绍下LDAP。

    LDAP是一款轻量级目录访问协议(Lightweight Directory Access Protocol,简称LDAP),属于开源集中账号管理架构的实现,且支持众多系统版本,被广大互联网公司所采用。

    LDAP提供并实现目录服务的信息服务,目录服务是一种特殊的数据库系统,对于数据的读取、浏览、搜索有很好的效果。目录服务一般用来包含基于属性的描述性信息并支持精细复杂的过滤功能,但OpenLDAP目录服务不支持通用数据库的大量更新操作所需要的复杂的事务管理或回滚策略等。

    LDAP具有两个标准,分别是X.500和LDAP。OpenLDAP是基于X.500标准的,而且去除了X.500复杂的功能并且可以根据自我需求定制额外扩展功能,但与X.500也有不同之处,例如OpenLDAP支持TCP/IP协议等,目前TCP/IP是Internet上访问互联网的协议。

    OpenLDAP可以直接运行在更简单和更通用的TCP/IP或其他可靠的传输协议层上,避免了在OSI会话层和表示层的开销,使连接的建立和包的处理更简单、更快,对于互联网和企业网应用更理想。

    OpenLDAP目录中的信息是以树状的层次结构来存储数据(这很类同于DNS),最顶层即根部称作“基准DN”,形如“dc=mydomain,dc=org”或者“o=mydomain.org”,前一种方式更为灵活也是Windows AD中使用的方式。在根目录的下面有很多的文件和目录,为了把这些大量的数据从逻辑上分开,OpenLDAP像其它的目录服务协议一样使用OU(Organization Unit,组织单元),可以用来表示公司内部机构,如部门等,也可以用来表示设备、人员等。同时OU还可以有子OU,用来表示更为细致的分类。

    OpenLDAP中每一条记录都有一个唯一的区别于其它记录的名字DN(Distinguished Name),其处在“叶子”位置的部分称作RDN(用户条目的相对标识名)。如dn:cn=tom,ou=animals,dc=ilanni,dc=com中cn即为RDN,而RDN在一个OU中必须是唯一的。

    OpenLDAP默认以Berkeley DB作为后端数据库,BerkeleyDB数据库主要以散列的数据类型进行数据存储,如以键值对的方式进行存储。

    BerkeleyDB是一类特殊的面向查询进行优化、面向读取进行优化的数据库,主要用于搜索、浏览、更新查询操作,一般对于一次写入数据、多次查询和搜索有很好的效果。BerkeleyDB不支持事务型数据库(MySQL、MariDB、Oracle等)所支持的高并发的吞吐量以及复杂的事务操作。

    二、LDAP安装及使用

    目前有很多LDAP类型的服务可供选择安装,比如:Microsoft Active DirectoryApache Directory ServerApple Open DirectoryOpenDSOpenLDAP等等。这里进介绍OpenLDAP在CentOS7操作系统的安装。

    2.1 安装OpenLDAP

    使用以下命令安装openldap

    yum install openldap openldap-servers openldap-clients migrationtools -y
    

    查看ldap版本

    slapd -VV
    
    @(#) $OpenLDAP: slapd 2.4.44 (Jan 29 2019 17:42:45) $
    	mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd
    

    我们可以看到,当前安装的版本为2.4.44

    2.2 配置OpenLDAP

    OpenLDAP配置比较复杂牵涉到的内容比较多,接下来我们一步一步对其相关的配置进行介绍。

    注意:从OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,建议不再使用slapd.conf作为配置文件。

    2.2.1 生成OpenLDAP管理员密码

    slappasswd -s 123456
    
    {SSHA}Sd7/JTu1JOG4iyLgo63zq7KU/9PQTfDj
    

    我们得到了一个加密后的字符串。记住它!在后面我们会用到。

    2.2.2 修改配置文件olcDatabase={2}hdb.ldif

    对于这个文件,我们新增一行olcRootPW,然后分别修改了olcSuffixolcRootDN的dc值(这不是必须的)。

    vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif
    
    olcSuffix: dc=example,dc=com
    olcRootDN: cn=admin,dc=example,dc=com
    olcRootPW: {SSHA}Sd7/JTu1JOG4iyLgo63zq7KU/9PQTfDj
    
    • cn=admin:admin表示OpenLDAP管理员的用户名
    • olcRootPW:表示为管理员admin这只的密码,这里只能填写加密后的字符

    2.2.3 修改配置文件

    在这个文件中,我们仅修改olcAccess的值,dn.base是修改OpenLDAP管理员相关信息的

    vim /etc/openldap/slapd.d/cn\=config/olcDatabase={1}monitor.ldif
    

    原配置信息

    olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
     al,cn=auth" read by dn.base="cn=Manager,dc=my-domain,dc=com" read by * none
    

    修改为

    olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
     al,cn=auth" read by dn.base="cn=admin,dc=example,dc=com" read by * none
    

    2.2.4 验证OpenLDAP的配置

    slaptest -u
    
    5f192c7e ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
    5f192c7e ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"
    config file testing succeeded
    

    忽略前两行的错误信息,当出现最后一行信息,说明检测通过。

    2.2.5 启动openldap服务

    systemctl enable slapd --now
    

    启动后校验服务状态

    systemctl status slapd
    ss -atnpl | grep 389
    

    2.2.6 OpenLDAP数据库配置

    OpenLDAP默认使用的数据库是BerkeleyDB,现在来开始配置OpenLDAP数据库,使用如下命令:

    cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
    chown ldap:ldap -R /var/lib/ldap
    chmod 700 -R /var/lib/ldap
    

    注意/var/lib/ldap就是BerkeleyDB数据库默认存储的路径。

    2.2.7 导入基本Schema

    ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
    ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
    ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
    

    2.2.8 修改migrate_common.ph

    vim /usr/share/migrationtools/migrate_common.ph +71
    

    分别修改以下信息

    $DEFAULT_MAIL_DOMAIN = "example.com";
    $DEFAULT_BASE = "dc=example,dc=com";
    $EXTENDED_SCHEMA = 1;
    

    2.2.9 添加基本目录

    cat > /root/basedomain.ldif1 << EOF
    dn: dc=example,dc=com
    objectClass: top
    objectClass: dcObject
    objectclass: organization
    o: examplecom
    dc: example
    
    dn: cn=admin,dc=example,dc=com
    objectClass: organizationalRole
    cn: admin
    description: Directory Manager
    
    dn: ou=users,dc=example,dc=com
    objectClass: organizationalUnit
    ou: users
    
    dn: ou=groups,dc=example,dc=com
    objectClass: organizationalUnit
    ou: groups
    EOF
    

    写入ldap服务器

    ldapadd -x -D cn=admin,dc=example,dc=com -W -f basedomain.ldif
    

    2.2.10 查询LDAP全部信息

    ldapsearch -x -b "dc=example,dc=com" -H ldap:///
    

    以下为输出的ldap信息

    # extended LDIF
    #
    # LDAPv3
    # base <dc=example,dc=com> with scope subtree
    # filter: (objectclass=*)
    # requesting: ALL
    #
    
    # cesgroup.com
    dn: dc=example,dc=com
    ...
    # search result
    search: 2
    result: 0 Success
    
    # numResponses: 5
    # numEntries: 4
    

    2.2.11 开启OpenLDAP日志记录

    OpenLDAP默认是没有启动日志记录功能,在实际使用中为了方便定位问题,我们需要查看日志。

    新建一个ldif文件,并导入到OpenLDAP中。

    cat > /root/loglevel.ldif << EOF
    dn: cn=config
    changetype: modify
    replace: olcLogLevel
    olcLogLevel: stats
    EOF
    
    ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/loglevel.ldif
    

    运行后,我们会看到下面的输出

    SASL/EXTERNAL authentication started
    SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
    SASL SSF: 0
    modifying entry "cn=config"
    

    修改rsyslog配置文件,并重启服务

    cat >> /etc/rsyslog.conf << EOF
    local4.* /var/log/slapd.log
    EOF
    
    systemctl restart rsyslog
    

    查看日志

    tailf /var/log/slapd.log
    

    2.2.12 LDAP管理工具使用(LDAP Admin)

    LDAP Admin是一款优秀的LDAP管理工具,官方网站提供各个版本的下载http://www.ldapadmin.org/download/ldapadmin.html,解压后双击就可以使用

    1. 点击左边的Connect按钮
    2. 双击New connect图标
    3. connection name为这个连接的名称(随意)
    4. host填写OpenLDAP服务器地址,Port为默认的端口389
    5. 点击Fetch DNs,左边的Base会出现LDAP的dc信息
    6. 在Account项,填写前面创建的用户名admin和密码123456
    7. 点击Test connection测试连接,测试通过后就可以进行管理了。
      在这里插入图片描述

    三、LDAP与各系统的集成

    Subversion集成

    在Subversion中,用户和密码通常使用由htpasswd生成的文件,集成LDAP后可以如果LDAP中的用户和SVN原来的用户重复,可以设置验证的优先级

    下面的配置文件/etc/httpd/conf.d/subversion.conf,分别为仅验证认证文件和优先验证LDAP用户(如果LDAP用户不存在再验证认证文件)的配置方式

    仅验证认证文件

    <Location /svn>
        DAV svn
        SVNListParentPath on
        SVNParentPath /data/svndata
        AuthType Basic
        AuthName "Authorization"
        AuthUserFile /data/svndata/passwd.conf      
        AuthzSVNAccessFile /data/svndata/authz.conf
        Require valid-user
        SSLRequireSSL
    </Location>
    

    优先验证LDAP用户

    <Location /svn>
      DAV svn
      SVNListParentPath on
      SVNParentPath /data/svndata
      AuthType Basic
      AuthName "Authorization"
      AuthUserFile /data/svndata/passwd.conf
      AuthzSVNAccessFile /data/svndata/authz.conf
      Satisfy all
      Require valid-user
    
      AuthBasicProvider ldap file
      AuthLDAPBindDN "cn=admin,dc=example,dc=com"
      AuthLDAPBindPassword "123456"
      AuthLDAPURL "ldap://10.xxx.xxx.2:389/ou=users,dc=example,dc=com?uid?sub?(objectClass=*)"
    
      Options Indexes FollowSymLinks
      Order allow,deny
      Allow from all
    </Location>
    
    • AuthBasicProvider:定义验证方式,这里同时使用ldapfile的方式,当ldap找不到的用户,会使用file中的用户进行验证,如果file在前面,则优先使用file的用户
    • AuthLDAPBindDN:LDAP管理员的用户名
    • AuthLDAPBindPassword:LDAP管理员的密码
    • AuthLDAPURL:LDAP的连接信息

    集成完成后,重启httpd服务,建议分别在认证文件和LDAP中创建相同的用户,密码设置为不同,调整配置进行验证。

    Gitlab集成

    为确保万无一失,强烈建议在操作前对Gitlab数据进行备份。

    我们使用的8.13.3版本的Gitlab,没有尝试其他版本的配置,在集成LDAP前,我们的Gitlab已经运行了一段时间,有一定的用户,这时集成LDAP时需要注意LDAP和之前用户的关联。我们在创建LDAP用户时,邮箱要和Gitlab原帐号的邮箱保持一致,这样Gitlab会自动让这两个帐号进行关联,关联后原来的帐号只能用于网页登录,拉取来吗需要使用LDAP的用户名密码。

    下面是gitlab的配置信息

    vim /etc/gitlab/gitlab.rb
    

    在最下方添加下面的代码

    gitlab_rails['ldap_enabled'] = true
    gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
      main: # 'main' is the GitLab 'provider ID' of this LDAP server
        label: 'LDAP'
        host: '10.xxx.xxx.2'
        port: 389
        uid: 'uid'
        method: 'plain'
        bind_dn: 'cn=admin,dc=example,dc=com'
        password: '123456'
        verify_certificates: true
        active_directory: true
        allow_username_or_email_login: true
        lowercase_usernames: false
        block_auto_created_users: false
        base: 'ou=users,dc=example,dc=com'
        user_filter: ''
        attributes:
          username: ['uid', 'userid']
          email:    ['mail', 'email']
          name:       'cn'
          first_name: 'givenName'
          last_name:  'sn'
        ## EE only
        group_base: ''
        admin_group: ''
        sync_ssh_keys: false
    EOS
    

    测试获取LDAP用户信息

    gitlab-rake gitlab:ldap:check
    
    Checking LDAP ...
    
    LDAP: ... Server: ldapmain
    LDAP authentication... Success
    LDAP users with access to your GitLab server (only showing the first 100 results)
    	DN: uid=admin,ou=users,dc=example,dc=com	 uid: admin
    	DN: uid=zhaiweiwei,ou=users,dc=example,dc=com	 uid: zhaiweiwei
    	...
    
    Checking LDAP ... Finished
    

    重新配置Gitlab

    gitlab-ctl reconfigure
    

    重启Gitlab

    gitlab-ctl restart
    

    集成LDAP后,网页登录时会多出一个LDAP的登录方式,原来的登录方式为Standard,建议取消Standard方式登录,因为原用户仅能登录网页版,不能拉取和提交代码。

    Jira集成

    与JIRA的集成可以直接在Web界面操作。

    1. 使用管理员登录Jira。
    2. 依次点击’管理’-‘用户管理’,然后点击左下角的’用户目录’
    3. 点击’添加目录’,目录类型选择’LDAP’

    服务器设置

    名称:[随意]

    目录类型:OpenLDAP

    主机名:10.xxx.xxx.2

    端口:389

    用户名:cn=admin,dc=example,dc=com

    密码:123456

    LDAP模式

    基本DN:dc=example,dc=com

    附加用户DN:ou=users

    附加组DN:ou=jira,ou=groups

    LDAP权限

    • 读写

    高级设置

    同步间隔(分钟):5

    用户模式设置

    用户名属性:uid(默认是cn,以ldap设置为准),可使用2.2.10查看用户信息后决定使用哪个字段作为用户名属性

    其他配置保持默认即可

    添加后点击"测试并保存",选择一个LDAP用户进行验证,比如"admin",验证通过后,将"LDAP服务器"移动到第一位,这样就会优先验证LDAP的用户了,当LDAP用户不存在才会验证原系统用户。

    四、数据备份与恢复

    数据备份

    可以通过slapcat和slapsearch等工具完成数据的备份,这里仅介绍slapcat的使用,除了备份数据外,我们同时将配置备份(方便恢复到其他服务器)。

    在备份前,建议关闭ldap server,实际上我并没有感觉有这个必要,不关闭一样可以备份。

    备份配置

    slapcat -n 0 -l /data/ldap/config.ldif
    

    备份数据

    slapcat -n 2 -l /data/ldap/database.ldif
    

    下面是一个简单的备份脚本,可以放到定时任务中,每天备份一次

    vim /etc/crontab
    # 添加以下定时任务,每天凌晨执行备份
    0 0 * * * root /usr/local/bin/ldap_backup.sh
    
    #!/bin/bash
    DATE=`date "+%Y%m%d%H%M%S"`
    BACKUP_DIR=/opt/ldap
    BACKUP_SUBDIR=$BACKUP_DIR/$DATE
    BACKUP_FILE=$BACKUP_DIR/${DATE}.tar.gz
    DEBUG=1
    
    if [ ! -e $BACKUP_DIR ]; then
      mkdir -p $BACKUP_DIR
    else
      echo "Backup dir already exists."
    fi
    
    mkdir $BACKUP_SUBDIR
    
    if [ $DEBUG -ne 0 ]; then
      set -x
    fi
    
    slapcat -n 0 -l $BACKUP_SUBDIR/config.ldif
    slapcat -n 2 -l $BACKUP_SUBDIR/database.ldif
    
    cd $BACKUP_DIR
    tar -zcf $BACKUP_FILE $DATE
    
    rm -rf $BACKUP_SUBDIR
    

    数据恢复

    1. 停止OpenLDAP服务
    systemctl stop slapd
    
    1. 清理已有的配置(在原服务器上恢复,这个步骤可以跳过)
    rm -rf /etc/openldap/slapd.d/*
    
    1. 清理已有数据
    rm -rf /var/lib/ldap/*
    
    1. 恢复配置(如果前面清理了已有配置,需要恢复配置)
    slapadd -n 0 -F /etc/openldap/slapd.d -l config.ldif 
    

    -F 指定了配置目录,在旧的版本中,一般会使用-f参数指定配置文件/etc/openldap/slapd.conf

    1. 恢复数据
    slapadd -n 2 -l database.ldif
    
    1. 为相关目录设置正确权限
    chown -R ldap:ldap /var/lib/ldap /etc/openldap/slapd.d
    
    1. 启动OpenLDAP服务
    systemctl start slapd
    

    ldap filter https://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx

    https://docs.microsoft.com/zh-cn/windows/win32/adsi/search-filter-syntax?redirectedfrom=MSDN

    展开全文
  • 1、 OpenLDAP安装与配置 在集群中选择一台服务器作为OpenLDAP的Server 1.1 执行如下命令安装OpenLDAP服务 # yum -y install openldap-clients openldap-devel openldap-servers migrationtools sssd authconfig nss-...
  • OpenLDAP安装与配置

    万次阅读 多人点赞 2019-03-11 10:59:10
    一、背景 因为公司项目中已经使用到ldap,但是不是我搭建的,并且ldap是部署在另一台机器上。...在安装OpenLDAP之前,我们首先来介绍下LDAP。 LDAP是一款轻量级目录访问协议(Lightweight Directory Access Pr...
  • 文章目录一、初始化环境二、安装OpenLDAP三、配置openldap3.1 配置OpenLDAP管理员密码3.2 修改olcDatabase={2}hdb.ldif文件3.3 修改olcDatabase={1}monitor.ldif文件3.4 验证OpenLDAP的基本配置及启动openldap3.5 ...
  • OpenLdap安装及配置

    2011-05-06 22:37:09
    主讲OpenLdap安装及配置,OpenLdap是配置ldap的服务器。
  • LDAP安装文档,安装包和客户端工具另外一个资源提供。
  • OpenLDAP安装手册-Linux

    2017-03-17 11:05:09
    Linux下OpenLDAP安装手册
  • OpenLDAP安装与配置(ubuntu-12.04).docx
  • 一、最全的openldap安装部署

    千次阅读 2018-11-22 23:52:53
    执行安装命令 yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-devel
  • BerkeleyDB和OpenLDAP安装

    2017-08-14 22:03:10
    1、BerkeleyDB安装 参考: http://www.360doc.com/content/14/0313/11/6889381_360217135.shtml http://www.oschina.net/question/12_4298 http://blog.csdn.net/maryzhao1985/article/details/8876248 ...
  • linux下openldap安装需要的所有文件,里面包含openldap-2.4.46、db-4.8.30.NC、libtool-ltdl-2.4.2-22.el7_3.x86_64、libtool-ltdl-devel-2.4.2-22.el7_3.x86_64等安装openldap所必需的文件
  • OpenLDAP安装测试

    2015-08-11 10:43:08
    OpenLDAP安装测试 OpenLDAP学习 OpenLDAP教程
  • openldap 安装文档

    2014-02-12 13:09:02
    描述安装openldap步骤,描述openldap主从同步安装方法。
  • openldap 安装

    2021-11-10 22:46:11
    参考:CentOS7下OpenLDAP部署 - 阿拉懒神灯 - 博客园OpenLDAP作为开源的LDAP服务,可用于搭建统一认证平台,在很多企业内部应用比较广泛,本文将介绍在CentOS7下OpenLDAP的部署。 环境: CentOS 7.4 OpenLDAP 2.4...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,635
精华内容 5,454
关键字:

openldap安装