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

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

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

  • passwordRetryCount :存储绑定尝试失败的数量。如果稍后用户成功绑定到目录,目录服务器会重置该值,而不是 retryCountResetTime 中的时间。用户第一次绑定失败时会出现此属性。
  • retryCountResetTime: 保存重置 passwordRetryCount 属性的时间。用户第一次绑定失败时会出现此属性。
  • accountUnlockTime :存储用户帐户被解锁的时间。此属性在帐户第一次锁定后存在。

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

当 Directory 服务器在登录失败时锁定帐户时,管理员可以配置以下行为之一:

  • 如果超过限制,服务器会锁定帐户。例如,如果将限制设定为 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) 错误阻止。