已安装系统的 /etc/openldap/slapd.conf 中包含 LDAP 服务器的完整配置文件。在此简述了其中的各个项并说明了必要的调整。以符号 (#) 为前缀的项处于非活动状态。必须取消这个注释字符才能激活这些项。

slapd.conf 中的全局指令

1.用于加载schema模式的 Include 指令

include         /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/rfc2307bis.schema
include /etc/openldap/schema/yast.schema

这是 slapd.conf 中的第一个指令,用于指定组织 LDAP 目录所依据的模式。core.schema 是必需项。所需的其余模式会追加到此指令中。在包含的 OpenLDAP 文档中查找信息。

2.pidfile 和 argsfile

pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args

这两个文件包含启动 slapd 进程所用的 PID(进程 ID)和一些参数。

3.访问控制

# Sample Access Control
# Allow read access of root DSE
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
# access to dn="" by * read
access to * by self write
by users read
by anonymous auth
#
# if no access controls are present, the default is:
# Allow read by all
#
# rootdn can always write!

此选项涉及如何管理服务器上的 LDAP 目录的访问权限。只要在数据库特定部分没有声明任何自定义访问规则,slapd.conf 的全局部分中的设置将始终有效。这些自定义声明会重写全局声明。如本例所示,所有用户都可以读取目录,但只有管理员 (rootdn) 才能写入此目录。LDAP 中的访问控制管理是一个非常复杂的过程。以下提示会有所帮助:

  • 每条访问规则都具有如下结构:

    access to <what> by <who> <access>
  • what 是一个占位符,表示授权访问的对象或属性。可以使用单独的规则来明确保护各个目录分支。还可以使用正则表达式通过一条规则处理目录树的各个区域。slapd 按照各条规则列在配置文件中的先后顺序依次评估它们。较通用的规则应列在较特定的规则之后 - 在评估 slapd 认为有效的第一条规则之后,随后的所有项都将被忽略。

  • who 确定应该授权谁来访问 what 确定的区域。可以使用正则表达式。slapd 同样会在评估第一条有效规则之后中止对随后的 who 的评估,所以应将较具体的规则列在较抽象的规则之前。

    表 用户组及其访问授权

    标记

    范围

    *

    所有用户,无一例外

    anonymous

    未身份验证“匿名”用户

    users

    已身份验证用户

    self

    与目标对象连接的用户

    dn.regex=<regex>

    与正则表达式匹配的所有用户

  • access 指定访问类型。请使用 上表所列的选项。

    表 访问类型

    标记

    访问范围

    none

    无访问权

    auth

    用于联系服务器

    compare

    授予要进行比较访问的对象

    search

    用于应用搜索过滤器

    read

    读权限

    write

    写权限

    slapd 会将客户机请求的访问权限与 slapd.conf 中授予的权限进行对比。如果规则允许的权限等于或高于请求的权限,则可以授予客户机权限。如果客户机请求的权限高于规则中声明的权限,便会拒绝授予权限。

如下一个简单示例,使用正则表达式可以随意指定这样的简单访问控制。

access to  dn.regex="ou=([^,]+),dc=example,dc=com"
by dn.regex="cn=Administrator,ou=$1,dc=example,dc=com" write
by user read
by * none

此规则声明只有各个 ou 项的管理员才有权写入他/她所管理的项。其他所有通过身份验证的用户只有读权限,其余人没有任何权限。

如果没有  access to 规则或匹配的  by 指令,则拒绝访问。只有经过显式声明才能授予访问权限。如果根本没有声明任何规则,默认规则是管理员具有写权限,其他所有用户都具有读权限。 

除了可以使用中央服务器配置文件 (slapd.conf) 管理访问权限之外,还可以使用访问控制信息 (ACI)。ACI 允许储存 LDAP 树中各个对象的访问信息。

slapd.conf 中的数据库特定指令

特定于数据库的指令

database bdb
suffix "dc=example,dc=com"
checkpoint 1024 5
cachesize 10000
rootdn "cn=Administrator,dc=example,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoided. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw secret
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd/tools. Mode 700 recommended.
directory /var/lib/ldap
# Indices to maintain
index objectClass eq
overlay ppolicy
ppolicy_default "cn=Default Password Policy,dc=example,dc=com"
ppolicy_hash_cleartext
ppolicy_use_lockout

数据库类型(本案例中为 Berkeley)是在本部分的第一行设置的(请参见例 36.6 “slapd.conf:特定于数据库的指令”)。

suffix 确定服务器应负责的 LDAP 树的部分。

checkpoint 确定写入真实数据库前保留在事务日志中的数据量(以 KB 为单位)以及两次写操作之间的时间(以分钟为单位)。

cachesize 设置保留在数据库缓存中的对象数。

rootdn 确定拥有此服务器的管理员权限的用户。在此声明的用户不必拥有 LDAP 项,也不必是普通用户。

rootpw 设置管理员密码。在此不必使用 secret,可以输入 slappasswd 创建的管理员密码的哈希值。

directory 指令表明数据库目录储存在服务器的文件系统中的哪个目录中。

最后一个指令 index objectClass eq 指示对所有对象类的索引进行维护。可以在此根据经验添加用户最常搜索的属性。

overlay ppolicy 添加一个密码控制机制层。ppolicy_default 指定给定用户项上未设置特定策略时要使用的 pwdPolicy 对象的 DN。如果对某项无特定策略,且未给定默认值,则不会强加任何策略。ppolicy_hash_cleartext 指定显示在添加和修改请求中的明文密码在储存到数据库中之前会执行哈希运算。使用此选项时,建议拒绝所有目录用户对 userPassword 属性的比较、搜索和读访问,因为 ppolicy_hash_cleartext 违反了 X.500/LDAP 信息模型。当某客户机尝试连接锁定帐户时,ppolicy_use_lockout 会发送一个特定的错误代码。如果您的站点对安全问题敏感,请禁用此选项,因为错误代码会向攻击者提供有用的信息。

在此为数据库自定义的 Access 规则将取代全局 Access 规则

openldap slapd.conf参数的更多相关文章

  1. ubuntu 12.04下安装openldap,slapd.conf找不到的解决方法

    https://help.ubuntu.com/12.04/serverguide/openldap-server.html ubuntu安装openldap经历了一系列挫折,网上找了半天资料都是一模 ...

  2. /etc/sysctl.conf参数解释

    /etc/sysctl.conf参数解释: fs.file max = 999999 #表示进程(例如一个worker进程)可能同时打开的最大句柄数,直接限制最大并发连接数 net.ipv4.tcp_ ...

  3. sphinx配置文件sphinx.conf参数详细说明

    sphinx配置文件sphinx.conf参数详细说明 sphinx.conf各个参数详细说明 # # Sphinx configuration file sample # # WARNING! Wh ...

  4. KingbaseES R6 集群repmgr.conf参数'recovery'测试案例(一)

    KingbaseES R6集群repmgr.conf参数'recovery'测试案例(一) 案例说明: 在KingbaseES R6集群中,主库节点出现宕机(如重启或关机),会产生主备切换,但是当主库 ...

  5. Redis配置文件redis.conf参数配置详解

    ########################################## 常规 ########################################## daemonize n ...

  6. Apache的配置文件http.conf参数含义详解

    Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改. 主站点的配置(基本配置) (1) 基本配置: ServerRoot "/mnt/s ...

  7. Redis学习笔记--Redis配置文件redis.conf参数配置详解

    ########################################## 常规 ########################################## daemonize n ...

  8. Redis学习笔记--Redis配置文件Sentinel.conf参数配置详解

    redis-sentinel.conf配置项说明如下: 1.port 26379 sentinel监听端口,默认是26379,可以修改. 2.sentinel monitor <master-n ...

  9. 3-nginx.conf参数配置

    –#定义Nginx运行的用户和用户组 –user www www; –#nginx进程数,建议设置为等于CPU总核心数. –worker_processes8; –#全局错误日志定义类型,[ debu ...

随机推荐

  1. 对C语言中指针的入门理解

    通过一个例子引出对指针的概念理解 1,例子 #include<stdio.h> int main(void) { ; //小张的身高 ; //小李的身高 ; //小王的身高 int *xi ...

  2. c# 生成随机时间

    Random random = new Random((int)(DateTime.Now.Ticks)); ; ) { , ); , ); , ); string tempStr = string. ...

  3. 从SQL查询分析器中读取EXCEL中的内容

    很早以前就用sql查询分析器来操作过EXCEL文件了. 由于对于excel公式并不是很了解,所以很多时候处理excel中的内容,常常是用sql语句来处理的.[什么样的人有什么样的办法吧 :)] 今又要 ...

  4. Linux及Windows系统配置JDK环境变量

    1.Linux系统配置方法 记住,要下载JDK-8u121-linux-x64.tar.gz,而不是JRE-8u121-linux-x64.tar.gz,JDK中含很多开发者实用工具,比如javac. ...

  5. (实用)Ubuntu 、CentOS更换国内源

    Ubuntu更换apt-get源 通过编辑/etc/apt/sources.list文件,我们能够更换Ubuntu的默认软件更新源.通常是将其换成一些国内比较知名的源.本文主要列举这些内容. 注意,在 ...

  6. 使用DUPLICATE 方式创建ORACLE 11G DG备库环境

    我的最佳实践 ① 手动创建好初始化参数文件: *.audit_file_dest='E:\APP\XJXU\ADMIN\ORASTAND\ADUMP'*.control_files='E:\APP\X ...

  7. Kafka配置说明

    Broker  Configs Property Default Description broker.id   每个broker都可以用一个唯一的非负整数id进行标识:这个id可以作为broker的 ...

  8. Vue-router路由判断页面未登录跳转到登录页面

    router.beforeEach((to, from, next) => { if (to.matched.some(record => record.meta.requireAuth) ...

  9. ubuntu12.04 折腾流水

    今天突然间update 一些软件后,就遇到了无法启动桌面,就是输入正确的用户名和密码后还是无法进入系统. 重启后,一直停留在waiting for network configuration, 然后显 ...

  10. 临时解决Apache服务器假死的参数配置

    <IfModule mpm_prefork_module> StartServers MinSpareServers MaxSpareServers MaxClients MaxReque ...