Garbled class attribute?
    Geoff Silver 
    geoff+freeradius at uslinux.net
       
    Thu Aug 17 20:53:47 CEST 2006
    
    
  
Alan DeKok wrote:
> Geoff Silver <geoff+freeradius at uslinux.net> wrote:
>> I have a bunch of users which should have a class attribute returned upon 
>> successful authentication.  Their entries look something like:
>>
>> bob       NAS-IP-Address == 172.31.33.66, Hint==HasSlash Auth-Type:=Accept
>>            Class = "OU=MY_CORP", Filter-Id = "SPCCOLO_O", 
>> Split-Tunneling-Policy = 1, Split-Tunnel-List = "SPCCOLO_ST"
>>
>> What they're actually getting back is:
>>
>> Packet-Type = Access-Accept
>> User-Name = "bob"
>> Class = 0x3739774831423272375053516a71424143444358434979507544493d
> 
>   Which is '79...'
*nod*.
>   It works for me, so my guess is that something else in your
> configuration is setting Class to that value.
Okay, I'll bite - so what on earth might be causing that?  I'm not doing any 
rewriting, and both the Filter-Id and the Split-Tunnel-List attributes come 
back as strings.  I thought maybe it was getting confused on the Class since 
it contains an =, but changing that to an _ doesn't help.  Is this perhaps 
coming back from the proxy server, and if so, is there a way to use my local 
Class attribute instead?
My users file has a whole bunch of entries that look like the above, mostly like:
  bob       NAS-IP-Address == 172.31.33.66, Hint==HasSlash, Proxy-To-Realm:=UAS
            Class = "OU=MY_CORP", Filter-Id = "SPCCOLO_O", 
Split-Tunneling-Policy = 1, Split-Tunnel-List = "SPCCOLO_ST"
My hints file looks like:
DEFAULT         User-Password =~ ".*/.*"
                 Hint = HasSlash
My proxy.conf looks like:
proxy server {
         synchronous = no
         retry_delay = 5
         retry_count = 1
         dead_time = 300
         default_fallback = yes
         post_proxy_authorize = yes
}
realm UAS {
         type            = radius
         authhost        = radius.domain.com:1812
         secret          = MySecretKey
}
And my radiusd.conf looks uninterestingly like the following (note that the 
syslog sections are part of rlm_syslog which I submitted a while back):
##
## radiusd.conf -- FreeRADIUS server configuration file.
##
prefix = /opt/radius
exec_prefix = ${prefix}
sysconfdir = /opt/radius/etc
localstatedir = /var
sbindir = /opt/radius/sbin
logdir = /var/log/radius
raddbdir = /opt/radius/etc
radacctdir = /var/log/radius
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/radiusd
log_file = ${logdir}/radius.log
libdir = ${exec_prefix}/lib
pidfile = ${run_dir}/radiusd.pid
checkrad = ${sbindir}/checkrad
user = radius
group = radius
max_request_time = 30
delete_blocked_requests = no
cleanup_delay = 5
max_requests = 1024
listen {
         ipaddr = *
         port = 1645
         type = auth
}
listen {
         ipaddr = *
         port = 1646
         type = acct
}
listen {
         ipaddr = *
         port = 1812
         type = auth
}
listen {
         ipaddr = *
         port = 1813
         type = acct
}
hostname_lookups = no
allow_core_dumps = no
regular_expressions     = yes
extended_expressions    = yes
log_stripped_names = no
log_auth = yes
log_auth_badpass = no
log_auth_goodpass = no
usercollide = no
lower_user = yes
lower_pass = no
nospace_user = before
nospace_pass = no
security {
         max_attributes = 200
         reject_delay = 1
         status_server = no
}
$INCLUDE  ${confdir}/clients.conf
snmp    = no
#$INCLUDE  ${confdir}/snmp.conf
thread pool {
         start_servers = 5
         max_servers = 32
         min_spare_servers = 3
         max_spare_servers = 10
         max_requests_per_server = 0
}
modules {
         preprocess {
                 huntgroups = ${confdir}/huntgroups
                 hints = ${confdir}/hints
         }
         files {
                 usersfile = ${confdir}/users
                 compat = no
         }
         uas {
         }
         syslog acct_log {
                 loglevel = "info"
                 logfacility = "local3"
                 logname = "radiusd-acct"
         }
         syslog auth_log {
                 hidepasswd = yes
                 loglevel = "info"
                 logfacility = "local3"
                 logname = "radiusd-auth"
         }
         syslog reply_log {
                 hidepasswd = yes
                 # Some of this may be redundant, but it pretty much ensures
                 # we get a unique identifier in every reply log message
                 logextra = "User-Name = %{User-Name},Client-IP-Address = 
%{Client-IP-Address},NAS-IP-Address = %{NAS-IP-Address},NAS-Port = %{NAS-Port}"
                 loglevel = "info"
                 logfacility = "local3"
                 logname = "radiusd-auth"
         }
         acct_unique {
                 key = "User-Name, Acct-Session-Id, NAS-IP-Address, 
Client-IP-Address, NAS-Port"
         }
         always fail {
                 rcode = fail
         }
         always reject {
                 rcode = reject
         }
         always ok {
                 rcode = ok
                 simulcount = 0
                 mpp = no
         }
         expr {
         }
         digest {
         }
         exec {
                 wait = yes
                 input_pairs = request
                 output_pairs = none
         }
         exec echo {
                 wait = yes
                 program = "/bin/echo %{User-Name}"
                 input_pairs = request
                 output_pairs = reply
                 #packet_type = Access-Accept
         }
}
instantiate {
         exec
         expr
}
authorize {
         preprocess
         auth_log
         files
}
authenticate {
         Auth-Type UAS {
                 #uas
         }
}
preacct {
         preprocess
         acct_unique
         files
}
accounting {
         acct_log
}
session {
}
post-auth {
         Post-Auth-Type REJECT {
                reply_log
         }
         reply_log
}
proxy_requests  = yes
$INCLUDE ${confdir}/proxy.conf
pre-proxy {
}
post-proxy {
}
    
    
More information about the Freeradius-Users
mailing list