zoukankan      html  css  js  c++  java
  • 08-OpenLDAP主机控制策略

    OpenLDAP主机控制策略

    阅读视图

    1. 参考
    2. 环境准备
    3. openldap服务端配置
    4. openldap客户端配置
    5. 客户端测试登录
    6. 故障处理

    1. 参考

    本文基本转载博客openldap主机访问控制(基于hostname)

    该博主另一篇文档,还没测试openldap主机访问控制(基于ip)

    2. 环境准备

    因为本文与其他文档属性不冲突,所以完全可以使用以前的环境做实验。

    3. openldap服务端配置

    1. 导入ldapns.schema方案,(hostObject类属性)

      https://github.com/openldap/openldap/blob/master/contrib/slapd-modules/nssov/ldapns.schema

      cat > /etc/openldap/schema/ldapns.schema << _EOF_
      # $OpenLDAP$
      # $Id: ldapns.schema,v 1.3 2009-10-01 19:17:20 tedcheng Exp $
      # LDAP Name Service Additional Schema
      # http://www.iana.org/assignments/gssapi-service-names
      
      #
      # Not part of the distribution: this is a workaround!
      #
      
      attributetype ( 1.3.6.1.4.1.5322.17.2.1 NAME 'authorizedService'
              DESC 'IANA GSS-API authorized service name'
              EQUALITY caseIgnoreMatch
              SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
      
      attributetype ( 1.3.6.1.4.1.5322.17.2.2 NAME 'loginStatus'
              DESC 'Currently logged in sessions for a user'
              EQUALITY caseIgnoreMatch
              SUBSTR caseIgnoreSubstringsMatch
              ORDERING caseIgnoreOrderingMatch
              SYNTAX OMsDirectoryString )
      
      objectclass ( 1.3.6.1.4.1.5322.17.1.1 NAME 'authorizedServiceObject'
              DESC 'Auxiliary object class for adding authorizedService attribute'
              SUP top
              AUXILIARY
              MAY authorizedService )
      
      objectclass ( 1.3.6.1.4.1.5322.17.1.2 NAME 'hostObject'
              DESC 'Auxiliary object class for adding host attribute'
              SUP top
              AUXILIARY
              MAY host )
      
      objectclass ( 1.3.6.1.4.1.5322.17.1.3 NAME 'loginStatusObject'
              DESC 'Auxiliary object class for login status attribute'
              SUP top
              AUXILIARY
              MAY loginStatus )
      _EOF_
      

      复制到/etc/openldap/schema/ldapns.schema

    2. 配置slapd.conf配置文件

      include         /etc/openldap/schema/ldapns.schema
      include         /etc/openldap/schema/dyngroup.schema
      
      modulepath /usr/lib64/openldap
      moduleload dynlist.la
      
      overlay dynlist
      dynlist-attrset inetOrgPerson labeledURI
      
      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
      systemctl restart slapd
      
    3. 验证服务端是否正常加载

    4. 定义主机列表组

      cat << _EOF_ | ldapadd -x -W -H ldapi:/// -D cn=Manager,dc=gdy,dc=com
      dn: ou=servers,dc=gdy,dc=com
      objectClass: organizationalUnit
      ou: servers
      
      dn: ou=apphost,ou=servers,dc=gdy,dc=com
      objectClass: organizationalUnit
      objectClass: hostObject
      ou: apphost
      host: test01.gdy.com
      
      dn: ou=dbhost,ou=servers,dc=gdy,dc=com
      objectClass: organizationalUnit
      objectClass: hostObject
      ou: dbhost
      host: test02.gdy.com
      _EOF_
      
    5. 定义用户

      cat << _EOF_ | ldapadd -x -W -H ldapi:/// -D cn=Manager,dc=gdy,dc=com
      dn: uid=lisi,ou=people,dc=gdy,dc=com
      objectClass: posixAccount
      objectClass: shadowAccount
      objectClass: person
      objectClass: inetOrgPerson
      objectClass: hostObject
      cn: lisi
      sn: lisi
      uid: lisi
      userPassword: {CRYPT}$6$AgFUbww9$Pa70MIDhUT2z3.Sg83VRnWnaDRubTHJsSxYMzbD3LQlMmXX0VeqHRHd2usrJbId.oFOeoMKi3GC60qjIHUKqK.
      uidNumber: 10006
      gidNumber: 10010
      gecos: App Manager
      homeDirectory: /home/lisi
      loginShell: /bin/bash
      shadowLastChange: 15000
      shadowMin: 0
      shadowMax: 999999
      shadowWarning: 7
      shadowExpire: -1
      mobile: 13900001001
      mail: lisi@gdy.com
      labeledURI: ldap:///ou=apphost,ou=servers,dc=gdy,dc=com?host
      _EOF_
      
      cat << _EOF_ | ldapadd -x -W -H ldapi:/// -D cn=Manager,dc=gdy,dc=com
      dn: uid=zhangsan,ou=people,dc=gdy,dc=com
      objectClass: posixAccount
      objectClass: shadowAccount
      objectClass: person
      objectClass: inetOrgPerson
      objectClass: hostObject
      cn: zhangsan
      sn: zhangsan
      uid: zhangsan
      userPassword: {CRYPT}$6$0hM3RIS/$omCj0x/ggD.zy3pNNjVo80nhiYHbUvdQaBKsawBBTQ/r/KY2PD77NHDqEPgzZ1Wz2/ZiL./pL65BuNyZ1SHC41
      uidNumber: 10007
      gidNumber: 10011
      gecos: opteam
      homeDirectory: /home/zhangsan
      loginShell: /bin/bash
      shadowLastChange: 15000
      shadowMin: 0
      shadowMax: 999999
      shadowWarning: 7
      shadowExpire: -1
      mobile: 13900001002
      mail: zhangsan@gdy.com
      labeledURI: ldap:///ou=devhost,ou=servers,dc=gdy,dc=com?host
      _EOF_
      

    4. openldap客户端配置

    1. 定义FQDN解析, 已测试过如果不定义会登录不成功

      cat >> /etc/hosts << EOF
      192.168.244.17    mldap01.gdy.com    mldap01
      192.168.244.18    test01.gdy.com     test01
      
    2. pam_ldap.conf参数规划

      cat >> /etc/pam_ldap.conf  << EOF
      pam_check_host_attr yes
      EOF
      

    5. 客户端测试登录

    1. 正确实例

      [root@test01 ~]# ssh lisi@127.0.0.1    
      lisi@127.0.0.1's password: 
      Last login: Fri Jun  1 16:24:12 2018 from localhost
      [lisi@test01 ~]$ hostname
      test01.gdy.com
      
    2. 失败实例

      [root@test01 ~]# ssh zhangsan@127.0.0.1
      zhangsan@127.0.0.1's password: 
      Access denied for this host
      Connection closed by 127.0.0.1
      
    3. 如果用户没有配置好登录属性,服务器基本就全部登录不了。

    6. 故障处理

    1. PS1变量失效,错误如下

      [root@test01 home]# ssh lisi@127.0.0.1
      lisi@127.0.0.1's password: 
      Permission denied, please try again.
      lisi@127.0.0.1's password: 
      Last login: Fri Jun  1 14:10:53 2018 from localhost
      -sh-4.1$      # 发现显示不正常
      

      解决方法:重新配置了一遍,发现loginShell忘记定义或者定义有问题导致loginShell属性不存在。所以会产生如上bug。

  • 相关阅读:
    [原创]在Windows平台使用msvc(cl.exe) + vscode编写和调试C/C++代码
    几种动态调用js函数方案的性能比较
    z-index随笔
    [原]配置多个密钥免密码登录服务器简明教程
    [转]为 windows cmd 设置代理
    [原创]实现多层DIV叠加的js事件穿透
    [转]linux terminal中使用proxy
    [转]jquery中innerWidth(),outerWidth(),outerWidth(true)和width()的区别
    [转]React表单无法输入原因----约束性和非约束性组件
    [原创]aaencode等类似js加密方案破解方法
  • 原文地址:https://www.cnblogs.com/cishi/p/9160554.html
Copyright © 2011-2022 走看看