openldap slapd.conf参数

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

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 中的访问控制管理是一个很是复杂的过程。如下提示会有所帮助:app

  • 每条访问规则都具备以下结构:ide

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

  • 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 bdb1
suffix "dc=example,dc=com"2 
checkpoint      1024    53
cachesize       100004
rootdn "cn=Administrator,dc=example,dc=com"5 
# Cleartext passwords, especially for the rootdn, should 
# be avoided.  See slappasswd(8) and slapd.conf(5) for details. 
# Use of strong authentication encouraged.
rootpw secret6 
# The database directory MUST exist prior to running slapd AND 
# should only be accessible by the slapd/tools. Mode 700 recommended. 
directory /var/lib/ldap7 
# Indices to maintain 
index   objectClass     eq8
overlay ppolicy9
ppolicy_default "cn=Default Password Policy,dc=example,dc=com"
ppolicy_hash_cleartext
ppolicy_use_lockout

1

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

2

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

3

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

4

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

5

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

6

rootpw 设置管理员密码。在此没必要使用 secret,能够输入 slappasswd 建立的管理员密码的哈希值。

7

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

8

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

9

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

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




相关文章
相关标签/搜索