On Wed, 2014-04-09 at 15:50 +0200, Ludwig Krispenz wrote:
> > Something like this is what we have experienced for real and cause
> us to
> > actually disable replication of all the lockout related attributes
> in
> > the past.
> But also here it can get complicated, we cannot really use 
> failedlogincount and replicate it, eg if it is "2" on each server an 
> their are parallel login attempts, we would increment it to "3" and 
> replicate, so we would have 3 on all servers, not what we wanted.
> We could replicate changes to lastfailedauth and when receiving an 
> update for this attribute locally increase failedcount, but it would 
> also have to be used for resets (deleting lastFailedAuth), but there 
> could also be race conditions, maybe there are other local attrs
> needed.

Yes, the current mechanism is deficient in many ways. For example the
failedcount/lastfailedauth attibutes are really suboptimal, a better
mechanism woul dbe to have a failedauths (not plural) multivalued
attribute and just append dates there (perhaps pre/postfixed with the
replica idto avoid any possible conflict). This way if 2 servers are
being attacked simultaneously they still should replicate their own
failure and each server can see that 5 dates are present in the last X
minutes and quickly lock the user, nor failedcount would be necessary
and no races incrementing it would occur.

The only issue would be in cleaning up the attribute to not let it grow
to much, but that could be accomplished by simply *not adding any more
failed counts once the account is locked (only logging locally that
someone tried to log in on a locked account) and deleting the attribute
completely when the acocunt is unlocked, this again would reduce the
attributes necessary for handling locking own to 1 from the current 3
(lastsuccessauth/lastafiledauth/failedcounter) however it still does
nothing to solve replication issues and has other replication races
problems (not sure what happens if a server try store a new failed auth
date and the other is deleting the old values at the same time.
Perhaps deleting by value is safe enough and won't cause issues,
Deleting the whole attribute may cause issues instead).

> And the bad news: I claimed that the replication protocol ensures that
> the last change wins except for bugs, and looks like we have one bug  
> for single valued attributes in some scenarios. I have to repeat the 
> test to double check.
> The update resolution code for single valued attrs is a nightmare,
> Rich and I several times said we need to rewrite it :-(

Is there a ticket that tracks this and explains the issue(s) ?

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to