[RADIATOR] Preventing Computer/Machine Authentication in AuthBy NTLM

Michael Rodrigues mrodrigues at education.ucsb.edu
Fri Apr 18 11:31:03 CDT 2014


On 4/9/2014 8:01 AM, Heikki Vatiainen wrote:
> On 04/08/2014 11:36 PM, Michael Rodrigues wrote:
>
>> When untarring the patches tarball patches-4.12.1-20140407.tar.gz in the
>> Radiator directory and testing the build, test "1d" fails to pass. Am I
>> applying the patches correctly? I read that there was information on the
>> site where the patches are downloaded, but I don't have direct access to
>> it as a colleague maintains the account.
> Thanks for letting us know about this. The patches do not have the
> recently updated test.pl. Test 1d does a Status-Server request against
> Radiator and it now fails because it does not add Message-Authenticator
> in the request. This requirement was just recently added in Radiator.
> Status-Server requests with a correct Message-Authenticator will be
> ignored from now on.
>
> Updated test.pl was going to be in the next release, but it was
> unfortunately not tagged to be in the patch set meanwhile. It will be in
> the next patch set.
>
>> I'm using:
>> Ubuntu 12.04
> Please make sure the system is updated with the latest OpenSSL patch for
> the Heartbleed vulnerability.
Thanks for the heads up on this, I have since updated.

>
>> I also need to rewrite the outer identity before my AuthBy FILE sections
>> that check that the user is not on the blacklist. As configured, it will
>> check their anonymous ID against the blacklist, which does me no good.
I tried adding an AuthBy INTERNAL to the outer handler, using the perl 
snippet you had suggested with RequestHook. I get a hook error whenever 
it is called. I'm not a perl guru but I tried changing "${$_[1]}" to 
just "$_[1]" and got rid of the SCALAR error, but I was still getting a 
"Hook error" with no specific information.

Code:       Access-Request
Identifier: 155
Authentic: <130>hZ<30><145><187>;<199><159><164>C<211><240>sT5
Attributes:
         User-Name = "anonymous-username"
         NAS-IP-Address = 10.99.1.250
         NAS-Port = 86
          EAP-Message = <2><0><0><13><1>anonymous-username
         Message-Authenticator = 
<144><11><139>5<132>u~@<7><150>m<155>q5{<221>

Fri Apr 18 09:22:30 2014: DEBUG: Handling request with Handler '', 
Identifier ''
Fri Apr 18 09:22:30 2014: DEBUG:  Deleting session for 
anonymous-username, 10.99.1.250, 86
Fri Apr 18 09:22:30 2014: DEBUG: Handling with Radius::AuthGROUP:
Fri Apr 18 09:22:30 2014: DEBUG: Handling with AuthINTERNAL:
Fri Apr 18 09:22:30 2014: ERR: Error in RequestHook(): Not a SCALAR 
reference at (eval 40) line 1.

Fri Apr 18 09:22:30 2014: DEBUG: Radius::AuthGROUP:  result: IGNORE, 
Hook error
Fri Apr 18 09:22:30 2014: DEBUG: AuthBy GROUP result: IGNORE, Hook error

> For that you might consider an AuthBy INTERNAL that is evaluated before
> the blacklists. This AuthBy has RequestHook that you can use to modify
> the request before it is passed to the blacklist AuthBys.
>
> Thanks,
> Heikki
>
Here's the updated config:

<Client 10.99.1.250>
         Secret testing123
</Client>

<Handler User-Name=/^host\//>
   # AuthBy INTERNAL will reject here
   # This catches computers trying to auth
</Handler>

<Handler TunnelledByPEAP=1>
         <AuthBy NTLM>
                         NtlmAuthProg    /usr/bin/ntlm_auth 
--helper-protocol=ntlm-server-1 --require-membership-of="AD+Domain Users"
                         Domain          AD
                         EAPType         MSCHAP-V2
                         AutoMPPEKeys
         </AuthBy>
</Handler>

<Handler TunnelledByTTLS=1>
         <AuthBy NTLM>
                         NtlmAuthProg    /usr/bin/ntlm_auth 
--helper-protocol=ntlm-server-1 --require-membership-of="AD+Domain Users"
                         Domain          AD
                         AutoMPPEKeys
         </AuthBy>
</Handler>

<Handler>
         <AuthBy GROUP>

                 AuthByPolicy ContinueWhileAccept

                 <AuthBy INTERNAL>
                         RequestHook sub { my $rp = ${$_[1]}; 
$rp->changeUserName($rp->{inner_identity}); }
                         DefaultResult   ACCEPT
                 </AuthBy>

                  # Make sure MAC address is not blacklisted..
                 <AuthBy FILE>
                         NoEAP
                         # Calling-Station-Id attribute is the user's 
MAC in this case.
                         AuthenticateAttribute Calling-Station-Id
                         AcceptIfMissing
                         Filename /etc/radiator/MacAddrBlacklist.txt
                 </AuthBy>

                 # Make sure USERNAME is not blacklisted..
                 <AuthBy FILE>
                         NoEAP
                         AcceptIfMissing
                         Filename /etc/radiator/UsernameBlacklist.txt
                 </AuthBy>

                 <AuthBy NTLM>
                         NtlmAuthProg    /usr/bin/ntlm_auth 
--helper-protocol=ntlm-server-1 --require-membership-of="AD+Domain Users"
                         Domain          AD
                         EAPType         PEAP, TTLS, MSCHAP-V2
                         EAPTLS_CAFile 
/etc/radiator/certs/radiatordev_education_ucsb_edu_interm.cer
                         EAPTLS_CertificateFile 
/etc/radiator/certs/radiatordev_education_ucsb_edu_cert.cer
                         EAPTLS_CertificateType PEM
                         EAPTLS_PrivateKeyFile 
/etc/radiator/certs/cert-srv.pem
                         EAPTLS_PrivateKeyFile 
/etc/radiator/certs/radiatordev.key
                         AutoMPPEKeys
                 </AuthBy>
         </AuthBy>
</Handler>




-- 
Michael Rodrigues
Technical Support Services Manager
Gevirtz Graduate School of Education
Education Building 4203
(805) 893-8031
help at education.ucsb.edu



More information about the radiator mailing list