You need to add an entry in ldap for the profile you want the reply items
taken from.  Right now you have this entry to have the dial profile.
dn:
cn=dialup,cn=group,cn=radius,cn=config,ou=eaccounts,dc=megashaft,dc=com,dc=au

In that entry you need to have the reply items you want.

example.

dn:
cn=dialup,cn=group,cn=radius,cn=config,ou=eaccounts,dc=megashaft,dc=com,dc=au
objectclass: radiusprofile
cn: dial
radiusServiceType: Framed-User
radiusFramedProtocol: PPP
radiusFramedIPNetmask: 255.255.255.0
radiusFramedRouting: None

Does that dn exist in your ldap server?



On Thu, 4 Mar 2004, Sam Silvester wrote:

> It's been a while since I was working on this, and I've made some
> further progress but FreeRADIUS is still not doing what I'm after. It is
> successfully sending back an Access-Accept packet or Access-Reject
> packet as I would like, but none of the reply attributes that correspond
> to the group that they are a member of are returned. Initially I didn't
> have FreeRADIUS configured correctly (nothing in the "users" file to set
> a User-Profile...), now from what I can gather, the rlm_ldap module is
> now doing a search for the correct profile, but the filter it is using
> is incorrect and I can't work out where you would change it in the
> configuration file.
>
> Please take a look at the line in my debug output that shows the ldap
> search for the user profile - the filter doesn't look right to me. I
> want it to use the filter being the Ldap-Group...I don't think anywhere
> in my config though I can set what that filter is!?
>
> rlm_ldap: performing search in
> cn=dialup,cn=group,cn=radius,cn=config,ou=eaccounts,dc=megashaft,dc=com,
> dc=au, with filter (objectclass=radiusprofile)
>
> Anyway I'll include the rest of the debugging below - I might be miles
> off...
>
> Here is what I have added since last time in my users file (this is all
> that is in there at this stage - the nas terminates both adsl and dialup
> so I'll have different profiles eventually for each type, but for the
> moment I'm just using the dialup example...
>
> --- users file ---
> DEFAULT         Ldap-Group == dialup, User-Profile :=
> "cn=dialup,cn=group,cn=radius,cn=config,ou=eaccounts,dc=megashaft,dc=com
> ,dc=au"
>                 Fall-Through = no
>
> This is the ldap section of my radius.conf file
>
> -- radius.conf ---
>         #  See doc/rlm_ldap for description of configuration options
>         #  and sample authorize{} and authenticate{} blocks
>         ldap {
>                 server = "ldap2-dev.megashaft.com.au"
>                 identity = "cn=root,dc=megashaft,dc=com,dc=au"
>                 password = testpassword
>                 basedn = "dc=megashaft,dc=com,dc=au"
> #               filter = "(uid=%{Stripped-User-Name:-%{User-Name}})"
>                 filter =
> "(&(objectClass=radiusProfile)(uid=%{Stripped-User-Name:-%{User-Name}}))
> "
>
>                 # set this to 'yes' to use TLS encrypted connections
>                 # to the LDAP database by using the StartTLS extended
>                 # operation.
>                 # The StartTLS operation is supposed to be used with
> normal
>                 # ldap connections instead of using ldaps (port 689)
> connections
>                 start_tls = no
>
>                 # default_profile = "cn=radprofile,ou=dialup,o=My
> Org,c=UA"
>                 # profile_attribute = "radiusProfileDn"
>                 access_attr = "dialupAccess"
>
>                 # Mapping of RADIUS dictionary attributes to LDAP
>                 # directory attributes.
>                 dictionary_mapping = ${raddbdir}/ldap.attrmap
>
>                 ldap_connections_number = 5
>                 # password_header = "{clear}"
>                 # password_attribute = userPassword
>                 groupname_attribute = uid
>                 groupmembership_filter =
> "($(uid=dialup)(objectClass=radiusProfile))"
>                 # groupmembership_filter =
> "(|(&(objectClass=GroupOfNames)(member=%{Ldap-UserDn}))(&(objectClass=Gr
> oupOfUnique
> Names)(uniquemember=%{Ldap-UserDn})))"
>                 groupmembership_attribute = radiusGroupName
>                 timeout = 4
>                 timelimit = 3
>                 net_timeout = 1
>                 # compare_check_items = yes
>                 # access_attr_used_for_allow = yes
>         }
>
> In the authorise block I have
>
> authorize {
>       preprocess
>       suffix
>       files
>       mschap
>       ldap
> }
>
> And in the authenticate block I have
>
> authenticate {
>         Auth-Type PAP {
>                 pap
>         }
>         Auth-Type CHAP {
>                 chap
>         }
>         Auth-Type MS-CHAP {
>                 mschap
>         }
>         Auth-Type LDAP {
>                 ldap
>         }
> }
>
> Here is the output from radiusd -X
>
> [EMAIL PROTECTED] raddb]# radiusd -X
> Starting - reading configuration files ...
> reread_config:  reading radiusd.conf
> Config:   including file: /usr/local/etc/raddb/proxy.conf
> Config:   including file: /usr/local/etc/raddb/clients.conf
> Config:   including file: /usr/local/etc/raddb/snmp.conf
> Config:   including file: /usr/local/etc/raddb/sql.conf
>  main: prefix = "/usr/local"
>  main: localstatedir = "/usr/local/var"
>  main: logdir = "/var/log/radius"
>  main: libdir = "/usr/local/lib"
>  main: radacctdir = "/var/log/radius/radacct"
>  main: hostname_lookups = no
>  main: max_request_time = 30
>  main: cleanup_delay = 5
>  main: max_requests = 1024
>  main: delete_blocked_requests = 0
>  main: port = 0
>  main: allow_core_dumps = no
>  main: log_stripped_names = no
>  main: log_file = "/var/log/radius/radius.log"
>  main: log_auth = no
>  main: log_auth_badpass = yes
>  main: log_auth_goodpass = no
>  main: pidfile = "/usr/local/var/run/radiusd/radiusd.pid"
>  main: bind_address = 203.191.96.199 IP address [203.191.96.199]
>  main: user = "nobody"
>  main: group = "nobody"
>  main: usercollide = no
>  main: lower_user = "no"
>  main: lower_pass = "no"
>  main: nospace_user = "no"
>  main: nospace_pass = "no"
>  main: checkrad = "/usr/local/sbin/checkrad"
>  main: proxy_requests = yes
>  proxy: retry_delay = 5
>  proxy: retry_count = 3
>  proxy: synchronous = no
>  proxy: default_fallback = yes
>  proxy: dead_time = 120
>  proxy: post_proxy_authorize = yes
>  proxy: wake_all_if_all_dead = no
>  security: max_attributes = 200
>  security: reject_delay = 1
>  security: status_server = no
>  main: debug_level = 0
> read_config_files:  reading dictionary
> read_config_files:  reading naslist
> read_config_files:  reading clients
> read_config_files:  reading realms
> Using deprecated realms file.  Support for this will go away soon.
> radiusd:  entering modules setup
> Module: Library search path is /usr/local/lib
> Module: Loaded expr
> Module: Instantiated expr (expr)
> Module: Loaded PAP
>  pap: encryption_scheme = "crypt"
> Module: Instantiated pap (pap)
> Module: Loaded CHAP
> Module: Instantiated chap (chap)
> Module: Loaded MS-CHAP
>  mschap: use_mppe = yes
>  mschap: require_encryption = no
>  mschap: require_strong = no
>  mschap: passwd = "(null)"
>  mschap: authtype = "MS-CHAP"
> Module: Instantiated mschap (mschap)
> Module: Loaded LDAP
>  ldap: server = "ldap2-dev.megashaft.com.au"
>  ldap: port = 389
>  ldap: net_timeout = 1
>  ldap: timeout = 4
>  ldap: timelimit = 3
>  ldap: identity = "cn=root,dc=megashaft,dc=com,dc=au"
>  ldap: start_tls = no
>  ldap: password = "testpassword"
>  ldap: basedn = "dc=megashaft,dc=com,dc=au"
>  ldap: filter =
> "(&(objectClass=radiusProfile)(uid=%{Stripped-User-Name:-%{User-Name}}))
> "
>  ldap: default_profile = "(null)"
>  ldap: profile_attribute = "(null)"
>  ldap: password_header = "(null)"
>  ldap: password_attribute = "(null)"
>  ldap: access_attr = "dialupAccess"
>  ldap: groupname_attribute = "uid"
>  ldap: groupmembership_filter =
> "($(uid=dialup)(objectClass=radiusProfile))"
>  ldap: groupmembership_attribute = "radiusGroupName"
>  ldap: dictionary_mapping = "/usr/local/etc/raddb/ldap.attrmap"
>  ldap: ldap_debug = 0
>  ldap: ldap_connections_number = 5
>  ldap: compare_check_items = no
>  ldap: access_attr_used_for_allow = yes
> conns: (nil)
> rlm_ldap: reading ldap<->radius mappings from file
> /usr/local/etc/raddb/ldap.attrmap
> rlm_ldap: LDAP radiusCheckItem mapped to RADIUS $GENERIC$
> rlm_ldap: LDAP radiusReplyItem mapped to RADIUS $GENERIC$
> rlm_ldap: LDAP radiusAuthType mapped to RADIUS Auth-Type
> rlm_ldap: LDAP radiusSimultaneousUse mapped to RADIUS Simultaneous-Use
> rlm_ldap: LDAP radiusCalledStationId mapped to RADIUS Called-Station-Id
> rlm_ldap: LDAP radiusCallingStationId mapped to RADIUS
> Calling-Station-Id
> rlm_ldap: LDAP lmPassword mapped to RADIUS LM-Password
> rlm_ldap: LDAP ntPassword mapped to RADIUS NT-Password
> rlm_ldap: LDAP acctFlags mapped to RADIUS SMB-Account-CTRL-TEXT
> rlm_ldap: LDAP radiusExpiration mapped to RADIUS Expiration
> rlm_ldap: LDAP radiusServiceType mapped to RADIUS Service-Type
> rlm_ldap: LDAP radiusFramedProtocol mapped to RADIUS Framed-Protocol
> rlm_ldap: LDAP radiusFramedIPAddress mapped to RADIUS Framed-IP-Address
> rlm_ldap: LDAP radiusFramedIPNetmask mapped to RADIUS Framed-IP-Netmask
> rlm_ldap: LDAP radiusFramedRoute mapped to RADIUS Framed-Route
> rlm_ldap: LDAP radiusFramedRouting mapped to RADIUS Framed-Routing
> rlm_ldap: LDAP radiusFilterId mapped to RADIUS Filter-Id
> rlm_ldap: LDAP radiusFramedMTU mapped to RADIUS Framed-MTU
> rlm_ldap: LDAP radiusFramedCompression mapped to RADIUS
> Framed-Compression
> rlm_ldap: LDAP radiusLoginIPHost mapped to RADIUS Login-IP-Host
> rlm_ldap: LDAP radiusLoginService mapped to RADIUS Login-Service
> rlm_ldap: LDAP radiusLoginTCPPort mapped to RADIUS Login-TCP-Port
> rlm_ldap: LDAP radiusCallbackNumber mapped to RADIUS Callback-Number
> rlm_ldap: LDAP radiusCallbackId mapped to RADIUS Callback-Id
> rlm_ldap: LDAP radiusFramedIPXNetwork mapped to RADIUS
> Framed-IPX-Network
> rlm_ldap: LDAP radiusClass mapped to RADIUS Class
> rlm_ldap: LDAP radiusSessionTimeout mapped to RADIUS Session-Timeout
> rlm_ldap: LDAP radiusIdleTimeout mapped to RADIUS Idle-Timeout
> rlm_ldap: LDAP radiusTerminationAction mapped to RADIUS
> Termination-Action
> rlm_ldap: LDAP radiusLoginLATService mapped to RADIUS Login-LAT-Service
> rlm_ldap: LDAP radiusLoginLATNode mapped to RADIUS Login-LAT-Node
> rlm_ldap: LDAP radiusLoginLATGroup mapped to RADIUS Login-LAT-Group
> rlm_ldap: LDAP radiusFramedAppleTalkLink mapped to RADIUS
> Framed-AppleTalk-Link
> rlm_ldap: LDAP radiusFramedAppleTalkNetwork mapped to RADIUS
> Framed-AppleTalk-Network
> rlm_ldap: LDAP radiusFramedAppleTalkZone mapped to RADIUS
> Framed-AppleTalk-Zone
> rlm_ldap: LDAP radiusPortLimit mapped to RADIUS Port-Limit
> rlm_ldap: LDAP radiusLoginLATPort mapped to RADIUS Login-LAT-Port
> conns: 0x8101d58
> Module: Instantiated ldap (ldap)
> Module: Loaded preprocess
>  preprocess: huntgroups = "/usr/local/etc/raddb/huntgroups"
>  preprocess: hints = "/usr/local/etc/raddb/hints"
>  preprocess: with_ascend_hack = no
>  preprocess: ascend_channels_per_line = 23
>  preprocess: with_ntdomain_hack = no
>  preprocess: with_specialix_jetstream_hack = no
>  preprocess: with_cisco_vsa_hack = no
> Module: Instantiated preprocess (preprocess)
> Module: Loaded realm
>  realm: format = "suffix"
>  realm: delimiter = "@"
> Module: Instantiated realm (suffix)
> Module: Loaded files
>  files: usersfile = "/usr/local/etc/raddb/users"
>  files: acctusersfile = "/usr/local/etc/raddb/acct_users"
>  files: preproxy_usersfile = "/usr/local/etc/raddb/preproxy_users"
>  files: compat = "no"
> Module: Instantiated files (files)
> Module: Loaded Acct-Unique-Session-Id
>  acct_unique: key = "User-Name, Acct-Session-Id, NAS-IP-Address,
> Client-IP-Address, NAS-Port-Id"
> Module: Instantiated acct_unique (acct_unique)
> Module: Loaded detail
>  detail: detailfile =
> "/var/log/radius/radacct/%{Client-IP-Address}/detail-%Y%m%d"
>  detail: detailperm = 384
>  detail: dirperm = 493
>  detail: locking = no
> Module: Instantiated detail (detail)
> Module: Loaded radutmp
>  radutmp: filename = "/var/log/radius/radutmp"
>  radutmp: username = "%{User-Name}"
>  radutmp: case_sensitive = yes
>  radutmp: check_with_nas = yes
>  radutmp: perm = 384
>  radutmp: callerid = yes
> Module: Instantiated radutmp (radutmp)
> Listening on IP address 203.191.96.199, ports 1812/udp and 1813/udp,
> with proxy on 1814/udp. Ready to process requests.
> rad_recv: Access-Request packet from host 203.191.96.199:34032, id=161,
> length=56
>         User-Name = "hugh"
>         User-Password = "testpassword"
>         NAS-IP-Address = 255.255.255.255
>         NAS-Port = 1
> modcall: entering group authorize for request 0
>   modcall[authorize]: module "preprocess" returns ok for request 0
>   modcall[authorize]: module "chap" returns noop for request 0
>     rlm_realm: No '@' in User-Name = "hugh", looking up realm NULL
>     rlm_realm: Found realm "NULL"
>     rlm_realm: Adding Stripped-User-Name = "hugh"
>     rlm_realm: Proxying request from user hugh to realm NULL
>     rlm_realm: Adding Realm = "NULL"
>     rlm_realm: Authentication realm is LOCAL.
>   modcall[authorize]: module "suffix" returns noop for request 0
> rlm_ldap: Entering ldap_groupcmp()
> radius_xlat:  'dc=megashaft,dc=com,dc=au'
> radius_xlat:  '(&(objectClass=radiusProfile)(uid=hugh))'
> ldap_get_conn: Got Id: 0
> rlm_ldap: attempting LDAP reconnection
> rlm_ldap: (re)connect to ldap2-dev.megashaft.com.au:389, authentication
> 0
> rlm_ldap: bind as cn=root,dc=megashaft,dc=com,dc=au/testpassword to
> ldap2-dev.megashaft.com.au:389
> rlm_ldap: waiting for bind result ...
> rlm_ldap: performing search in dc=megashaft,dc=com,dc=au, with filter
> (&(objectClass=radiusProfile)(uid=hugh))
> ldap_release_conn: Release Id: 0
> radius_xlat:  '($(uid=dialup)(objectClass=radiusProfile))'
> ldap_get_conn: Got Id: 0
> rlm_ldap: performing search in dc=megashaft,dc=com,dc=au, with filter
> (&(uid=dialup)($(uid=dialup)(objectClass=radiusProfile)))
> rlm_ldap: object not found or got ambiguous search result
> ldap_release_conn: Release Id: 0
> ldap_get_conn: Got Id: 0
> rlm_ldap: performing search in
> cn=hugh,cn=3,cn=2000,cn=package,cn=hugh,cn=user,ou=eaccounts,dc=megashaf
> t,dc=com,dc=au, with filter (objectclass=*)
> rlm_ldap::ldap_groupcmp: User found in group dialup
> ldap_release_conn: Release Id: 0
>     users: Matched DEFAULT at 53
>   modcall[authorize]: module "files" returns ok for request 0
>   modcall[authorize]: module "mschap" returns noop for request 0
> rlm_ldap: - authorize
> rlm_ldap: performing user authorization for hugh
> radius_xlat:  '(&(objectClass=radiusProfile)(uid=hugh))'
> radius_xlat:  'dc=megashaft,dc=com,dc=au'
> ldap_get_conn: Got Id: 0
> rlm_ldap: performing search in dc=megashaft,dc=com,dc=au, with filter
> (&(objectClass=radiusProfile)(uid=hugh))
> rlm_ldap: checking if remote access for hugh is allowed by dialupAccess
> rlm_ldap: performing search in
> cn=dialup,cn=group,cn=radius,cn=config,ou=eaccounts,dc=megashaft,dc=com,
> dc=au, with filter (objectclass=radiusprofile)
> rlm_ldap: object not found or got ambiguous search result
> rlm_ldap: default_profile/user-profile search failed
> rlm_ldap: looking for check items in directory...
> rlm_ldap: looking for reply items in directory...
> rlm_ldap: user hugh authorized to use remote access
> ldap_release_conn: Release Id: 0
>   modcall[authorize]: module "ldap" returns ok for request 0
> modcall: group authorize returns ok for request 0
>   rad_check_password:  Found Auth-Type LDAP
> auth: type "LDAP"
> modcall: entering group Auth-Type for request 0
> rlm_ldap: - authenticate
> rlm_ldap: login attempt by "hugh" with password "testpassword"
> rlm_ldap: user DN:
> cn=hugh,cn=3,cn=2000,cn=package,cn=hugh,cn=user,ou=eaccounts,dc=megashaf
> t,dc=com,dc=au
> rlm_ldap: (re)connect to ldap2-dev.megashaft.com.au:389, authentication
> 1
> rlm_ldap: bind as
> cn=hugh,cn=3,cn=2000,cn=package,cn=hugh,cn=user,ou=eaccounts,dc=megashaf
> t,dc=com,dc=au/testpassword to ldap2-dev.megashaft.com.au:389
> rlm_ldap: waiting for bind result ...
> rlm_ldap: user hugh authenticated succesfully
>   modcall[authenticate]: module "ldap" returns ok for request 0
> modcall: group Auth-Type returns ok for request 0
> Sending Access-Accept of id 161 to 203.191.96.199:34032 Finished request
> 0 Going to the next request
> --- Walking the entire request list ---
> Waking up in 6 seconds...
> --- Walking the entire request list ---
> Cleaning up request 0 ID 161 with timestamp 404692a6
> Nothing to do.  Sleeping until we see a request.
>
> (some details changed to protect the innocent)
>
> Thanks for any suggestions you may have! - I've gotten a lot further
> from reading that document at http://doris.name/radius/ - that was what
> gave away the tip of needing to use the users file!
>
> Cheers,
>
> Sam
>
>
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On Behalf Of Dustin
> Doris
> Sent: Saturday, 3 January 2004 2:19 AM
> To: [EMAIL PROTECTED]
> Cc: [EMAIL PROTECTED]
> Subject: Re: ldap auth: requiring group membership
>
>
> Check out www.doris.cc/radius.  It is my setup that I am using and does
> what you would want.  If you have any questions, post to the list and
> I'll try to answer them as best as I can.
>
> Dusty Doris
>
>
>
> On Tue, 30 Dec 2003, Ryan Henry wrote:
>
> > I have ldap auth working and would like to allow/disallow access based
> > on the user being in a certian group.
> >
> > this shows in the log: modcall: group authenticate returns ok but
> > there is never any ldap query to check the group.
> >
> > i have this in my radiusd.conf:
> >
> > groupname_attribute = cn
> > groupmembership_filter =
> > "(|(&(objectClass=posixGroup)(member=%{Ldap-UserDn}))(&(objectClass=Gr
> > oupOfUniqueNames)(uniquemember=%{Ldap-UserDn})))"
> > groupmembership_attribute = radiusGroupName
> >
> > and this in users:
> >
> > DEFAULT                Ldap-Group != "dialup", Auth-Type := REJECT
> > Reply-Message = "Sorry, you are not allowed to have dialup access"
> >
> > If anyone has any suggestions or could post their config with this
> > functionality working, I would appreciate it.
> >
> > Thanks,
> > -Ryan
> >
> >
> > -
> > List info/subscribe/unsubscribe? See
> > http://www.freeradius.org/list/users.html
> >
>
> -
> List info/subscribe/unsubscribe? See
> http://www.freeradius.org/list/users.html
>
>
>
> -
> List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
>

- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Reply via email to