第 14 章 配置基于密码的帐户锁定策略

基于密码的帐户锁定策略可防止攻击者重复尝试猜测用户密码。您可以配置帐户锁定策略,以在指定次数尝试绑定失败后锁定用户帐户。

如果配置了基于密码的帐户锁定策略,Directory 服务器会在以下用户条目的属性中维护锁定信息:

  • passwordRetryCount :存储失败的绑定尝试次数。如果用户成功绑定到 目录,则目录服务器会重置值,超过 retryCountResetTime 中的时间。用户第一次绑定后会存在此属性。
  • retryCountResetTime :存储 reset passwordRetryCount 属性的时间。用户第一次绑定后会存在此属性。
  • accountUnlockTime :存储用户帐户被解锁的时间。此属性会在帐户首次锁定后存在。

14.1. 配置是否在达到或超过配置的最大尝试时锁定帐户

当 Directory Server 锁定帐户失败时,管理员可以配置以下任一行为:

  • 如果超过限制,服务器会锁定帐户。例如,如果将限制设定为 3 次,则第四次尝试后会出现锁定(n+1)。这也意味着如果第四次尝试成功,Directory 服务器也不会锁定帐户。

    默认情况下,Directory 服务器使用此传统密码策略,这些密码通常是由传统 LDAP 客户端所期望的。

  • 如果达到限制,服务器会锁定帐户。例如,如果将限制设定为 3 次,则服务器在第三个尝试失败后锁定帐户(n)。

    现代 LDAP 客户端通常期望此行为。

这个步骤描述了如何禁用旧密码策略。更改策略后,Directory 服务器会阻止访问所配置限制的用户的登录尝试。

前提条件

  • 已配置了一个帐户锁定策略。

流程

  • 要禁用旧密码策略并在达到限制时锁定帐户,请输入:

    # dsconf -D "cn=Directory Manager" ldap://server.example.com config replace passwordLegacyPolicy=off

验证

  1. 显示 passwordmaxfailure 设置的值:

    # dsconf -D "cn=Directory Manager" ldap://server.example.com pwpolicy get passwordmaxfailure
    passwordmaxfailure: 2
  2. 尝试绑定使用无效密码的时间超过 passwordmaxfailure 中设置的值:

    # ldapsearch -H ldap://server.example.com -D "uid=example,ou=People,dc=example,dc=com" -w invalid-password -b "dc=example,dc=com" -x
    ldap_bind: Invalid credentials (49)
    
    # ldapsearch -H ldap://server.example.com -D "uid=example,ou=People,dc=example,dc=com" -w invalid-password -b "dc=example,dc=com" -x
    ldap_bind: Invalid credentials (49)
    
    # ldapsearch -H ldap://server.example.com -D "uid=example,ou=People,dc=example,dc=com" -w invalid-password -b "dc=example,dc=com" -x
    ldap_bind: Constraint violation (19)
    	additional info: Exceed password retry limit. Please try later.

    禁用旧密码后,Directory 服务器在第二次尝试后锁定帐户,而进一步尝试会使用 ldap_bind: Constraint violation (19) 错误阻止。