Applies to:
Centrify DirectControl Suite 2015.1 (CDC 5.2.3) and lower version
Problem:
When a Centrified server binds to a Read Only Domain Controller (RODC) and at the time of changing machine password, if machine password failed to be verified with machine password cached in RODC due to refresh delay, Centrify agent will be disconnected from domain.
DEBUG <bg:machinepw> base.adagent Changing the machine password now
……..
……..
DIAG <bg:machinepw> base.aduser Error: get creds: Preauthentication failed for user dwirth$@centrify.ts (enctype: AES-256 CTS mode with 96-bit SHA-1 HMAC)
DEBUG <bg:machinepw> base.osutil Module=Kerberos : Preauthentication failed (reference base/adagent.cpp:1551 rc: -1765328360)
WARN <bg:machinepw> base.adagent Failed to get credentials using new password after successful change (Preauthentication failed). Not saving to keytab
DEBUG <bg:machinepw> base.bind.ad Destroying binding to 'centrify.ts’
WARN <bg:machinepw> subsystem.health HostPwd: Subsystem health problem Operation: Host change password Reason: Preauthentication failed
Cause:
In cases where Flexible Single Master Operation (FSMO) role is non-functional, an RODC that caches machine password will not have the new password in time for correct password change verification. This can lead to password change failure. When the machine password is cached in the Read Only Domain Controllers (RODC), password verification failed, the msDS-keyversionnumber of the computer object in RODC still contain old value while the msDS-keyversionnumber of the computer object in the Read Write Domain Controllers (RWDC) was incremented.
Workaround:
Prior to Suite 2016 (CDC 5.3.0), we suggest one of the two workarounds:
Workaround 1:
Disable machine password caching in Read Only Domain Controller.
Workaround 2:
Disable routine machine password change by setting the following in /etc/centrifydc/centrifydc.conf
adclient.krb5.password.change.interval: 0
A restart of centrifydc is required to take effect of change to this parameter.
Resolution:
In Suite 2016 (CDC 5.3.0), we introduced two new parameters which allow number of retries at the configured interval when it comes to verify new machine password with RODC:
adclient.krb5.password.change.verify.retries: 0
adclient.krb5.password.change.verify.interval: 300
These two parameters control the number of retries and time interval between the retry. The retried verification is done in the background thread. When it is set to 0, it will not retry.