当前位置 主页 > 服务器问题 > Linux/apache问题 >

    配置Linux使用LDAP用户认证的方法

    栏目:Linux/apache问题 时间:2019-10-21 09:39

    我这里使用的是CentOS完成的LDAP用户管理,可能与网上的大部分教程不同,不过写出来了,那么是肯定能用的了,不过会有部分文件,忘指教。
    这里使用的 OPENLdap 配合 CentOS7 完成的用户管理,需要配置 nssswitch 、pam 和 sssd 3个服务,需要先有一定的了解才能完成本文的配置。

    基础配置#

    1.完成yum源的配置

    mkdir /root/back
    tar -Jcvf /root/back/yum.repos.d-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /etc/yum.repos.d/
    rm -rf /etc/yum.repos.d/*
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    curl -o /etc/yum,repos.d/CentOS-epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum makecache

    1.安装必要软件

    yum -y install vim bash-completion openldap-servers openldap-clients nss-pam-ldapd sssd
    
    

    OPENLdap服务部分配置#

    初始化过程就不再过多赘述,详细查询《OPENLDAP 服务搭建和后期管理》。

    1.首先停止数据库服务:

    systemctl stop slapd

    1.然后编辑文件:

    # 首先备份文件,以免无法复原
    mkdir /root/back
    tar -Jcvf /root/back/slapd.config-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /etc/openldap/slapd.d/
    tar -Jcvf /root/back/slapd.data-`date '+(%Y.%m.%d_%H:%M:%S)'`.tar.xz /var/lib/ldap/
    # 然后再删除配置文件
    rm -rf /etc/openldap/slapd.d/*
    rm -rf /var/lib/ldap/*
    # 复制配置文件到临时目录
    mkdir /root/ldap
    cd /root/ldap

    1.编写slapd的配置文件。这里的配置文件是从 /usr/share/openldap-servers/slapd.ldif 中演变而来的,主要修改了baseDN(suffix), OPENLDAPTLS,olcRootPW(密码由 slappasswd 生成,本文中的密码为: 123456) 和 include。

    # file: /root/ldap/slapd.ldif
    dn: cn=config
    objectClass: olcGlobal
    cn: config
    olcArgsFile: /var/run/openldap/slapd.args
    olcPidFile: /var/run/openldap/slapd.pid
    olcTLSCertificateFile: /etc/openldap/certs/server.crt
    olcTLSCertificateKeyFile: /etc/openldap/certs/server.key
    olcTLSCACertificateFile: /etc/openldap/cacerts/cacert.pem
    dn: cn=schema,cn=config
    objectClass: olcSchemaConfig
    cn: schema
    include: file:///etc/openldap/schema/core.ldif
    include: file:///etc/openldap/schema/cosine.ldif
    include: file:///etc/openldap/schema/nis.ldif
    include: file:///etc/openldap/schema/inetorgperson.ldif
    dn: olcDatabase=frontend,cn=config
    objectClass: olcDatabaseConfig
    objectClass: olcFrontendConfig
    olcDatabase: frontend
    dn: olcDatabase=config,cn=config
    objectClass: olcDatabaseConfig
    olcDatabase: config
    olcAccess: to * 
     by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage 
     by * none
    dn: olcDatabase=monitor,cn=config
    objectClass: olcDatabaseConfig
    olcDatabase: monitor
    olcAccess: to * 
     by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read 
     by dn.base="cn=Manager,dc=black,dc=com" read 
     by * none
    dn: olcDatabase=hdb,cn=config
    objectClass: olcDatabaseConfig
    objectClass: olcHdbConfig
    olcDatabase: hdb
    olcSuffix: dc=black,dc=com
    olcRootDN: cn=Manager,dc=black,dc=com
    olcRootPW: {SSHA}l1vBI/HOMKLEiQZgcm3Co+hFQI68rH1Q
    olcDbDirectory: /var/lib/ldap
    olcDbIndex: objectClass eq,pres
    olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub