第 9 章 加密复制更改日志

如果攻击者获得服务器文件系统的访问权限,加密复制更改日志以增强您的实例的安全性。

更改日志加密使用服务器的 TLS 加密密钥和相同的 PIN 解锁密钥。您必须在服务器启动时手动输入 PIN,或使用 PIN 文件。

目录服务器使用随机生成的对称密码密钥来加密和解密 changelog。服务器为每个配置的密码使用单独的密钥。这些密钥使用服务器 TLS 证书中的公钥进行嵌套,生成的密钥将存储在服务器配置文件中。属性加密的有效强度与用于嵌套的 TLS 密钥的优点相同。如果没有访问服务器的私钥和 PIN,则无法从嵌套的副本中恢复对称密钥。

9.1. 使用命令行加密 changelog

要在复制拓扑中提高安全性,请加密供应商和 hub 上的更改日志。这个步骤描述了如何为 dc=example,dc=com 后缀启用 changelog 加密。

前提条件

  • 服务器启用了 TLS 加密。
  • 主机是复制拓扑中的供应商或 hub。

流程

  1. 将 changelog 导出到 /tmp/changelog.ldif 文件:

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication export-changelog to-ldif -o /tmp/changelog.ldif -r "dc=example,dc=com"
  2. dc=example,dc=com 后缀启用更改日志加密:

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication --suffix "dc=example,dc=com" --encrypt
  3. /tmp/changelog.ldif 文件中导入 changelog:

    # dsconf -D "cn=Directory Manager" ldap://server.example.com replication import-changelog from-ldif -r "dc=example,dc=com" /tmp/changelog.ldif
  4. 重启实例:

    # dsctl instance_name restart

验证

  1. 在 LDAP 目录中进行更改,例如更新条目。
  2. 停止实例:

    # dsctl instance_name stop
  3. 列出后缀及其对应的数据库:

    # dsconf -D "cn=Directory Manager" ldap://server.example.com backend suffix list
    dc=example,dc=com (userroot)

    记录启用 changelog 加密的数据库名称。

  4. 输入以下命令显示 changelog 的部分:

    # dbscan -f /var/lib/dirsrv/slapd-instance_name/db/userroot/replication_changelog.db | tail -50

    如果对更改日志进行加密,您只看到加密的数据。

  5. 启动该实例。

    # dsctl instance_name start