freeradius and yubikeys
Arran Cudbard-Bell
a.cudbardb at freeradius.org
Fri May 9 14:32:25 CEST 2014
On 9 May 2014, at 12:02, Arran Cudbard-Bell <a.cudbardb at freeradius.org> wrote:
>
> On 9 May 2014, at 11:14, Frederic Van Espen <frederic.ve at gmail.com> wrote:
>
>> On Fri, May 9, 2014 at 9:11 AM, Arran Cudbard-Bell
>> <a.cudbardb at freeradius.org> wrote:
>>> Which you'd get if you rolled your own packages, and hey you'd actually be
>>> contributing something, because if you came across any defects, you might
>>> actually be able to provide useful debugging info.
>>
>> I now have version 3.0.2 up and running with rlm_yubikey. For this
>> testing setup, I'm simply trying to validate to the public yubicloud
>> server using the validate mode.
>>
>> When I was using the rlm_perl based module, I was able to enter a user
>> password, followed by the OTP token. The perl module extracted the OTP
>> and passed on the user password for further authentication (in my case
>> LDAP). Now when I use radtest like this:
>> root at obelix-clone:/usr/src# radtest fes
>> testingpasswordccccccdbkebjrndreglhlcdnrrkvcneruvcnnffieibr 127.0.0.1
>> 0 testing123
>> Sending Access-Request of id 85 from 0.0.0.0 port 56523 to 127.0.0.1 port 1812
>> User-Name = 'fes'
>> User-Password = 'testingpasswordccccccdbkebjrndreglhlcdnrrkvcneruvcnnffieibr'
>> NAS-IP-Address = 172.16.35.65
>> NAS-Port = 0
>> Message-Authenticator = 0x00
>> rad_recv: Access-Reject packet from host 127.0.0.1 port 1812, id=85, length=20
>>
>>
>> Here's the output of the server:
>> rad_recv: Access-Request packet from host 127.0.0.1 port 56523, id=85,
>> length=121
>> User-Name = 'fes'
>> User-Password = 'testingpasswordccccccdbkebjrndreglhlcdnrrkvcneruvcnnffieibr'
>> NAS-IP-Address = 172.16.35.65
>> NAS-Port = 0
>> Message-Authenticator = 0xf4c430ea058e22ef07ef239f42b0270f
>> Fri May 9 11:52:20 2014 : Debug: (0) # Executing section authorize
>> from file /etc/freeradius/sites-enabled/default
>> Fri May 9 11:52:20 2014 : Debug: (0) authorize {
>> Fri May 9 11:52:20 2014 : Debug: (0) modsingle[authorize]: calling
>> preprocess (rlm_preprocess) for request 0
>> Fri May 9 11:52:20 2014 : Debug: (0) modsingle[authorize]: returned
>> from preprocess (rlm_preprocess) for request 0
>> Fri May 9 11:52:20 2014 : Debug: (0) [preprocess] = ok
>> Fri May 9 11:52:20 2014 : Debug: (0) modsingle[authorize]: calling
>> yubikey (rlm_yubikey) for request 0
>> Fri May 9 11:52:20 2014 : Debug: (0) yubikey : User-Password value is
>> not the correct length, expected 44, got 59
>
> ^ Look at me, look at me, i'm the reason why it's not working, look at me look at me.
>
>> Fri May 9 11:52:20 2014 : Debug: (0) modsingle[authorize]: returned
>> from yubikey (rlm_yubikey) for request 0
>> Fri May 9 11:52:20 2014 : Debug: (0) [yubikey] = noop
>> Fri May 9 11:52:20 2014 : Debug: (0) if (ok)
>> Fri May 9 11:52:20 2014 : Debug: (0) if (ok) -> FALSE
>>
>> Do you know of any way to regain the behaviour of the rlm_perl based
>> module (user password AND OTP token for two factor authentication)?
>> Should I maybe handle that in the configuration?
>
> The scheme of concatenating the password with the token string is user defined.
> The yubikey module checks you've performed the split correctly, by looking at
> the length of the User-Password. It cannot split out the password + OTP token
> for you as it does not know your concatenation scheme. The yubikey module
> restricts you to straight concatenation with no separator, FreeRADIUS lets you
> use any scheme.
>
> If you're doing 2FA as a single round with password + OTP concatenation, you
> need something like:
>
Oops. It's more like
authorize {
# 44 is OTP len + ID Len
if (User-Password =~ /^(.*)([cbdefghijklnrtuv]{44})$/) {
update request {
User-Password = "%{2}"
}
yubikey.authenticate
if (ok) {
update request {
User-Password := "%{1}"
}
}
}
<insert modules to get control:Password-With-Header or control:*-Password, ldap, files etc...>
pap
}
Ok i'll see if I can fix the behaviour to be a little more sane.
-Arran
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 881 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://lists.freeradius.org/pipermail/freeradius-users/attachments/20140509/4994a95d/attachment.pgp>
More information about the Freeradius-Users
mailing list