I haven’t had much sleep the past few days and just wanted another set of eyes on an issue I’m having.  Also, I won’t be able to do more testing until tomorrow (user/equip. unavailable) and wanted to try to fix it before then.  

 

I’m running FR 2.1.6 with patches to rlm_mschap & rlm_eap_mschapv2 to correct a problem with case-sensitive userids.  Anyway, the patch was working great for user auth. and failing for machine auth.  I used some unlang to get around the issue.  I haven’t done a lot with unlang (and yes I read the man page), so I may be missing something simple.  I’m doing 802.1x authentication from Windows supplicant with PEAP/MS-CHAPv2.  Here’s the authenticate section of my inner-tunnel server:

 

  authenticate {

        Auth-Type PAP {

                pap

        }

        Auth-Type CHAP {

                chap

        }

        Auth-Type MS-CHAP {

                if (User-Name =~ /host\/(.*)\.energyeast\.net/i) {

                        update request {

                                Ntlm-Auth-Username = "%{1}$"

                        }

                        updated

                }

                else {

                        update request {

                                Ntlm-Auth-Username = "%{User-Name}"

                        }

                        updated

                }

                mschap-inner

        }

        Auth-Type LDAP {

                ldap

        }

        eap-internal

        eap-comodo

  }

 

First, if I didn’t include “updated” after the “update request” actions, then it would return reject.  Is that normal (I didn’t call a module in there)?  Should the unlang be outside of the “Auth-Type MS-CHAP” block?  Also, Ntlm-Auth-Username is expanded, there’s a “[request] returns reject”.  I think this is the source of the problem, but I don’t understand where the reject is coming from.  The mschap module that follows returns OK, but the subsequent eap-comodo module returns reject with no explanation in the debug.  Do I need something like:

 

eap-comodo {

            ok = return

}

 

Here’s the relevant debug output:

 

Tue Aug 18 15:41:15 2009 : Info: Found Auth-Type = eap-comodo

Tue Aug 18 15:41:15 2009 : Info: +- entering group authenticate {...}

Tue Aug 18 15:41:15 2009 : Info: [eap-comodo] Request found, released from the list

Tue Aug 18 15:41:15 2009 : Info: [eap-comodo] EAP/mschapv2

Tue Aug 18 15:41:15 2009 : Info: [eap-comodo] processing type mschapv2

Tue Aug 18 15:41:15 2009 : Info: [mschapv2] +- entering group MS-CHAP {...}

Tue Aug 18 15:41:15 2009 : Info: [mschapv2] ++? if (User-Name =~ /host\/(.*)\.energyeast\.net/i)

Tue Aug 18 15:41:15 2009 : Info: [mschapv2] ? Evaluating (User-Name =~ /host\/(.*)\.energyeast\.net/i) -> TRUE

Tue Aug 18 15:41:15 2009 : Info: [mschapv2] ++? if (User-Name =~ /host\/(.*)\.energyeast\.net/i) -> TRUE

Tue Aug 18 15:41:15 2009 : Info: [mschapv2] ++- entering if (User-Name =~ /host\/(.*)\.energyeast\.net/i) {...}

Tue Aug 18 15:41:15 2009 : Info: [mschapv2]     expand: %{1}$ -> US62695C$

Tue Aug 18 15:41:15 2009 : Info: [mschapv2] +++[request] returns reject

Tue Aug 18 15:41:15 2009 : Info: +++[updated] returns updated

Tue Aug 18 15:41:15 2009 : Info: ++- if (User-Name =~ /host\/(.*)\.energyeast\.net/i) returns updated

Tue Aug 18 15:41:15 2009 : Info: ++ ... skipping else for request 124: Preceding "if" was taken

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner] No Cleartext-Password configured.  Cannot create LM-Password.

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner] No Cleartext-Password configured.  Cannot create NT-Password.

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner]   Using MS-CHAP Response Name (host/US62695C.energyeast.net) to construct MS-CHAPv1 challenge

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner] rlm_mschap: mschap_authenticate: Creating challenge hash with username: host/US62695C.energyeast.net

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner] Told to do MS-CHAPv2 for host/US62695C.energyeast.net with NT-Password

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner] No trailing :- after variable at %{Ntlm-Auth-UserName:-None}}

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner] WARNING: Deprecated conditional expansion ":-".  See "man unlang" for details

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner]         expand: --username=%{%{Ntlm-Auth-UserName:-None}} -> --username=US62695C$

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner]  mschap2: d1

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner]   Using MS-CHAP Response Name (host/US62695C.energyeast.net) to construct MS-CHAPv1 challenge

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner] rlm_mschap: mschap_xlat: Creating challenge hash with username: host/US62695C.energyeast.net

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner]         expand: --challenge=%{mschap:Challenge:-00} -> --challenge=943b358133b5bcac

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner]         expand: --nt-response=%{mschap:NT-Response:-00} -> --nt-response=121180cc778e59746acb8c12aa6bb9ab7ab2099604c750eb

Tue Aug 18 15:41:15 2009 : Debug: Exec-Program output: NT_KEY: 8E774D7FDDFC8300DF50499B30DA1CAF

Tue Aug 18 15:41:15 2009 : Debug: Exec-Program-Wait: plaintext: NT_KEY: 8E774D7FDDFC8300DF50499B30DA1CAF

Tue Aug 18 15:41:15 2009 : Debug: Exec-Program: returned: 0

Tue Aug 18 15:41:15 2009 : Info: [mschap-inner] adding MS-CHAPv2 MPPE keys

Tue Aug 18 15:41:15 2009 : Info: ++[mschap-inner] returns ok

Tue Aug 18 15:41:15 2009 : Info: [eap-comodo] Freeing handler

Tue Aug 18 15:41:15 2009 : Info: ++[eap-comodo] returns reject

Tue Aug 18 15:41:15 2009 : Info: Failed to authenticate the user.

Tue Aug 18 15:41:15 2009 : Auth: Login incorrect: [host/US62695C.energyeast.net] (from client eedmz02app08 port 2648774147 cli 00009de11603 via TLS tunnel)

} # server inner-tunnel

 

Thank you for your time and assistance..