美文网首页
通过yum源安装配置openldap

通过yum源安装配置openldap

作者: _火山_ | 来源:发表于2020-08-28 18:58 被阅读0次

    准备阶段

    我们要通过yum源来安装openldap,那么得事先配置好本地yum源,那么如何来配置一个本地yum源呢?
    参考文章:https://blog.csdn.net/kangvcar/article/details/73477730
    我的系统为centos 7,所以我这里仅记录centos 7的yum源配置方法,本次我配置的yum源为阿里云yum源。

    配置过程

    1、清除之前可能缓存的文件
    yum clean all
    2、切换到yum配置文件目录
    cd /etc/yum.repos.d
    3、该目录下可能存在之前配置过的yum源的配置文件,如果你觉得之前的不需要了,可以选择直接删除它们;
    如果后续还想用的话,建议备份好,例如在当前目录下建个目录作为备份目录
    mkdir yumbak
    4、将先前的配置文件(如果有的话)移动到yumbak目录
    mv ./* yumbak
    5、获取centos 7的yum配置文件
    wget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/CentOS-Base.repo
    其中-O参数的作用是指定配置文件的存储路径,-O后跟的是路径
    6、然后缓存依赖
    yum makecache
    7、最后可以看看到底缓存哪些依赖
    yum list
    也可以查询是否存在自己需要的依赖
    yum list | grep xxx

    如果你的系统不是centos 7的,那怎么办呢?
    只需要将wget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/CentOS-Base.repo命令中,http://mirrors.aliyun.com/repo/Centos-7.repo的版本号改为对应的版本即可;
    例如centos 8系统,那就改为http://mirrors.aliyun.com/repo/Centos-8.repo
    centos 6系统,那就改为http://mirrors.aliyun.com/repo/Centos-6.repo

    如果你的系统版本与想要配置的yum源的版本不一致,例如你的系统是centos 7,但是你想配置centos8对应的yum源;
    这也可以配置,也是将http://mirrors.aliyun.com/repo/Centos-7.repo改为http://mirrors.aliyun.com/repo/Centos-8.repo即可;
    但是这里有个需要注意的地方,如果系统版本与配置的yum源版本不对应,那么这个releasever需要显式地指定为yum源版本,例如现在想要在centos7的系统上配置centos8的yum源,则$releasever应修改为8。

    我们可以使用全局替换来快速修改:
    1、vim打开CentOS-Base.repo
    2、在命令模式下输入
    :% s/$releasever/8/g
    回车,保存退出。
    yum源的配置已经写完。

    部署流程

    1、yum install -y openldap openldap-servers openldap-clients openldap-devel compat-openldap
    通过yum安装openldap,-y表示静默安装,遇到需要交互的情况直接默认为yes
    2、安装完成后,就可以直接配置了,我们先来看看手动配置的流程是怎样的,最后我会附上自动安装以及配置的脚本。

    openldap配置流程

    1、通过yum安装,openldap默认是安装到系统路径的,其中配置文件所在路径为:
    /etc/openldap
    2、切换到/etc/openldap,看下该目录的文件
    由于我安装的是openldap 2.4.x,该版本的配置文件已经由先前的slapd.conf变为slapd.d下的ldif类型的配置文件了,这种配置文件只能通过ldif文件来修改配置,没有slapd.conf方便,所以这里我还是想使用slapd.conf配置文件,这里没有那怎么办呢,拷贝一个过来(后面我都会附上这些文件的)

    3、开始修改slapd.conf配置文件

    #
    # See slapd.conf(5) for details on configuration options.
    # This file should NOT be world readable.
    #
    
    include         /etc/openldap/schema/corba.schema
    include         /etc/openldap/schema/core.schema
    include         /etc/openldap/schema/cosine.schema
    include         /etc/openldap/schema/duaconf.schema
    include         /etc/openldap/schema/dyngroup.schema
    include         /etc/openldap/schema/inetorgperson.schema
    include         /etc/openldap/schema/java.schema
    include         /etc/openldap/schema/misc.schema
    include         /etc/openldap/schema/nis.schema
    include         /etc/openldap/schema/openldap.schema
    include         /etc/openldap/schema/ppolicy.schema
    include         /etc/openldap/schema/collective.schema
    
    # Allow LDAPv2 client connections.  This is NOT the default.
    allow bind_v2
    
    # Do not enable referrals until AFTER you have a working directory
    # service AND an understanding of referrals.
    #referral       ldap://root.openldap.org
    
    pidfile         /var/run/openldap/slapd.pid
    argsfile        /var/run/openldap/slapd.args
    
    # Load dynamic backend modules
    # - modulepath is architecture dependent value (32/64-bit system)
    # - back_sql.la overlay requires openldap-server-sql package
    # - dyngroup.la and dynlist.la cannot be used at the same time
    
    modulepath /usr/lib/openldap
    modulepath /usr/lib64/openldap
    
    # moduleload accesslog.la
    # moduleload auditlog.la
    # moduleload back_sql.la
    # moduleload chain.la
    # moduleload collect.la
    # moduleload constraint.la
    # moduleload dds.la
    # moduleload deref.la
    # moduleload dyngroup.la
    # moduleload dynlist.la
    # moduleload memberof.la
    # moduleload pbind.la
    # moduleload pcache.la
    moduleload ppolicy.la
    # moduleload refint.la
    # moduleload retcode.la
    # moduleload rwm.la
    # moduleload seqmod.la
    # moduleload smbk5pwd.la
    # moduleload sssvlv.la
    moduleload syncprov.la
    # moduleload translucent.la
    # moduleload unique.la
    # moduleload valsort.la
    
    # enable on-the-fly configuration (cn=config)
    database config
    access to *
            by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
            by * none
    
    # enable server status monitoring (cn=monitor)
    database monitor
    access to *
            by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
            by dn.exact="cn=Manager,dc=my-domain,dc=com" read
            by * none
    
    #######################################################################
    # database definitions
    #######################################################################
    
    database        bdb
    suffix          "dc=root,dc=test,dc=com"
    checkpoint      1024 15
    # Cleartext passwords, especially for the rootdn, should
    # be avoided.  See slappasswd(8) and slapd.conf(5) for details.
    # Use of strong authentication encouraged.
    # rootpw                secret
    # password                 password
    rootdn          "cn=admin,dc=root,dc=test,dc=com"
    rootpw          {SSHA}kldBu98SYvQLFgtNkPHFUVyiBh6TCiTX
    
    # password stage
    overlay ppolicy
    ppolicy_default "cn=default,ou=policies,dc=root,dc=test,dc=com"
    ppolicy_use_lockout
    
    # The database directory MUST exist prior to running slapd AND 
    # should only be accessible by the slapd and slap tools.
    # Mode 700 recommended.
    directory       /var/lib/ldap
    
    # Indices to maintain for this database
    index objectclass,entryCSN,entryUUID    eq
    index ou,cn,mail,surname,givenname      eq,pres,sub
    index uidNumber,gidNumber,loginShell    eq,pres
    index uid,memberUid                     eq,pres,sub
    index nisMapName,nisMapEntry            eq,pres,sub
    index member,uniqueMember       eq,pres
    
    #log level
    loglevel        17152
    
    cachesize       5000
    

    想要正常使用的话,上面的配置需要修改以下几点:
    1)suffix "dc=root,test,dc=com",表示根节点,修改为自己定义的根节点,例如"dc=myroot,dc=example,dc=com";
    2)rootdn "cn=admin,dc=root,dc=test,dc=com",管理员用户,修改为自己定义的超级用户名,例如"cn=root,dc=myroot,dc=example,dc=com";
    3)rootpw {SSHA}kldBu98SYvQLFgtNkPHFUVyiBh6TCiTX,管理员的密码,此处的密码是密文形式的,可以通过执行slappasswd来生成密文密码,如下图:

    将得到的密文替换掉配置文件里rootpw处的密码;
    4)overlay ppolicy
    ppolicy_default "cn=default,ou=policies,dc=root,dc=test,dc=com"
    ppolicy_use_lockout
    这三行表示使用自定义的密码策略,如果你不使用密码策略的话,可以将它们注释掉;
    如果使用自定义密码策略的话,则 ppolicy_default "cn=default,ou=policies,dc=root,dc=test,dc=com"需要修改为自定义的密码策略名,例如"cn=default,ou=policies,dc=myroot,dc=example,dc=com";
    5)只修改这些就可以了,保存退出。
    6)拷贝DB_CONFIG.example到/var/lib/ldap目录,并重命名为DB_CONFIG
    cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
    /var/lib/ldap是openldap的数据库目录;
    7)我前面讲到过2.4.x版本使用的是slapd.d目录下的配置文件了,而不是slapd.conf文件,我们最终还是需要将配置信息写入到slapd.d目录下的ldif文件里的,但是如果通过编写ldif文件的形式来添加的话又很麻烦,我这里有一个简便的方法,通过slaptest命令可以实现将slapd.conf的配置信息映射到slapd.d目录
    mv /etc/openldap/slapd.d /etc/openldap/slapd.d.bak,先将之前的slapd.d备份;
    mkdir /etc/openldap/slapd.d,创建新的slapd.d目录;

    slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d,slaptest的作用是测试配置文件是否正确,-f参数指定的是配置文件,即slapd.conf,-F参数指定的是配置文件目录,即slapd.d,通过该命令会将slapd.conf的配置信息映射到slapd.d,这样就避免了编写ldif文件改配置的繁琐工作了。

    这个报错不影响,id2entry.bdb文件是服务启动时才会生成的。
    8)修改文件属主
    chown -R ldap.ldap /var/lib/ldap
    chown -R ldap.ldap /etc/openldap/slapd.d
    9)到这里就可以重启服务了
    service slapd restart
    10)查看服务的状态
    service slapd status

    验证服务可用性

    1、添加一个账户
    1)创建一个根节点
    编写一个ldif文件,例如root.ldif
    vim root.ldif

    dn: dc=root,dc=test,dc=com
    dc: xitong
    o: xitong
    objectclass: dcObject
    objectclass: organization
    

    保存退出。
    通过ldapadd命令添加账户:
    ldapadd -x -D "cn=admin,dc=root,dc=test,dc=com" -wroot123456 -f root.ldif -H ldap://localhost
    -x表示简易验证,即账户名密码验证
    -D参数表示管理员
    -w后紧跟的是管理员的密码(注意小写的-w与密码间是没有空格的)
    -W如果使用的是大写的-W,则表示隐式输入密码,会在执行命令后才让输密码
    -f表示待添加账户的文件
    -H表示ldap地址

    2)创建一个组
    编写一个ldif文件,例如default.ldif
    vim default.ldif

    dn: cn=default,dc=root,dc=test,dc=com
    cn: default
    description:: 6buY6K6k6LSm5Y+357uE
    gidnumber: 100
    objectclass: top
    objectclass: posixGroup
    
    

    ldapadd -x -D "cn=admin,dc=root,dc=test,dc=com" -wroot123456 -f default.ldif -H ldap://localhost
    3)添加一个账户
    vim user.ldif

    dn: cn=ALL,cn=default,dc=root,dc=test,dc=com
    businesscategory: false
    cn: ALL
    displayname: false
    gecos: true
    gidnumber: 100
    homedirectory: /home/ALL
    labeleduri: false
    objectclass: top
    objectclass: posixAccount
    objectclass: inetOrgPerson
    postalcode: A181A603769C1F98AD927E7367C7AA51
    sn: ALL
    uid: ALL
    uidnumber: 1003
    userpassword: Hadoop123
    

    ldapadd -x -D "cn=admin,dc=root,dc=test,dc=com" -wroot123456 -f user.ldif -H ldap://localhost
    2、查询添加的账户信息
    ldapsearch -x -D "cn=admin,dc=root,dc=test,dc=com" -wroot123456 -b "dc=root,dc=test,dc=com" -LLL -H ldap://localhost
    -x表示简易验证,即账户名密码验证
    -D参数表示管理员
    -w后紧跟的是管理员的密码(注意小写的-w与密码间是没有空格的)
    -W如果使用的是大写的-W,则表示隐式输入密码,会在执行命令后才让输密码
    -b表示开始搜索的节点

    附件

    自动化部署与配置脚本
    其实做自动化部署也很简单,就是把上述说到的步骤封装到脚本里,并且事先准备好一个配置好的配置文件,放到指定目录下,然后再调用脚本即可
    vim auto_install_openldap.sh

    #!/bin/bash
    
    yum install -y openldap openldap-servers openldap-clients openldap-devel compat-openldap
    
    
    if [[ $? -ne 0 ]]; then
        echo "Yum install failed!"
        exit 1
    fi
    
     if [[ -d /etc/openldap/slapd.d ]];then
       mv  /etc/openldap/slapd.d /etc/openldap/slapd.d.$(date +%s)
       mkdir /etc/openldap/slapd.d
    fi
    
    #Clear /var/lib/ldap/
    rm -rf /var/lib/ldap/*
    
    #Use a example(template file for DB_CONFIG
    cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
    
     #Copy slapd.conf
    if [[ -e /etc/openldap/slapd.conf ]];then
        mv /etc/openldap/slapd.conf /etc/openldap/slapd.conf_$(date +%s)
    fi
    cp /opt/slapd.conf /etc/openldap/slapd.conf
    
    slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
    
    #Chang the owner of slapd.d
    chown -R ldap.ldap /etc/openldap/slapd.d
    
    #Chang the ower of ldap
    chown -R ldap.ldap /var/lib/ldap
    
    #Add syslog conf
    lines=$(grep "ldap.log" /etc/rsyslog.conf | wc -l )
    if [[ $lines -lt 1 ]];then
        echo "local4.*    /var/log/ldap.log" >> /etc/rsyslog.conf
        touch /var/log/ldap.log
        service rsyslog restart
    fi
    
    service slapd restart
    sleep 2
    
    #Check whether the service had been installed correctly
    services=$(netstat -tunlp  | grep -w 389 | wc -l)
    if [[ $services -lt 1 ]];then
        echo "Failed to start LDAP."
        exit 1
    else 
        echo "start LDAP successfully."
    fi
    

    自定义密码策略ldif文件
    vim ppolicy.ldif

    #policies ou
    dn: ou=policies,dc=xitong,dc=qihoo,dc=com
    description: password policies
    destinationindicator: password policies
    objectclass: top
    objectclass: organizationalUnit
    ou: policies
    
    # Default Policies
    dn: cn=default,ou=policies,dc=xitong,dc=qihoo,dc=com
    cn: default
    objectClass: top
    objectClass: device
    objectClass: pwdPolicy
    objectClass: pwdPolicyChecker
    pwdAllowUserChange: TRUE
    pwdAttribute: userPassword
    pwdFailureCountInterval: 86400
    pwdGraceAuthNLimit: 0
    pwdInHistory: 3
    pwdLockout: TRUE
    pwdLockoutDuration: 3600
    pwdMaxAge: 0
    pwdMaxFailure: 6
    pwdMinAge: 0
    pwdMinLength: 0
    pwdMustChange: FALSE
    pwdSafeModify: FALSE
    

    相关文章

      网友评论

          本文标题:通过yum源安装配置openldap

          本文链接:https://www.haomeiwen.com/subject/rvkfsktx.html