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

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

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

  1. yum install openldap openldap-clients openldap-servers

2、启动openldap

  1. systemctl start slapd
    systemctl enable slapd

检查一下是否有输出

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

 

3、配置ldap超级管理员

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

  1. slappasswd -s "pass"

创建admin.ldif 文件

  1. dn: olcDatabase={}hdb,cn=config
  2. changetype: modify
  3. replace: olcSuffix
  4. olcSuffix: dc=example,dc=com
  5.  
  6. dn: olcDatabase={}hdb,cn=config
  7. changetype: modify
  8. replace: olcRootDN
  9. olcRootDN: cn=example,dc=taovip,dc=com
  10.  
  11. dn: olcDatabase={}hdb,cn=config
  12. changetype: modify
  13. replace: olcRootPW
  14. olcRootPW: {SSHA}FqSgnCQY0evw7T3pZRfnKVHByAOhNSFS4
  15.  
  16. dn: olcDatabase={}monitor,cn=config
  17. changetype: modify
  18. replace: olcAccess
  19. olcAccess: {}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
  20. al,cn=auth" read by dn.base="cn=root,dc=example,dc=com" read by * none

导入配置

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

4、配置数据库

openldap默认使用的数据库是BerkeleyDB

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

导入schema

  1. ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
  2. ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
  3. ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

5、创建默认DN

创建base.ldif 文件

  1. dn: dc=example,dc=com
  2. o: company
  3. objectClass: top
  4. objectclass: dcObject
  5. objectclass: organization
  6.  
  7. dn: cn=root,dc=example,dc=com
  8. cn: root
  9. objectClass: organizationalRole
  10. description: Directory Manage

导入配置

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

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

  1. BASE dc=example,dc=com

查一下是否有刚才加的DN

  1. 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

  1. dn: cn=module{0},cn=config
  2. add: olcmoduleload
  3. olcmoduleload: refint

创建 refint2.ldif

  1. dn: olcOverlay=refint,olcDatabase={2}hdb,cn=config
  2. objectClass: olcConfig
  3. objectClass: olcOverlayConfig
  4. objectClass: olcRefintConfig
  5. objectClass: top
  6. olcOverlay: refint
  7. olcRefintAttribute: memberof member manager owner

导入配置

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

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

  1. slapcat -b cn=config

7、创建用户和组

创建文件add_user.ldif

  1. dn: cn=user,dc=example,dc=com
  2. cn: user
  3. sn: user
  4. uid: user
  5. objectClass: top
  6. objectClass: shadowAccount
  7. objectClass: inetOrgPerson
  8. objectClass: organizationalPerson
  9. objectClass: person
  10. userPassword: {MD5}ICy5YqxZB1uWSwcVLDFSDSNLcA==

创建add_group.ldif

  1. dn: cn=users,dc=example,dc=com
  2. objectClass: groupofnames
  3. cn: users
  4. description: default group
  5. member: cn=user,dc=taovip,dc=com

导入配置

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

8、打开openldap日志

配置rsyslog

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

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

创建log.ldif

  1. dn: cn=config
  2. changetype: modify
  3. add: olcLogLevel
  4. olcLogLevel: -

导入配置

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

9、禁止匿名访问

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

创建disable_anon.ldif文件

  1. dn: cn=config
  2. changetype: modify
  3. add: olcDisallows
  4. olcDisallows: bind_anon
  5.  
  6. dn: cn=config
  7. changetype: modify
  8. add: olcRequires
  9. olcRequires: authc
  10.  
  11. dn: olcDatabase={-}frontend,cn=config
  12. changetype: modify
  13. add: olcRequires
  14. olcRequires: authc

导入配置

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

10、设置ACL

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

创建acl.ldif

  1. dn: olcDatabase={}hdb,cn=config
  2. changetype: modify
  3. replace: olcAccess
  4. olcAccess: to attrs=userPassword
  5. by anonymous auth
  6. by dn.base="cn=ldapadmin,ou=manage,dc=taovip,dc=com" write
  7. by * none
  8. olcAccess: to *
  9. by anonymous auth
  10. by dn.base="cn=ldapadmin,ou=manage,dc=taovip,dc=com" write
  11. by dn.base="cn=ldapread,ou=manage,dc=taovip,dc=com" read
  12. by * none

导入配置

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

删除ACL

创建文件del_acl.ldif

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

创建管理用户

创建add_ou.ldif

  1. dn: ou=manage,dc=example,dc=com
  2. ou: manage
  3. description: Directory Manage
  4. objectClass: top
  5. objectClass: organizationalUnit

