Automatic lockout of users after failed login attempts

6.6. Automatic lockout of users after failed login attempts#

By default, a user can enter their password incorrectly any number of times. To hinder brute force attacks on passwords, an automatic lockout for user accounts can be activated after a configured number of failed login attempts.

UCS unifies various methods for user authentication and authorization. Depending on the installed software components, there may be different mechanisms for configuring and counting failed login attempts.

The three different methods are described in the next sections.

6.6.1. Samba Active Directory Service#

In Samba Active Directory environments, various services are provided by Samba, such as Kerberos. To lockout users after too many failed login attempts, the tool samba-tool can be used.

  • To show the currently configured values:

    $ samba-tool domain passwordsettings show
    
  • To specify how often a user can attempt to sign in with an incorrect password before the account is locked:

    $ samba-tool domain passwordsettings set --account-lockout-threshold=5
    
  • To specify the number of minutes an account will be locked after too many incorrect passwords have been entered:

    $ samba-tool domain passwordsettings set --account-lockout-duration=3
    
  • To define the number of minutes after which the counter is reset:

    $ samba-tool domain passwordsettings set --reset-account-lockout-after=5
    

    If an account gets automatically unlocked after the lockout duration, the counter is not reset immediately, to keep the account under strict monitoring for some time. During the time window between the end of the lockout duration and the point when the counter gets reset, a single attempt to sign in with an incorrect password will lock the account immediately again.

The manual unlocking of a user is done in the user administration on the tab Account by activating the checkbox Unlock account.

6.6.2. PAM-Stack#

The automatic locking of users after failed logins in the PAM stack can be enabled by setting the Univention Configuration Registry Variable auth/faillog to yes. The upper limit of failed login attempts at which an account lockout is configured in the Univention Configuration Registry Variable auth/faillog/limit. The counter is reset each time the password is entered correctly.

The lockout is activated locally per system by default. In other words, if a user enters their password incorrectly too many times on one system, they can still login on another system. Setting the Univention Configuration Registry Variable auth/faillog/lock_global will make the lock effective globally and register it in the LDAP directory. The global lock can only be set on Primary Directory Node/Backup systems as other system roles do not have the necessary permissions in the LDAP directory. On all systems with any of these system roles, the lockout gets automatically activated locally or deactivated again via the listener module, depending on the current lock state in the LDAP directory.

As standard, the lockout is not subject to time limitations and must be reset by the administrator. However, it can also be reset automatically after a certain time interval has elapsed. This is done by specifying a time period in seconds in the Univention Configuration Registry Variable auth/faillog/unlock_time. If the value is set to 0, the lock is reset immediately.

By default, the root user is excluded from the password lock, but can also be subjected to it by setting the Univention Configuration Registry Variable auth/faillog/root to yes.

If accounts are only locked locally, the administrator can unlock a user account by entering the command:

$ faillog -r -u USERNAME

If the lock occurs globally in the LDAP directory, the user can be reset in the Univention Management Console module Users on the tab Account via the checkbox Unlock account.

6.6.3. OpenLDAP#

On UCS Directory Nodes, automatic account locking can be enabled for too many failed LDAP server login attempts. The MDB LDAP backend must be used. This is the default backend since UCS 4, previous systems must be migrated to the MDB LDAP backend, see UCS performance guide [5].

Automatic account locking must be enabled for each UCS Directory Node. To do this, the Univention Configuration Registry Variables ldap/ppolicy and ldap/ppolicy/enabled must be set to yes and the OpenLDAP server must be restarted:

$ ucr set ldap/ppolicy=yes ldap/ppolicy/enabled=yes
$ systemctl restart slapd

The default policy is designed so that five repeated failed LDAP server login attempts within five minutes cause the lockout. A locked account can only be unlocked by a domain administrator through the UMC module Users via the checkbox Unlock account on the Account tab.

The number of repeated failed LDAP server login attempts can be adjusted in the configuration object with the objectClass pwdPolicy:

$ univention-ldapsearch objectclass=pwdPolicy
pwdMaxFailure

attribute determines the number of LDAP authentication errors before locking.

pwdMaxFailureCountInterval

attribute determines the time interval in seconds that is considered. Failed login attempts outside this interval are ignored in the count.

The following command can be used to block the account after 10 attempts:

$ LB="$(ucr get ldap/base)"
$ ldapmodify -x -D "cn=admin,$LB" -y /etc/ldap.secret <<__EOT__
dn: cn=default,cn=ppolicy,cn=univention,$LB
changetype: modify
replace: pwdMaxFailure
pwdMaxFailure: 10
__EOT__

The manual unlocking of a user is done in the user administration on the tab Account by activating the checkbox Unlock account.