zoukankan      html  css  js  c++  java
  • openldap 2.4 centos7 常用配置

    新版的openldap弃用了sldap.conf配置文件,引入一种动态配置,所以尽量不要直接修改配文件

    如果直接修改了配置文件可以用slaptest -u命令检查

    1、安装openldap,可能需要epel源

    yum install openldap openldap-clients openldap-servers

    2、启动openldap

    systemctl start slapd 
    systemctl enable slapd

     检查一下是否有输出

    ldapsearch -x -b '' -s base'(objectclass=*)'

     

    3、配置ldap超级管理员

    生成密码,等一下作为 olcRootPW 的值

    slappasswd -s "pass"

    创建admin.ldif 文件

    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    replace: olcSuffix
    olcSuffix: dc=example,dc=com
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    replace: olcRootDN
    olcRootDN: cn=example,dc=taovip,dc=com
    
    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    replace: olcRootPW
    olcRootPW: {SSHA}FqSgnCQY0evw7T3pZRfnKVHByAOhNSFS4
    
    dn: olcDatabase={1}monitor,cn=config
    changetype: modify
    replace: olcAccess
    olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
     al,cn=auth" read by dn.base="cn=root,dc=example,dc=com" read by * none

    导入配置

    ldapmodify -Y EXTERNAL -H ldapi:/// -f admin.ldif

    4、配置数据库

    openldap默认使用的数据库是BerkeleyDB

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

    导入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

    5、创建默认DN

    创建base.ldif 文件

    dn: dc=example,dc=com
    o: company
    objectClass: top
    objectclass: dcObject
    objectclass: organization
    
    dn: cn=root,dc=example,dc=com
    cn: root
    objectClass: organizationalRole
    description: Directory Manage

    导入配置

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

     修改/etc/openldap/ldap.conf 加入一行默认DN如果不加 ldapsearch 不指定DN是无法搜到数据

    BASE    dc=example,dc=com

    查一下是否有刚才加的DN

    ldapsearch -x -D "cn=root,dc=example,dc=com" -W

    6、开启memberOf

    默认情况下openldap的用户组属性是Posixgroup,Posixgroup用户组属性和用户没有实际的对应关系。如果要对应起来的话,就需要单独把用户设置到Posixgroup中

    开启memberOf之后可以配置groupOfUniqueNames用户组属性,可以根据用户组过滤用户,这个过滤是唯一的

    开启memberof,并让新增用户支持memberof

    创建 memberof_config.ldif

    dn: cn=module{0},cn=config
    cn: modulle{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: groupOfNames
    olcMemberOfMemberAD: member
    olcMemberOfMemberOfAD: memberOf

    创建 refint1.ldif

    dn: cn=module{0},cn=config
    add: olcmoduleload
    olcmoduleload: refint

    创建 refint2.ldif

    dn: olcOverlay=refint,olcDatabase={2}hdb,cn=config
    objectClass: olcConfig
    objectClass: olcOverlayConfig
    objectClass: olcRefintConfig
    objectClass: top
    olcOverlay: refint
    olcRefintAttribute: memberof member manager owner

    导入配置

    ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof_config.ldif
    ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif
    ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif

    验证一下配置,这个命令可以列出所有配置

    slapcat -b cn=config

    7、创建用户和组

    创建文件add_user.ldif

    dn: cn=user,dc=example,dc=com
    cn: user
    sn: user
    uid: user
    objectClass: top
    objectClass: shadowAccount
    objectClass: inetOrgPerson
    objectClass: organizationalPerson
    objectClass: person
    userPassword: {MD5}ICy5YqxZB1uWSwcVLDFSDSNLcA==

    创建add_group.ldif

    dn: cn=users,dc=example,dc=com
    objectClass: groupofnames
    cn: users
    description: default group
    member: cn=user,dc=taovip,dc=com

    导入配置

    ldapadd -x -D cn=root,dc=example,dc=com -W -f add_user.ldif
    ldapadd -x -D cn=root,dc=example,dc=com -W -f add_group.ldif

    8、打开openldap日志

    配置rsyslog

    mkdir -p /var/log/slapd
    touch /var/log/slapd/slapd.log
    chown -R ldap.ldap /var/log/slapd
    echo "local4.* /var/log/slapd/slapd.log" >> /etc/rsyslog.conf systemctl restart rsyslog

    注意olcLogLevel这个属性"-1"是指开启debug日志,请参考http://www.openldap.org/doc/admin24/slapdconf2.html

    创建log.ldif

    dn: cn=config
    changetype: modify
    add: olcLogLevel
    olcLogLevel: -1

    导入配置

    ldapadd -Q -Y EXTERNAL -H ldapi:/// -f log.ldif

    9、禁止匿名访问

    默认情况下匿名用户可以获取所有用户信息,甚至是密码字段,虽然密码字段是经过加密的那也很危险

    创建disable_anon.ldif文件

    dn: cn=config
    changetype: modify
    add: olcDisallows
    olcDisallows: bind_anon
    
    dn: cn=config
    changetype: modify
    add: olcRequires
    olcRequires: authc
    
    dn: olcDatabase={-1}frontend,cn=config
    changetype: modify
    add: olcRequires
    olcRequires: authc

    导入配置

    ldapadd -Q -Y EXTERNAL -H ldapi:/// -f disable_anon.ldif 

    10、设置ACL

    拒绝所有用户查看用户信息,并且添加有ldap管理账号

    创建acl.ldif

    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    replace: olcAccess
    olcAccess: to attrs=userPassword
      by anonymous auth
      by dn.base="cn=ldapadmin,ou=manage,dc=taovip,dc=com" write
      by * none
    olcAccess: to *
      by anonymous auth
      by dn.base="cn=ldapadmin,ou=manage,dc=taovip,dc=com" write
      by dn.base="cn=ldapread,ou=manage,dc=taovip,dc=com" read
      by * none

    导入配置

    ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f acl.ldif 

    删除ACL

    创建文件del_acl.ldif

    dn: olcDatabase={2}hdb,cn=config
    changetype: modify
    delete: olcAccess
    olcAccess: {0}
    ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f acl.ldif 

    创建管理用户

    创建add_ou.ldif

    dn: ou=manage,dc=example,dc=com
    ou: manage
    description: Directory Manage
    objectClass: top
    objectClass: organizationalUnit

    创建add_manage_user.ldif

    dn: cn=ldapadmin,ou=manage,dc=example,dc=com
    cn: ldapadmin
    sn: ldapadmin
    uid: ldapadmin
    objectClass: top
    objectClass: shadowAccount
    objectClass: inetOrgPerson
    objectClass: organizationalPerson
    objectClass: person
    userPassword: {SSHA}4eDZHnxvfOOoAgSM6tDLDueCIUB9sRuDHVpVJ
    
    dn: cn=ldapread,ou=manage,dc=example,dc=com
    cn: ldapread
    sn: ldapread
    uid: ldapread
    objectClass: top
    objectClass: shadowAccount
    objectClass: inetOrgPerson
    objectClass: organizationalPerson
    objectClass: person
    userPassword: {SSHA}4eDZHnxvfOOoAgSM6tDLDueCIUB9sRuDHVpVJ

    导入配置

    ldapadd -x -D cn=root,dc=example,dc=com -W -f add_ou.ldif
    ldapadd -x -D cn=root,dc=example,dc=com -W -f add_manage_user.ldif
  • 相关阅读:
    Android 源码阅读之MMS细读TransactionService.java
    [Java2 入门经典]第16章 线程
    Android 源码阅读之建立3G网络流程
    从架构上看Android多媒体播放器
    Android 开发日志之仿三星Launcher
    非常适合OA系统的菜单
    模拟动网当前位置下拉菜单
    模拟windows菜单选项卡效果
    TreeView的各种操作
    ASCII表
  • 原文地址:https://www.cnblogs.com/37yan/p/11171913.html
Copyright © 2011-2022 走看看