zoukankan      html  css  js  c++  java
  • openldap完整版本搭建记录

      文档信息
    目        的:搭建一套完整的OpenLDAP系统,实现账号的统一管理。
                        1:OpenLDAP服务端的搭建
                        2:PhpLDAPAdmin的搭建
                        3:OpenLDAP的打开日志信息
                        4:OpenLDAP与migrationtools实现导入系统账号的相关信息
                        5:OpenLDAP客户端的配置
                        6:OpenLDAP与SSH
                        7:OpenLDAP限制用户登录系统
                        8:OpenLDAP强制用户一登录系统更改密码
                        9:OpenLDAP与系统账号结合Samba
                       10:OpenLDAP的主从
                       11:OpenLDAP的双主

    系统环境信息:

    操作系统:CentOS release 6.2 (Final)

    基础环境准备:

    关闭防火墙:/etc/init.d/iptables stop  && chkconfig iptables off

    关闭NetworkManager:/etc/init.d/NetworkManager stop && chkconfig NetworkManager off

    SeLinux设为disabled: setenforce 0

    yum源仓库的配置:本次部署使用了阿里云yum源

      1)  wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

      2)yum clean all 清除缓存

      3)yum makecache 创建缓存

    一、OpenLDAP服务器的搭建

    1. 安装OpenLDAP的相关

      yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools,其中compat-openldap这个包与主从有很大的关系

    安装完后,可以看到自动创建了ldap用户:
    [root@rpm ~]# tail -n 1 /etc/passwd
    ldap:x:55:55:LDAP User:/var/lib/ldap:/sbin/nologin

    可以通过rpm -qa |grep openldap查看安装了哪些包:

    [root@rpm ~]# rpm -qa | grep openldap
    openldap-2.4.40-16.el6.x86_64
    openldap-devel-2.4.40-16.el6.x86_64
    openldap-clients-2.4.40-16.el6.x86_64
    openldap-servers-2.4.40-16.el6.x86_64
    openldap-servers-sql-2.4.40-16.el6.x86_64
    compat-openldap-2.3.43-2.el6.x86_64

    2.  查看OpenLDAP版本,使用:slapd -VV

    [root@rpm ~]# slapd -VV
    @(#) $OpenLDAP: slapd 2.4.40 (Mar 22 2017 06:29:21) $
        mockbuild@c1bm.rdu2.centos.org:/builddir/build/BUILD/openldap-2.4.40/openldap-2.4.40/build-servers/servers/slapd

    3.  OpenLDAP的相关配置文件信息

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

          OpenLDAP监听的端口:

          默认监听端口:389(明文数据传输)

          加密监听端口:636(密文数据传输)

     注意:从OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,建议不再使用slapd.conf作为配置文件。但是本片博文依旧使用slapd.conf作为配置文件,我们一步一步进行配置和介绍。

    4.  初始化OpenLDAP的配置

    cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG           # copy数据库文件
    cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf        # 此处copy是为了使用slapd.conf

     5.  修改配置文件

      首先,设置OpenLDAP管理员密码,拷贝这个到/etc/openldap/slapd.conf里

    [root@rpm ~]# slappasswd -s 123456
    New password:
    Re-enter new password:
    {SSHA}JTudNsYrtbsksTdjxe4bFSwbrt1cF+LD

     拷贝秘闻密码到/etc/openldap/slapd.conf里,这里的rootpw必须顶格写,而且与后面的密码文件用Tab键隔开,并修改对应序列。

     注意:其中cn=root中的root表示OpenLDAP管理员的用户名,而olcRootPW表示OpenLDAP管理员的密码。

     6.  重新生成配置文件信息文件

     先检测/etc/openldap/slapd.conf是否有错误

    [root@rpm openldap]# slaptest -f /etc/openldap/slapd.conf 
    5b038945 bdb_db_open: DB_CONFIG for suffix "dc=wangjie,dc=com" has changed.
    5b038945 Performing database recovery to activate new settings.
    5b038945 bdb_db_open: database "dc=wangjie,dc=com": recovery skipped in read-only mode. Run manual recovery if errors are encountered.
    config file testing succeeded

      授权数据文件,更改文件的所属

    [root@rpm openldap]# chown -R ldap:ldap /var/lib/ldap/
    [root@rpm openldap]# ll /var/lib/ldap/
    总用量 984
    -rw-r--r-- 1 ldap ldap     4096  5月 22 11:08 alock
    -rw------- 1 ldap ldap    24576  5月 22 11:08 __db.001
    -rw------- 1 ldap ldap   188416  5月 22 11:08 __db.002
    -rw------- 1 ldap ldap   270336  5月 22 11:08 __db.003
    -rw------- 1 ldap ldap    98304  5月 22 11:08 __db.004
    -rw------- 1 ldap ldap   753664  5月 22 11:08 __db.005
    -rw------- 1 ldap ldap    32768  5月 22 11:08 __db.006
    -rw-r--r-- 1 root root      845  5月 22 10:56 DB_CONFIG
    -rw------- 1 ldap ldap     8192  5月 18 10:46 dn2id.bdb
    -rw------- 1 ldap ldap    32768  5月 18 10:46 id2entry.bdb
    -rw------- 1 ldap ldap 10485760  5月 22 11:08 log.0000000001

      我们先重启slapd生成配置文件。

    [root@rpm openldap]# /etc/init.d/slapd restart
    停止 slapd:                                               [确定]
    正在检查 slapd 的配置文件:                                [警告]
    5b0389a6 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
    5b0389a6 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif"
    config file testing succeeded
    正在启动 slapd:                                           [确定]

      接着回到检测/etc/openldap/slapd.conf是否有错误

    [root@rpm openldap]# slaptest -f /etc/openldap/slapd.conf
    config file testing succeeded
      可以看到没问题,然后重新生成配置文件的配置信息:
    rm - rf /etc/openldap/slapd.d/*                                     # 先删除最先的配置文件生成的信息 
    slaptest -f/etc/openldap/slapd.conf -F /etc/openldap/slapd.d/       # 重新生成文件

       查看是否生成的是自己修改的配置文件信息,修改文件在/etc/openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif

     

      重启:/etc/init.d/slapd restart

    [root@rpm openldap]# /etc/init.d/slapd restart
    停止 slapd:                                               [确定]
    正在启动 slapd:                                            [确定]

     到这里为止,OpenLDAP服务端基本上完成了,我们可以通过PhpLDAPAdmin来登录看一下,那先得安装PhpLDAPAdmin

     二、PhpLDAPAdmin的搭建

    1.  安装EPEL仓库,镜像里没有PhpLDAPAdmin这个的安装包,所以得安装EPEL仓库,本次使用阿里云的扩展源

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
    yum clean all 
    yum makecache

    2.  安装PhpLDAPAdmin

         yum install -y phpldapadmin

    3.  修改phpldapadmin的配置文件,访问控制权限vim /etc/httpd/conf.d/phpldapadmin.conf,允许谁访问,因为本次实验环境,先全部允许。

    4.  修改配置文件: /etc/phpldapadmin/config.php

    $servers->setValue('login','attr','dn');                # 这一行的注释去掉
    $servers->setValue('login','attr','uid'); # 这一行注释掉

    5.  编辑root.ldif,导入管理员帐号信息。

      此文件对格式的要求比较大,之前一直报“additional info: dn: attribute type undefined”最后在第一行加了一个空行解决,一直没有找到原因,如有妥善解决方法的,请留言赐教。

    [root@rpm ~]# cat > root.ldif << EOF
    > 
    >dn: dc=oldwang,dc=com
    >objectclass: dcObject
    >objectclass: organization
    >o: oldwang.com
    >dc: oldwang
    >
    >dn: cn=root,dc=oldwang,dc=com
    >objectclass: organizationalRole
    >cn: root
    >EOF
       导入信息:ldapadd -x -D "cn=root,dc=oldwang,dc=com" -W -f /root/root.ldif
     

      通过浏览器访问:

    也可以通过命令行查询:ldapsearch -x -b "cn=root,dc=oldwang,dc=com"

     

     三、openLDAP的打开日志信息

     1.  现在配置文件里加上日志行 ,这里的日志级别有很多种,-2记录为info信息。

      vim /etc/openldap/slapd.conf 加上loglevel -2

     

      这里修改了配置文件,所有得重新生成配置文件的信息

    rm -rf /etc/openldap/slapd.d/*
    slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
    chown -R ldap.ldap /etc/openldap/slapd.d/

     2.  在/etc/rsyslog.conf文件中加入  

    local4.*                                                /var/log/slapd/slapd.log

    3.  创建日志文件目录并修改属组

    mkdir /var/log/slapd
    chmod 755 /var/log/slapd/
    chown ldap.ldap /var/log/slapd/
     4.  重启服务

     

    5.  查看日志信息,tailf /var/log/slapd/slapd.log

     四、OpenLDAP与migrationtools实现导入系统账号的相关信息

     本节需要migrationtools工具包,此工具包在之前的安装中已经统一安装过,如果之前没有安装请按照以下方法安装

      yum -y install migrationtools

     1.  修改migrationtools的配置文件,vim /usr/share/migrationtools/migrate_common.ph 修改以下的两个地方

     

    2.  生成基础的数据文件,可以自己修改这个生成的base.ldif文件,把不需要的去掉

      /usr/share/migrationtools/migrate_base.pl > base.ldif

    3.  把base.ldif导入OpenLDAP的数据文件

      ldapadd -x -D "cn=root,dc=oldwang,dc=com" -W -f /root/base.ldif

     

      这里会报错,我们可以通过-c参数强制加入

     

      导入之后,通过PhpLdapAdmin可以看到已经导入进来了

     4.  添加用户及用户组

      创建两个测试用户及用户组,并修改密码。

    [root@rpm ~]# groupadd ldaptest1
    [root@rpm ~]# groupadd ldaptest2
    [root@rpm ~]# useradd -g ldaptest1 ldaptest1
    [root@rpm ~]# useradd -g ldaptest2 ldaptest2
    [root@rpm ~]# echo 123456 | passwd --stdin ldaptest1
    更改用户 ldaptest1 的密码 。
    passwd: 所有的身份验证令牌已经成功更新。
    [root@rpm ~]# echo password | passwd --stdin ldaptest2
    更改用户 ldaptest2 的密码 。
    passwd: 所有的身份验证令牌已经成功更新。

      因为此次我们只想将刚创建的两个用户导入至openldap数据文件,所以将两个用户的相关信息截取出来

    [root@rpm ~]# grep ldaptest /etc/passwd > users
    [root@rpm ~]# grep ldaptest /etc/group > groups
    [root@rpm ~]# cat users ldaptest1:x:500:502::/home/ldaptest1:/bin/bash ldaptest2:x:501:503::/home/ldaptest2:/bin/bash [root@rpm ~]# cat groups ldaptest1:x:502: ldaptest2:x:503:

     5.  使用migrationtools将两个临时用户生成ldif文件

    [root@rpm ~]# /usr/share/migrationtools/migrate_passwd.pl users > users.ldif
    [root@rpm ~]# /usr/share/migrationtools/migrate_group.pl groups > groups.ldif

       查看生成的users.ldif --> cat users.ldif

    cn: ldaptest1
    objectClass: account
    objectClass: posixAccount
    objectClass: top
    objectClass: shadowAccount
    userPassword: {crypt}$6$V9.vDuo7$14R62mGHBJt90XhXX3920lJhf1G7LP35ZWsNgptq6dWvmd1x7PFwQ6D35C7qlNodvmLUt/xjLpiHI39IqpBjP/
    shadowLastChange: 17674
    shadowMin: 0
    shadowMax: 99999
    shadowWarning: 7
    loginShell: /bin/bash
    uidNumber: 500
    gidNumber: 502
    homeDirectory: /home/ldaptest1
    
    dn: uid=ldaptest2,ou=People,dc=oldwang,dc=com
    uid: ldaptest2
    cn: ldaptest2
    objectClass: account
    objectClass: posixAccount
    objectClass: top
    objectClass: shadowAccount
    userPassword: {crypt}$6$xVYndeJr$zhfe0FwT.3gu.t8rL8ohIHhyrgP90dvBHHsg0ZMQxVyEJ8.jxz7glem/xsllBtayNxms8csiw.JG0GCEZgpEa1
    shadowLastChange: 17674
    shadowMin: 0
    shadowMax: 99999
    shadowWarning: 7
    loginShell: /bin/bash
    uidNumber: 501
    gidNumber: 503
    homeDirectory: /home/ldaptest2

       查看生成的group.ldif --> cat group.ldif

    dn: cn=ldaptest1,ou=Group,dc=oldwang,dc=com
    objectClass: posixGroup
    objectClass: top
    cn: ldaptest1
    userPassword: {crypt}x
    gidNumber: 502
    
    dn: cn=ldaptest2,ou=Group,dc=oldwang,dc=com
    objectClass: posixGroup
    objectClass: top
    cn: ldaptest2
    userPassword: {crypt}x
    gidNumber: 503

    6.  把用户导入至openLDAP的数据文件

    7.  然后在phpLDAPadmin中查看

     在这里就已经完成把系统的账号属性导入了OpenLDAP,然后就通过添加OpenLDAP用户,来进行验证,所以得先做好客户端的设置

    五、OpenLDAP客户端配置

    1.  停掉sssd服务  service sssd stop && chkconfig sssd off

    2.  安装nslcd服务  yum install nss-pam-ldapd

    3. 修改 /etc/nslcd.conf 配置文件,下边四行在原文件中是分散开备注是的,此处合并在一起。

    4.  修改 /etc/pam_ldap.conf 配置文件

     

    5. 修改 /etc/pam.d/system-auth 文件,文件中添加下图标记的行

    6.   修改 /etc/nsswitch.conf  配置文件,在此三行后边增加ldap,修改后,默认登录的用户通过本地配置文件进行查找并匹配。当匹配不到用户信息时,会通过后端配置的LDAP认证服务进行匹配

     

    7.  修改 /etc/sysconfig/authconfig 文件,确保标记的已打开为yes

     USESHADOW=yes 启用密码验证
     USELDAPAUTH=yes 启用OpenLDAP验证
     USELOCAUTHORIZE=yes 启用本地验证
             USELDAP=yes  启用LDAP认证协议

     

    8.  重启服务

      /etc/init.d/nslcd restart

    9.  验证,通过phpldapadmin增加一个用户,在ldaptest1的基础上,复制一个ldaptest3的条目。

      首先复制组的条目,也可以直接复制用户的条目,将组挂到已有的组中。

      

      根据自己的需求更改。  

      提交,之后自行查看,会发现多了一个新的组信息

      通过ldaptest1用户赋值一个新的用户条目。

      此时复制一个ldaptest3

      可以看到已经成功的添加了ldaptest3的用户,这是OpenLDAP添加的,在本地是没有的,用cat /etc/passwd 看是没有ldaptest3用户的

       在/etc/pam.d/system-auth配置文件里添加这一行:session     optional      pam_mkhomedir.so skel=/etc/skel/ umask=0022

       重启 /etc/init.d/nslcd restart

       此时我们进行测试

    10.  查看系统用户列表

    客户端查询:ldapsearch -H ldap://172.27.1.111 -x -b "ou=People,dc=oldwang,dc=com" |grep dn

    服务端查询:ldapsearch -x -b "ou=People,dc=oldwang,dc=com" |grep dn

    查询单个用户:ldapsearch -x -b "uid=ldaptest3,ou=People,dc=oldwang,dc=com" | grep dn

    [root@rpm ~]# ldapsearch -H ldap://172.27.1.111 -x -b "ou=People,dc=oldwang,dc=com" | grep dn
    dn: ou=People,dc=oldwang,dc=com
    dn: uid=ldaptest1,ou=People,dc=oldwang,dc=com
    dn: uid=ldaptest2,ou=People,dc=oldwang,dc=com
    dn: uid=ldaptest3,ou=People,dc=oldwang,dc=com
    [root@rpm ~]# ldapsearch -x -b "ou=People,dc=oldwang,dc=com" | grep dn
    dn: ou=People,dc=oldwang,dc=com
    dn: uid=ldaptest1,ou=People,dc=oldwang,dc=com
    dn: uid=ldaptest2,ou=People,dc=oldwang,dc=com
    dn: uid=ldaptest3,ou=People,dc=oldwang,dc=com
    [root@rpm ~]# ldapsearch -x -b "uid=ldaptest3,ou=People,dc=oldwang,dc=com" | grep dn
    dn: uid=ldaptest3,ou=People,dc=oldwang,dc=com

     六、OpenLDAP与ssh

    1.  修改 /etc/ssh/sshd_config 文件

     

    2.  修改 /etc/pam.d/sshd  文件,用于第一次登陆的账户自动创建家目录

       添加:session    required     pam_mkhomedir.so

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

     

    4.  重启ssh:/etc/init.d/sshd restart

     七、OpenLDAP限制用户登录系统

      在账号中,不能让每个用户都能登录系统,所以要限制用户登录

    1. 修改 /etc/pam.d/sshd 文件,在这里加上pam_access.so模块

      添加:account    required     pam_access.so

    2. 修改 /etc/security/access.conf 文件,这里限制ldaptest3用户ssh登录系统

     

    测试:可以看到只有opentest3登录不上

     

  • 相关阅读:
    tar打包split分割分解拆分大包文件
    SAP 语言码转换
    SAP audit S41909
    电商收付通系列<1>图片上传API
    Ladon7.4 CVE-2020-0688 Exchange序列化漏洞利用
    [反诈骗]入侵骗子电脑-揭秘冒充企业老板诈骗全过程
    Ladon插件-CVE-2020-1472域控提权漏洞EXP
    Winrm远程命令/端口复用后门/WinrmCmd/密码爆破
    〖教程〗Ladon WinrmExec远程执行命令
    Ladon插件-批量检测网站是否使用Shiro
  • 原文地址:https://www.cnblogs.com/dmjx/p/9071068.html
Copyright © 2011-2022 走看看