Freeradius 1.X.X and LDAP groups.
Michael March
mmarch at gmail.com
Wed Sep 9 08:17:02 CEST 2009
The scoop is I'm using Freeradius 1.1.3 under RHEL/Centos 5.2 and I'm
trying to get authentication working so FreeRadius will authenticate a
user OLNY if they are in a certain LDAP group.. In this case that
group is called 'it'.
Where I am at now is if the user is in or out of the 'it' group the
authentication goes through ok (depending if the password is correct,
of course). I would like the authenication to fail if the password is
correct BUT the user is not in a certain ('it') group.
Here are my configs snippets:
========= /etc/raddb/users ===========
DEFAULT Auth-Type = LDAP
Fall-Through = 1
DEFAULT LDAP-Group == it
Service-Type = Administrative-User
========= /etc/raddb/radiusd.conf ===========
ldap {
server = "192.168.150.140"
identity = "uid=admin,ou=People,dc=acme,dc=com"
password = "BadPass"
basedn = "dc=acme,dc=com"
filter = "(uid=%u)"
# base_filter = "(objectclass=radiusprofile)"
start_tls = no
# default_profile = "cn=radprofile,ou=dialup,o=My Org,c=UA"
# profile_attribute = "radiusProfileDn"
access_attr = uid
# Mapping of RADIUS dictionary attributes to LDAP
# directory attributes.
dictionary_mapping = ${raddbdir}/ldap.attrmap
ldap_connections_number = 5
groupname_attribute = cn
groupmembership_filter =
"(&(objectClass=GroupOfNames)(member=%{Ldap-UserDn}))"
groupmembership_attribute = it
timeout = 4
timelimit = 3
net_timeout = 1
compare_check_items = yes
# do_xlat = yes
access_attr_used_for_allow = yes
}
====== Output when user is OUT of the 'it' group ======
rad_recv: Access-Request packet from host 127.0.0.1:32770, id=213, length=59
User-Name = "vpntest"
User-Password = "ChangeMeToo"
NAS-IP-Address = 255.255.255.255
NAS-Port = 10
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 1
modcall[authorize]: module "preprocess" returns ok for request 1
modcall[authorize]: module "chap" returns noop for request 1
modcall[authorize]: module "mschap" returns noop for request 1
rlm_realm: No '@' in User-Name = "vpntest", looking up realm NULL
rlm_realm: No such realm "NULL"
modcall[authorize]: module "suffix" returns noop for request 1
rlm_eap: No EAP-Message, not doing EAP
modcall[authorize]: module "eap" returns noop for request 1
users: Matched entry DEFAULT at line 152
rlm_ldap: Entering ldap_groupcmp()
radius_xlat: 'dc=acme,dc=com'
radius_xlat: '(uid=vpntest)'
rlm_ldap: ldap_get_conn: Checking Id: 0
rlm_ldap: ldap_get_conn: Got Id: 0
rlm_ldap: performing search in dc=acme,dc=com, with filter (uid=vpntest)
rlm_ldap: ldap_release_conn: Release Id: 0
radius_xlat: '(&(objectClass=GroupOfNames)(member=uid\3dvpntest\2cou\3dPeople\2cdc\3dacme\2cdc\3dcom))'
rlm_ldap: ldap_get_conn: Checking Id: 0
rlm_ldap: ldap_get_conn: Got Id: 0
rlm_ldap: performing search in dc=acme,dc=com, with filter
(&(cn=it)(&(objectClass=GroupOfNames)(member=uid\3dvpntest\2cou\3dPeople\2cdc\3dacme\2cdc\3dcom)))
rlm_ldap: object not found or got ambiguous search result
rlm_ldap: ldap_release_conn: Release Id: 0
rlm_ldap: ldap_get_conn: Checking Id: 0
rlm_ldap: ldap_get_conn: Got Id: 0
rlm_ldap: performing search in uid=vpntest,ou=People,dc=acme,dc=com,
with filter (objectclass=*)
rlm_ldap::ldap_groupcmp: ldap_get_values() failed
rlm_ldap: ldap_release_conn: Release Id: 0
modcall[authorize]: module "files" returns ok for request 1
modcall: leaving group authorize (returns ok) for request 1
rad_check_password: Found Auth-Type LDAP
auth: type "LDAP"
Processing the authenticate section of radiusd.conf
modcall: entering group LDAP for request 1
rlm_ldap: - authenticate
rlm_ldap: login attempt by "vpntest" with password "ChangeMeToo"
rlm_ldap: user DN: uid=vpntest,ou=People,dc=acme,dc=com
rlm_ldap: (re)connect to 192.168.150.140:389, authentication 1
rlm_ldap: bind as uid=vpntest,ou=People,dc=acme,dc=com/ChangeMeToo to
192.168.150.140:389
rlm_ldap: waiting for bind result ...
rlm_ldap: Bind was successful
rlm_ldap: user vpntest authenticated succesfully
modcall[authenticate]: module "ldap" returns ok for request 1
modcall: leaving group LDAP (returns ok) for request 1
Sending Access-Accept of id 213 to 127.0.0.1 port 32770
Finished request 1
Going to the next request
--- Walking the entire request list ---
Waking up in 6 seconds...
--- Walking the entire request list ---
Cleaning up request 1 ID 213 with timestamp 4aa7438c
Nothing to do. Sleeping until we see a request.
====== Output when user is IN of the 'it' group ======
rad_recv: Access-Request packet from host 127.0.0.1:32770, id=220, length=59
User-Name = "vpntest"
User-Password = "ChangeMeToo"
NAS-IP-Address = 255.255.255.255
NAS-Port = 10
Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 2
modcall[authorize]: module "preprocess" returns ok for request 2
modcall[authorize]: module "chap" returns noop for request 2
modcall[authorize]: module "mschap" returns noop for request 2
rlm_realm: No '@' in User-Name = "vpntest", looking up realm NULL
rlm_realm: No such realm "NULL"
modcall[authorize]: module "suffix" returns noop for request 2
rlm_eap: No EAP-Message, not doing EAP
modcall[authorize]: module "eap" returns noop for request 2
users: Matched entry DEFAULT at line 152
rlm_ldap: Entering ldap_groupcmp()
radius_xlat: 'dc=acme,dc=com'
radius_xlat: '(uid=vpntest)'
rlm_ldap: ldap_get_conn: Checking Id: 0
rlm_ldap: ldap_get_conn: Got Id: 0
rlm_ldap: performing search in dc=acme,dc=com, with filter (uid=vpntest)
rlm_ldap: ldap_release_conn: Release Id: 0
radius_xlat: '(&(objectClass=GroupOfNames)(member=uid\3dvpntest\2cou\3dPeople\2cdc\3dacme\2cdc\3dcom))'
rlm_ldap: ldap_get_conn: Checking Id: 0
rlm_ldap: ldap_get_conn: Got Id: 0
rlm_ldap: performing search in dc=acme,dc=com, with filter
(&(cn=it)(&(objectClass=GroupOfNames)(member=uid\3dvpntest\2cou\3dPeople\2cdc\3dacme\2cdc\3dcom)))
rlm_ldap::ldap_groupcmp: User found in group it
rlm_ldap: ldap_release_conn: Release Id: 0
users: Matched entry DEFAULT at line 155
modcall[authorize]: module "files" returns ok for request 2
modcall: leaving group authorize (returns ok) for request 2
rad_check_password: Found Auth-Type LDAP
auth: type "LDAP"
Processing the authenticate section of radiusd.conf
modcall: entering group LDAP for request 2
rlm_ldap: - authenticate
rlm_ldap: login attempt by "vpntest" with password "ChangeMeToo"
rlm_ldap: user DN: uid=vpntest,ou=People,dc=acme,dc=com
rlm_ldap: (re)connect to 192.168.150.140:389, authentication 1
rlm_ldap: bind as uid=vpntest,ou=People,dc=acme,dc=com/ChangeMeToo to
192.168.150.140:389
rlm_ldap: waiting for bind result ...
rlm_ldap: Bind was successful
rlm_ldap: user vpntest authenticated succesfully
modcall[authenticate]: module "ldap" returns ok for request 2
modcall: leaving group LDAP (returns ok) for request 2
Sending Access-Accept of id 220 to 127.0.0.1 port 32770
Service-Type = Administrative-User
Finished request 2
Going to the next request
--- Walking the entire request list ---
Waking up in 6 seconds...
--- Walking the entire request list ---
Cleaning up request 2 ID 220 with timestamp 4aa743f8
Nothing to do. Sleeping until we see a request.
More information about the Freeradius-Users
mailing list