EAP-PEAP - windows client password change
Kacper Wirski
kacper.wirski at gmail.com
Tue Nov 13 10:44:16 CET 2018
Hello,
I have environment with Freeradius 3.0.17 and samba 4.8 AD DC
authenticating windows 10 clients over LAN with EAP-PEAP.
To start off, I know that ntlm_auth is used ant that is just a tool used
by freeradius, so if my issue has nothing to do with freeradius, do say
so, I'll ask around samba mailing list.
I did configure freeradius to allow expired password changes (in mschap
and eap modules), but what I did not realize is that there is an
exception, where password change goes wrong.
A scenario is this:
- user has expired password (either because it "just" expired, or
because user forgot password, and it was reset with "user must change at
next logon")
- user enters enters expired password
- user is allowed to change password (user prompt to enter new password)
and then:
a) if user enters and re-enters new password, all is fine, password is
changed (hurray!)
b) if user enters mismatched passwords, all works as intended (error
prompts: entered password do not match, user gets another chance) (great!)
and now the (in my opinion) incorrect behaviour c):
user enters and re-enters new password during change that does not
comply with domain password complexity policy (too short, not complex,
or repetitive). In this scenario freeradius debug shows error like this:
(24) mschap: Doing MS-CHAPv2 password change via ntlm_auth helper
(24) mschap: EXPAND username: %{mschap:User-Name}
(24) mschap: --> username: some-username
(24) mschap: EXPAND nt-domain: somedomain
(24) mschap: --> nt-domain: somedomain
(24) mschap: ntlm_auth said: Password-Change: No Password-Change-Error:
The transport connection is now disconnected. . .
(24) mschap: ERROR: ntlm auth password change failed:
Password-Change-Error: The transport connection is now disconnected.
(24) mschap: ERROR: Password change failed
(24) [mschap] = reject
(24) } # authenticate = reject
(24) MSCHAP-Error: 3E=709 R=0 M=Password change failed
(24) Could not parse new challenge from MS-CHAP-Error: 2
(24) ERROR: MSCHAP Failure
At this point 802.1x authentication ends, windows starts another
authentication session for windows-host (and succeeds), BUT on the other
hand user still sees password change prompt, just "ordinary", not the
one that is related to 802.1x and with correct error reason (password
does not comply with domain password policy).
What happens next is this: IF user still tries to change their password
they might succeed, windows will start another 802.1x session and this
time with already changed password 802.1x login will just work. But it's
not always the case and overall it seems wrong. Sometimes user gets in a
"password change loop", that is: prompt to change password, doesn't
matter what user will enter, another "your password has expired - change
your password" screen will appear, with no real connection being sent.
Overall it's really messy and confusing to users.
I'm not sure if it's more samba related (since it's ntlm_auth that's
being used) or freeradius and just different error handling?
Correct behaviour in my opinion for c) would be similar to scenario b),
that is - without breaking 802.1x authentication session, give user
another chance to change password with proper information (that password
does not comply with domain policy settings), instead of just "failure".
Unfortunately I don't have access to pure windows environment with
windows NPS and windows DC to see, how this scenario is handled there as
comparison.
I can get more information (full debug, configuration etc.), when/if
needed.
I will be thankful for some input, wether it's something that can be
fixed/worked around or just something that I'll have to live with.
Regards,
Kacper
More information about the Freeradius-Users
mailing list