Two-phase, "pass-thru" authentication possible?

Phil Mayers p.mayers at imperial.ac.uk
Thu Jun 16 09:48:13 CEST 2011


On 06/15/2011 11:15 PM, cwfnetman wrote:

> mac address filtering isn't my idea, so please refrain from questioning why.

It's not totally useless. We do it. MAC address is a quick, reasonable 
proxy for "the hardware" and since it's the hardware/OS combo that gets 
infected with malware etc. it's a reasonable thing to key on.

> simple whitelist (several hundred mac addresses) to validate against. If the
> incoming mac address on the authentication request is simply somewhere on
> the whitelist (anywhere within those hundreds of addresses), then I next
> need to authenticate the Windows AD credentials, and if they're good, and in
> a certain AD group, and their domain member workstation PC is in a certain
> machine account group, etc, etc, according to the set of remote access
> policies in the IAS server,  then go ahead and "let 'em in".

This is where I get confused; how do you expect to have both the user 
and workstation credentials? AFAIK there is no EAP method that provides 
both. You can *either* have workstation *or* user auth.


> So, can FreeRadius be set up to perform a sort of two-phase, cascaded
> authentication such that the Cisco WiFi controller first sends the incoming
> authentication access-request to FreeRadius, which checks a big whitelist of
> pre-approved mac addresses, and if that tests good, then FreeRadius acts as
> a relay/proxy/radius client to pass the next ActiveDirectory authentication
> portion of the request off to my Windows IAS server, then if that part comes
> back good, to reassemble all the pieces-parts back together as a completed
> access-accept message and hand it back to the Cisco wireless system to let
> the wireless user in, and basically fool the Cisco WiFi system into thinking
> that one Radius server handled it all?

Sort of, but not in the way you're describing.

The EAP requests contain the MAC address, so basically you just want to:

  1. Receive the EAP request
  2. Check against whitelist
  3. if match - unconditionally proxy to IAS
  4. else reject

See the 1st example here:

http://wiki.freeradius.org/Mac%20Auth

... except instead of doing "accept" you should forward/proxy, like so:

authorize {
   preprocess

   # if cleaning up the Calling-Station-Id...
   rewrite_calling_station_id

   # now check against the authorized_macs file
   authorized_macs
   if (!ok) {
     reject
   }
   else {
     # forward to IAS
     update control {
       Proxy-To-Realm := IAS
     }
   }
}

You can extend the whitelist to live in SQL, a passwd-style file or 
whatever.

You'll need to create appropriate realm & home server definitions in 
proxy.conf - see the examples there, but something like:

home_server IAS {
   type = auth+acct
   ipaddr = x.x.x.x
   port = 1812
   secret = XXXX
}
home_server_pool IAS {
   type = client-port-balance
   home_server = IAS
}
realm IAS {
   auth_pool = IAS
}

>
> --
> View this message in context: http://freeradius.1045715.n5.nabble.com/Two-phase-pass-thru-authentication-possible-tp4492840p4492840.html
> Sent from the FreeRadius - User mailing list archive at Nabble.com.
> -
> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
>




More information about the Freeradius-Users mailing list