Openldap 设置 olcOverlay:ppolicy

Openldap 设置 olcOverlay:ppolicy

问题:为什么我无法将对象类 pwdPolicy 添加到 cn=PasswordDefaults?


背景信息

我是 LDAP 新手,我正在网上浏览各种教程和其他提示,以便创建一个目录来处理用户信息。我正在尝试创建一个包含用户信息并强制执行密码策略的 LDAP 服务器。为了实现这一点,我认为我需要将 pwdPolicy 对象类添加到运行 2.4.40 的 LDAP 服务器的 ou=Policies 中。我大致遵循以下教程:

{
  Password Policy tutorial: https://tobrunet.ch/articles/openldap-password-policy-overlay/, 
  Getting started with OpenLDAP and CentOS7: https://www.server-world.info/en/note?os=CentOS_7&p=openldap&f=1, 
  Default and User Specific Password Policy: http://www.zytrax.com/books/ldap/ch6/ppolicy.html
}

我有一个目录布局如下:

-> Root stuff
  -> dc=example,dc=com
    -> cn=Manager (The olcRootDN)
    -> ou=User
       -> *Several entries with objectClasses {posixAccount, shadowAccount, inetOrgPerson}*
    -> ou=Policies (Not sure if this is here because not visible in Apache Directory Studio)
       -> cn=passwordDefault

以下是我尝试使用该策略所做的操作。

步骤 1-3 大致遵循OpenLDAP 与 OLC部分OpenLDAP 密码策略覆盖

步骤1:使用以下命令将 ppolicy 模式加载到 OLC:

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif

理解步骤 1:将 cn={5}ppolicy.ldif 添加到 /.../slap.d/cn=config/cn=schema

第2步:用以下命令加载模块:

ldapadd -D "cn=config" -W -f addPpolicyOverlay.ldif

addPpolicyOverlay.ldif 的内容

dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModuleLoad: ppolicy.la

对步骤2的理解:将 cn=module{0}.ldif 添加到 /.../slapd.d/cn=config。

步骤3:使用以下命令配置 ppolicy 覆盖:

ldapadd -D "cn=config" -W -f configurePpolicyOverlay.ldif

configurePpolicyOverlay.ldif 的内容

dn: olcOverlay=ppolicy,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcPPolicyConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=passwordDefault,ou=Policies,dc=example,dc=com
olcPPolicyHashCleartest: FALSE
olcPPolicyUseLockout: FALSE
olcPPolicyForwardUpdates: FALSE

对步骤 3 的理解:创建数据库并使用策略覆盖。在我的域 dc=example,dc=com 中创建 ou=Policies。我无法在 Apache Directory Studio 中探索 ou=Policies,尽管我相信它存在于 dc=example,dc=com 中

关于步骤 3 的问题:我现在是否有一个可行的默认密码策略?

步骤4:无法使用此命令将 pwdPolicy 对象类添加到 olcOverlay={0}ppolicy:

ldapmodify -a -D "cn=config" -W -f configureDefaultPpolicy.ldif

错误:ldapmodify: invalid format (line 5) entry: "olcOverlay={0}ppolicy,cn=olcDatabase={2}hdb,cn=config"

configureDefaultPpolicy.ldif 的内容

dn: olcOverlay={0}ppolicy,cn=oldDatabase={2}hdb,cn=config]
changetype: modify
olcObjectClasses: pwdPolicy
cn=passwordDefault,ou=Policies,dc=example,dc=com
pwdAttribute: userPassword
pwdAllowUserChange: TRUE
pwdInHistory: 50
pwdMaxFailure: 3
pwdMinLength: 8

关于步骤 4 的问题: https://i.stack.imgur.com/L8hqX.jpg (不够可信,无法嵌入图片:()

答案1

对步骤 3 的理解:创建数据库并使用策略覆盖。在我的域 dc=example,dc=com 中创建 ou=Policies。我无法在 Apache Directory Studio 中探索 ou=Policies,尽管我相信它存在于 dc=example,dc=com 中

它不会在数据库中创建任何东西dc=example,dc=com,它只是为该数据库使用的策略覆盖设置一些配置。

关于步骤 3 的问题:我现在是否有一个可行的默认密码策略?

不,按照您的教程,您必须在数据库中创建这些分支dc=example,dc=com才能放置 ppolicy:

它不是放在里面cn=config而是放在数据库中dc=example,dc=com

dn: ou=Policies,dc=example,dc=com
ou: Policies
objectClass: organizationalUnit

dn: cn=passwordDefault,ou=Policies,dc=example,dc=com
objectClass: pwdPolicy
objectClass: person
objectClass: top
cn: passwordDefault
sn: passwordDefault
pwdAttribute: userPassword
pwdCheckQuality: 0
pwdMinAge: 0
pwdMaxAge: 0
pwdMinLength: 8
pwdInHistory: 5
pwdMaxFailure: 3
pwdFailureCountInterval: 0
pwdLockout: TRUE
pwdLockoutDuration: 0
pwdAllowUserChange: TRUE
pwdExpireWarning: 0
pwdGraceAuthNLimit: 0
pwdMustChange: FALSE
pwdSafeModify: FALSE

对于步骤 4 的问题,我无法看到我的专业代理后面的 imgur 图像,但您尝试将 ppolicy 导入 cn=config 的事实应该是主要问题。

相关内容