创建add_manage_user.ldif

  1. dn: cn=ldapadmin,ou=manage,dc=example,dc=com
  2. cn: ldapadmin
  3. sn: ldapadmin
  4. uid: ldapadmin
  5. objectClass: top
  6. objectClass: shadowAccount
  7. objectClass: inetOrgPerson
  8. objectClass: organizationalPerson
  9. objectClass: person
  10. userPassword: {SSHA}4eDZHnxvfOOoAgSM6tDLDueCIUB9sRuDHVpVJ
  11.  
  12. dn: cn=ldapread,ou=manage,dc=example,dc=com
  13. cn: ldapread
  14. sn: ldapread
  15. uid: ldapread
  16. objectClass: top
  17. objectClass: shadowAccount
  18. objectClass: inetOrgPerson
  19. objectClass: organizationalPerson
  20. objectClass: person
  21. userPassword: {SSHA}4eDZHnxvfOOoAgSM6tDLDueCIUB9sRuDHVpVJ

导入配置

  1. ldapadd -x -D cn=root,dc=example,dc=com -W -f add_ou.ldif
  2. ldapadd -x -D cn=root,dc=example,dc=com -W -f add_manage_user.ldif

openldap 2.4 centos7 常用配置的更多相关文章

  1. VMware中安装CentOS7网络配置静态IP地址,常用配置和工具安装

    VMware中安装CentOS7网络配置静态IP地址,常用配置和工具安装在阿里云开源镜像地址下载镜像Index of /centos/7.2.1511/isos/x86_64/http://mirro ...

  2. centOS7.2防火墙常用配置(转)

    centOS7.2防火墙常用配置   firewall-cmd --state #查看默认防火墙状态(关闭后显示not running,开启后显示running) systemctl stop fir ...

  3. httpd2.4常用配置

    author:JevonWei 版权声明:原创作品 httpd 2.4配置 切换使用的MPM Centos7:/etc/httpd/conf.modules.d/00-mpm.conf 启用要启用的M ...

  4. CENTOS7常用的基础命令集合(一)

    目录(?)[-] CentOS7 常用命令集合 常用命令 文件与目录操作 查看文件内容 文本内容处理 查询操作 压缩解压 yum安装器 网络相关 系统相关 系统服务启动相关 防火墙相关 RPM包管理 ...

  5. LINUX服务器搭建和常用配置介绍

    服务器搭建 : 搭建私有CA服务器 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_011_ca.html搭建samba服务器 : h ...

  6. Centos7安装配置Apache+PHP+Mysql+phpmyadmin

    转载自: Centos7安装配置Apache+PHP+Mysql+phpmyadmin 一.安装Apache yum install httpd 安装成功后,Apache操作命令: systemctl ...

  7. VMware14 安装CentOS7及其配置;CentOS7配置网桥,做远程连接;

    1.VMware14安装        进入百度链接,按照图形安装就好了.https://jingyan.baidu.com/article/9f7e7ec09da5906f281554d6.html ...

  8. centos7常用命令集合

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   CentOS7 常用命令集合 这两天一直在对CentOS 7.2进行初体验,各种学习命令肿么用,不过其实大多和DOS是一 ...

  9. MySQL常用配置和性能压力测试:MySQL系列之十五

    一.MySQL常用配置 以下所有配置参数以32G内存的服务器为基 1.打开独立的表空间 innodb_file_per_table = 1 2.MySQL服务所允许的同时会话数的上限,默认为151,经 ...

随机推荐

  1. Maven使用初步

    一.安装: 1.下载:http://maven.apache.org/download.cgi 2.设置环境变量 1.创建"M2_HOME",值为Maven安装路径(如:D:\Ja ...

  2. C++函数或者命名空间前面加::

    命名空间和函数前面加上:: 经常看到命名空间前就只有:: 比如  ::test;这种代表是全局的test 比如  ::CreateDirectory(..),代表使用系统API也就是全局的 避免使用到 ...

  3. show master status

    只有在主库上执行才能有效抵输出: 具体文档如下: # 在127.:3306主库上执行 tmp@127.0.0.1 ((none))> show variables like '%server%' ...

  4. ros python

    https://www.ncnynl.com/archives/201611/1059.html python的节点需要对节点设置权限为可执行,在.py文件所在的路径执行如下命令 $ touch ta ...

  5. 安装vmware和装虚拟机

    今日任务 .Linux发行版的选择 .vmware创建一个虚拟机(centos) .安装配置centos7 .xshell配置连接虚拟机(centos) 选择性 pc可以选择 -纯系统 Linux/w ...

  6. 数据库insert和update

    1.当使用insert时不能使用where id=?,这是要使用update语句 2.只对一些列插入数据或者更新数据: insert是: insert tb(column1,column2..)val ...

  7. Python学习day39-并发编程(各种锁)

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  8. 很好用的API管理--Swagger

    1.打开NuGet程序包 2.安装下面两个程序包 3.安装完后会出现SwaggerConfig.cs类,并修改里面的内容 代码: [assembly: PreApplicationStartMetho ...

  9. 大批量数据导出excel

    有次面试时,老板问我大批量数据一次性导出会有什么问题 感谢度娘提供,感谢原博主提供 https://www.cnblogs.com/zou90512/p/3989450.html

  10. CAS企业级单点登录原理

    https://blog.csdn.net/anumbrella/article/details/80821486 1. 单点登录概述 1.1. 什么是单点登录? 单点登录:Single Sign O ...