Hi, i've been successfully using 0.9 thru 0.9.3 in a simple config in which all authentication is done by rlm_krb5. Now, i also need to authenticate a certain subgroup of users with rlm_passwd. This new subgroup of users will be identified by an IP-based huntgroup. The huntgroup selection, and authentication with krb5 or passwd all seem to work fine, when tested individually. My problem is for cases when a user is to be authenticated by rlm_krb5 as determined by huntgroup, but also happens to exist in the passwd file. In this case, the user's password is checked against the passwd file entry before rlm_krb gets called. This behavior is not what i was hoping for.
Does it have to do with rlm_passwd being an authorize module, while rlm_krb5 is an authenticate module? Is there a way around this?
Freeradius version is 0.9.3, built on Redhat 9. The relevant config info (i think) is below. Output from radiusd -X -x is in an attached text file.
##### radius.conf: #####
modules {
...
passwd 1aix-passwd {
filename = ${raddbdir}/aix-passwd
format = "*User-Name:Crypt-Password"
hashsize = 100
}
...
}authenticate {
krb5
...
}authorize {
...
1aix-passwd
...
}##### huntgroups: #####
aixusers NAS-IP-Address == 1.1.1.1
##### users: #####
DEFAULT Huntgroup-Name == aixusers, Auth-Type := 1aix-passwd
DEFAULT Auth-Type := Kerberos
#####
BTW, another weird thing is that radiusd was not able to instantiate the rlm_passwd module unless i began the instance name with a digit. In other words, if i used "aix-passwd", radiusd complained:
/opt/radius/etc/raddb/users[1]: Parse error (check) for entry DEFAULT: Unknown value aix-passwd for attribute Auth-Type Errors reading /opt/radius/etc/raddb/users radiusd.conf[931]: files: Module instantiation failed.
But when i stuck a 1 at the beginning, it worked. Is this expected?
Thanks in advance, -Matt
### ### radiusd -X -x startup output: ###
[...]
Wed Jan 21 17:32:40 2004 : Debug: Module: Loaded passwd
Wed Jan 21 17:32:40 2004 : Debug: passwd: filename =
"/opt/radius/etc/raddb/aix-passwd"
Wed Jan 21 17:32:40 2004 : Debug: passwd: format = "*User-Name:Crypt-Password"
Wed Jan 21 17:32:40 2004 : Debug: passwd: authtype = "(null)"
Wed Jan 21 17:32:40 2004 : Debug: passwd: delimiter = ":"
Wed Jan 21 17:32:40 2004 : Debug: passwd: ignorenislike = yes
Wed Jan 21 17:32:40 2004 : Debug: passwd: allowmultiplekeys = no
Wed Jan 21 17:32:40 2004 : Debug: passwd: hashsize = 100
Wed Jan 21 17:32:40 2004 : Info: rlm_passwd: nfields: 2 keyfield 0(User-Name)
listable: no
Wed Jan 21 17:32:40 2004 : Debug: Module: Instantiated passwd (1aix-passwd)
[...]
Wed Jan 21 17:32:40 2004 : Info: Listening on IP address *, ports 1812/udp and
1813/udp.
Wed Jan 21 17:32:40 2004 : Info: Ready to process requests.
###
### success case, when rlm_passwd is expected:
###
rad_recv: Access-Request packet from host 127.0.0.1:32782, id=2, length=65
User-Name = "test"
User-Password = "pswdpass"
NAS-IP-Address = 1.1.1.1
NAS-Port = 1
Framed-Protocol = PPP
Wed Jan 21 17:33:28 2004 : Debug: modcall: entering group authorize for request 0
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: calling preprocess
(rlm_preprocess) for request 0
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: returned from preprocess
(rlm_preprocess) for request 0
Wed Jan 21 17:33:28 2004 : Debug: modcall[authorize]: module "preprocess" returns ok
for request 0
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: calling chap (rlm_chap) for
request 0
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: returned from chap
(rlm_chap) for request 0
Wed Jan 21 17:33:28 2004 : Debug: modcall[authorize]: module "chap" returns noop for
request 0
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: calling eap (rlm_eap) for
request 0
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: returned from eap (rlm_eap)
for request 0
Wed Jan 21 17:33:28 2004 : Debug: modcall[authorize]: module "eap" returns noop for
request 0
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: calling suffix (rlm_realm)
for request 0
Wed Jan 21 17:33:28 2004 : Debug: rlm_realm: No '@' in User-Name = "test", looking
up realm NULL
Wed Jan 21 17:33:28 2004 : Debug: rlm_realm: No such realm "NULL"
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: returned from suffix
(rlm_realm) for request 0
Wed Jan 21 17:33:28 2004 : Debug: modcall[authorize]: module "suffix" returns noop
for request 0
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: calling 1aix-passwd
(rlm_passwd) for request 0
Wed Jan 21 17:33:28 2004 : Debug: rlm_passwd: Added Crypt-Password: 'zzzzzzzzzzzzz' to
config_items
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: returned from 1aix-passwd
(rlm_passwd) for request 0
Wed Jan 21 17:33:28 2004 : Debug: modcall[authorize]: module "1aix-passwd" returns
ok for request 0
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: calling files (rlm_files)
for request 0
Wed Jan 21 17:33:28 2004 : Debug: huntgroups: Matched aixusers at 1
Wed Jan 21 17:33:28 2004 : Debug: users: Matched DEFAULT at 1
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: returned from files
(rlm_files) for request 0
Wed Jan 21 17:33:28 2004 : Debug: modcall[authorize]: module "files" returns ok for
request 0
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: calling mschap (rlm_mschap)
for request 0
Wed Jan 21 17:33:28 2004 : Debug: modsingle[authorize]: returned from mschap
(rlm_mschap) for request 0
Wed Jan 21 17:33:28 2004 : Debug: modcall[authorize]: module "mschap" returns noop
for request 0
Wed Jan 21 17:33:28 2004 : Debug: modcall: group authorize returns ok for request 0
Wed Jan 21 17:33:28 2004 : Debug: rad_check_password: Found Auth-Type 1aix-passwd
Wed Jan 21 17:33:28 2004 : Debug: auth: type Crypt
Wed Jan 21 17:33:28 2004 : Auth: Login OK: [test] (from client localhost port 1)
Sending Access-Accept of id 2 to 127.0.0.1:32782
Wed Jan 21 17:33:28 2004 : Debug: Finished request 0
###
### failure case, when rlm_krb5 is expected, but rlm_passwd gets used instead:
###
rad_recv: Access-Request packet from host 127.0.0.1:32782, id=40, length=59
User-Name = "test"
User-Password = "kerbpass"
NAS-IP-Address = 255.255.255.255
NAS-Port = 1
Wed Jan 21 17:56:55 2004 : Debug: modcall: entering group authorize for request 0
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: calling preprocess
(rlm_preprocess) for request 0
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: returned from preprocess
(rlm_preprocess) for request 0
Wed Jan 21 17:56:55 2004 : Debug: modcall[authorize]: module "preprocess" returns ok
for request 0
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: calling chap (rlm_chap) for
request 0
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: returned from chap
(rlm_chap) for request 0
Wed Jan 21 17:56:55 2004 : Debug: modcall[authorize]: module "chap" returns noop for
request 0
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: calling eap (rlm_eap) for
request 0
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: returned from eap (rlm_eap)
for request 0
Wed Jan 21 17:56:55 2004 : Debug: modcall[authorize]: module "eap" returns noop for
request 0
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: calling suffix (rlm_realm)
for request 0
Wed Jan 21 17:56:55 2004 : Debug: rlm_realm: No '@' in User-Name = "test", looking
up realm NULL
Wed Jan 21 17:56:55 2004 : Debug: rlm_realm: No such realm "NULL"
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: returned from suffix
(rlm_realm) for request 0
Wed Jan 21 17:56:55 2004 : Debug: modcall[authorize]: module "suffix" returns noop
for request 0
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: calling 1aix-passwd
(rlm_passwd) for request 0
Wed Jan 21 17:56:55 2004 : Debug: rlm_passwd: Added Crypt-Password: 'zzzzzzzzzzzzz' to
config_items
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: returned from 1aix-passwd
(rlm_passwd) for request 0
Wed Jan 21 17:56:55 2004 : Debug: modcall[authorize]: module "1aix-passwd" returns
ok for request 0
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: calling files (rlm_files)
for request 0
Wed Jan 21 17:56:55 2004 : Debug: users: Matched DEFAULT at 3
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: returned from files
(rlm_files) for request 0
Wed Jan 21 17:56:55 2004 : Debug: modcall[authorize]: module "files" returns ok for
request 0
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: calling mschap (rlm_mschap)
for request 0
Wed Jan 21 17:56:55 2004 : Debug: modsingle[authorize]: returned from mschap
(rlm_mschap) for request 0
Wed Jan 21 17:56:55 2004 : Debug: modcall[authorize]: module "mschap" returns noop
for request 0
Wed Jan 21 17:56:55 2004 : Debug: modcall: group authorize returns ok for request 0
Wed Jan 21 17:56:55 2004 : Debug: rad_check_password: Found Auth-Type Kerberos
Wed Jan 21 17:56:55 2004 : Debug: auth: type Crypt
Wed Jan 21 17:56:55 2004 : Debug: auth: Failed to validate the user.
Wed Jan 21 17:56:55 2004 : Auth: Login incorrect: [test] (from client localhost port 1)
Wed Jan 21 17:56:55 2004 : Debug: Delaying request 0 for 1 seconds
Wed Jan 21 17:56:55 2004 : Debug: Finished request 0
Wed Jan 21 17:56:55 2004 : Debug: Going to the next request
Wed Jan 21 17:56:55 2004 : Debug: --- Walking the entire request list ---
Wed Jan 21 17:56:55 2004 : Debug: Waking up in 1 seconds...
Wed Jan 21 17:56:56 2004 : Debug: --- Walking the entire request list ---
Wed Jan 21 17:56:56 2004 : Debug: Waking up in 1 seconds...
Wed Jan 21 17:56:57 2004 : Debug: --- Walking the entire request list ---
Sending Access-Reject of id 40 to 127.0.0.1:32782
# end

