• openldap slapd.conf参数


    已安装系统的 /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 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 规则






  • 相关阅读:
    POJ 1556 The Doors (未完)
    setblendstate & setdepthstencilstate
    transparent 的新问题
    texCUBE() to CubemapSampler.Sample()
    error: The shader requires a sampler in slot 0 which hasn't been set [XXXsampler]
    error X3025:global variables are implicitly constant, enable compatibility mode to allow modification
    MSAA
    check environment var
    setDepthStencilState
    sampler state
  • 原文地址:https://www.cnblogs.com/pycode/p/9495810.html
Copyright © 2020-2023  润新知