(RADIATOR) Group checking *only* with AuthBy UNIX?

Hugh Irvine hugh at open.com.au
Thu Jun 16 20:26:47 CDT 2005


Hello Ray -

Thanks very much for your most informative post.

regards

Hugh


On 17 Jun 2005, at 10:23, Ray Van Dolson wrote:


> Hope this isn't a repost.  My original didn't appear on the list so am
> resending.
>
> Got things to work how I want.  Here's how I'm doing it:
>
> 1. Match on Realm and NAS-IP-Address in Handler
> 2. Call PreAuthHook.  This hook temporarily strips the real from  
> the username,
>    checks for the user in the Unix password file and gets the  
> associated group
>    out and adds it to the Access-Request packet as "Unix-Group"
> 3. Authenticate against the file digitalpath.speeds
> 4. This file matches on the Unix-Group set above and adds the  
> Ascend rate
>    shaping attributes on a per-group basis.  It also uses the Auth- 
> Type check
>    attribute to call the AuthType block with the DigiAuth Identifier.
> 5. AuthBy FILE with Identifier of DigiAuth authenticates against a  
> file with
>    username and password combos (could also contain our Framed-IP- 
> Addresses).
>    The AuthBy block also handles adding our MPPE Keys, MPPE  
> Encryption policy
>    and the interim interval settings.
>
> So we're not really authenticating against the Unix PW file, just  
> using it for
> group membership tests which then are used to select the  
> appropriate speed
> plan and still authenticate using plain text for MSCHAPv2.
>
> Still need to add some error checking for a default group (if the  
> user's Unix
> account is a member of a group I don't check for) or if the user  
> doesn't exist
> in the Unix password file.
>
> But for now it does what I want.  Hope someone out there finds this  
> mildy
> interesting.
>
> Excerpt from radius.cfg:
>
> <AuthBy FILE>
>         Identifier    DigiAuth
>         # For testing only.
>         Nocache
>         AutoMPPEKeys    yes
>         AddToReply    MS-MPPE-Encryption-Policy=Encryption- 
> Required,Acct-Interim-Interval=300
>         Filename    %D/digitalpath.users
> </AuthBy>
>
> # Authentication Requests
> <Handler Realm=domain.net,NAS-IP-Address=XXX.XXX.XX.X>
>         PacketTrace
>         PreAuthHook file:"%D/hooks/digitalpath_get_unix_group.pl"
>
>         <AuthBy FILE>
>                 # For testing only.
>                 Nocache
>                 Filename        %D/digitalpath.speeds
>         </AuthBy>
>
>         # Pass the reason for rejection back to the customer.
>         RejectHasReason
> </Handler>
>
> digitalpath_get_unix_group.pl:
>
> sub {
>   # Setup local variables.
>   my $name;
>   my $passwd;
>   my $uid;
>   my $gid;
>   my $quota;
>   my $comment;
>   my $gcos;
>   my $dir;
>   my $shell;
>   my $expire;
>
>   # Retrieve the packet.
>   my $p = ${$_[0]};
>
>   # Retrive the request type.
>   my $code = $p->code();
>
>   if ($code eq 'Access-Request') {
>     my $group = $p->get_attr('Unix-Group');
>
>     if (!defined($group)) {
>       # Retrieve the username.
>       my $username = $p->get_attr('User-Name');
>       # Strip realm.
>       $username =~ s/^([^@]+).*/$1/;
>
>       # Does the username even exist?
>       if (($name, $passwd, $uid, $gid, $quota, $comment, $gcos,  
> $dir, $shell, $expire) = getpwnam($username)) {
>         my $local_group = getgrgid($gid);
>         $p->add_attr('Unix-Group', $local_group);
>         &main::log($main::LOG_DEBUG, "PreAuthHook: Unix-Group  
> resolved to $local_group");
>       }
>     }
>   }
>   return;
> }
>
> digitalpath.speeds:
>
> # Basic Account - 384Kbps / 128Kbps
> DEFAULT Auth-Type = DigiAuth, Unix-Group = wirmcb
>         Ascend-Data-Rate = 384000,
>         Ascend-Xmit-Rate = 128000
> # Express - 2Mbps / 1Mbps
> DEFAULT Auth-Type = DigiAuth, Unix-Group = wirmcexp
>         Ascend-Data-Rate = 2000000,
>         Ascend-Xmit-Rate = 1000000
> # Excel - 1Mbps / 384Kbps
> DEFAULT Auth-Type = DigiAuth, Unix-Group = wirmcexc
>         Ascend-Data-Rate = 1000000,
>         Ascend-Xmit-Rate = 384000
> # Comp Relay Customer
> DEFAULT Auth-Type = DigiAuth, Unix-Group = wirccrc
>         Ascend-Data-Rate = 4000000,
>         Ascend-Xmit-Rate = 2000000
>
> digitalpath.users:
>
> username at domain.net        Password = "password"
>
> --
> Archive at http://www.open.com.au/archives/radiator/
> Announcements on radiator-announce at open.com.au
> To unsubscribe, email 'majordomo at open.com.au' with
> 'unsubscribe radiator' in the body of the message.
>
>


NB:

Have you read the reference manual ("doc/ref.html")?
Have you searched the mailing list archive (www.open.com.au/archives/ 
radiator)?
Have you had a quick look on Google (www.google.com)?
Have you included a copy of your configuration file (no secrets),
together with a trace 4 debug showing what is happening?

-- 
Radiator: the most portable, flexible and configurable RADIUS server
anywhere. Available on *NIX, *BSD, Windows, MacOS X.
-
Nets: internetwork inventory and management - graphical, extensible,
flexible with hardware, software, platform and database independence.
-
CATool: Private Certificate Authority for Unix and Unix-like systems.



--
Archive at http://www.open.com.au/archives/radiator/
Announcements on radiator-announce at open.com.au
To unsubscribe, email 'majordomo at open.com.au' with
'unsubscribe radiator' in the body of the message.


More information about the radiator mailing list