2008-05-03 10:31:19 +02:00
|
|
|
|
#summary Installation and configuration of the Yubico PAM module
|
2008-06-25 15:49:31 +02:00
|
|
|
|
#labels Featured,Phase-Deploy
|
2008-05-03 10:31:19 +02:00
|
|
|
|
|
|
|
|
|
= Yubico PAM module =
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
|
|
|
|
The Yubico PAM module provides an easy way to integrate the Yubikey
|
|
|
|
|
into your existing user authentication infrastructure. PAM is used by
|
|
|
|
|
GNU/Linux, Solaris and Mac OS X for user authentication, and by other
|
2008-05-03 10:31:19 +02:00
|
|
|
|
specialized applications such as NCSA !MyProxy.
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
== Status and Roadmap ==
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
2009-01-13 15:11:09 +01:00
|
|
|
|
The module is working for multi-user systems. It does not support
|
|
|
|
|
disconnected mode, for that there is another Yubico PAM module that
|
|
|
|
|
uses the AES key.
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
2008-01-11 13:52:40 +01:00
|
|
|
|
The development community is co-ordinated via Google Code:
|
|
|
|
|
|
|
|
|
|
http://code.google.com/p/yubico-pam/
|
|
|
|
|
|
2009-01-13 15:08:21 +01:00
|
|
|
|
The license for pam_yubico is the 2-clause BSD license, which is
|
|
|
|
|
compatible with the Linux-PAM BSD/GPL license. See the file COPYING
|
2008-01-11 13:52:40 +01:00
|
|
|
|
for more information.
|
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
== Building from SVN ==
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
|
|
|
|
Skip to the next section if you are using an official packaged
|
|
|
|
|
version.
|
|
|
|
|
|
2008-01-11 13:52:40 +01:00
|
|
|
|
You may check out the sources using SVN with the following command:
|
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
{{{
|
2008-01-11 13:52:40 +01:00
|
|
|
|
svn checkout http://yubico-pam.googlecode.com/svn/trunk/ yubico-pam
|
2008-05-03 10:31:19 +02:00
|
|
|
|
}}}
|
2008-01-11 13:52:40 +01:00
|
|
|
|
|
|
|
|
|
This will create a directory 'yubico-pam'. Enter the directory:
|
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
{{{
|
2008-01-11 13:52:40 +01:00
|
|
|
|
cd yubico-pam
|
2008-05-03 10:31:19 +02:00
|
|
|
|
}}}
|
2008-01-11 13:52:40 +01:00
|
|
|
|
|
2009-03-31 16:00:31 +02:00
|
|
|
|
Autoconf, automake and libtool must be installed.
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
|
|
|
|
Generate the build system using:
|
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
{{{
|
2008-01-11 13:41:21 +01:00
|
|
|
|
autoreconf --install
|
2008-05-03 10:31:19 +02:00
|
|
|
|
}}}
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
== Building ==
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
2009-03-25 11:15:13 +01:00
|
|
|
|
You will need to have libykclient (ykclient.h, libykclient.so) and
|
|
|
|
|
libpam-dev (security/pam_appl.h, libpam.so) installed. Get the
|
|
|
|
|
ykclient library from:
|
2008-06-25 15:49:31 +02:00
|
|
|
|
|
|
|
|
|
http://code.google.com/p/yubico-c-client/
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
2009-03-24 19:33:28 +01:00
|
|
|
|
It in turn requires Curl, which you need to have installed.
|
|
|
|
|
|
2008-01-11 13:41:21 +01:00
|
|
|
|
The build system uses Autoconf, to set up the build system run:
|
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
{{{
|
2008-01-11 13:41:21 +01:00
|
|
|
|
./configure
|
2008-05-03 10:31:19 +02:00
|
|
|
|
}}}
|
2009-03-24 19:32:58 +01:00
|
|
|
|
|
|
|
|
|
Use --without-ldap to disable ldap support.
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
|
|
|
|
Then build the code, run the self-test and install the binaries:
|
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
{{{
|
2008-01-11 13:41:21 +01:00
|
|
|
|
make check install
|
2008-05-03 10:31:19 +02:00
|
|
|
|
}}}
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
== Configuration ==
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
|
|
|
|
Install it in your PAM setup by adding a line to an appropriate file
|
|
|
|
|
in /etc/pam.d/:
|
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
{{{
|
2008-01-11 13:41:21 +01:00
|
|
|
|
auth sufficient pam_yubico.so id=16 debug
|
2008-05-03 10:31:19 +02:00
|
|
|
|
}}}
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
2008-05-02 11:24:53 +02:00
|
|
|
|
and move pam_yubico.so into /lib/security/:
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
{{{
|
2008-05-02 11:24:53 +02:00
|
|
|
|
mv /usr/local/lib/security/pam_yubico.so /lib/security/
|
2008-05-03 10:31:19 +02:00
|
|
|
|
}}}
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
2009-01-13 15:11:09 +01:00
|
|
|
|
For more information, see the project Wiki page.
|
|
|
|
|
|
2008-01-11 13:41:21 +01:00
|
|
|
|
Supported PAM module parameters are:
|
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
{{{
|
2010-04-13 19:40:32 +02:00
|
|
|
|
"authfile": to indicate the location of the file that holds the
|
2010-04-13 22:01:22 +02:00
|
|
|
|
mappings of yubikey public IDs to user names.
|
2010-04-13 19:40:32 +02:00
|
|
|
|
|
2009-05-11 12:05:20 +02:00
|
|
|
|
"id": to indicate your client identity.
|
|
|
|
|
|
|
|
|
|
"key": to indicate your client key in base64 format.
|
|
|
|
|
|
|
|
|
|
"debug": to enable debug output to stdout.
|
|
|
|
|
|
2010-04-13 22:01:22 +02:00
|
|
|
|
"alwaysok": to enable all authentication attempts to succeed
|
2009-02-11 17:35:29 +01:00
|
|
|
|
(aka presentation mode).
|
2009-03-24 12:13:57 +01:00
|
|
|
|
|
|
|
|
|
"try_first_pass":
|
|
|
|
|
Before prompting the user for their password, the module first
|
|
|
|
|
tries the previous stacked module´s password in case that satisfies
|
|
|
|
|
this module as well.
|
|
|
|
|
|
|
|
|
|
"use_first_pass":
|
|
|
|
|
The argument use_first_pass forces the module to use a previous
|
|
|
|
|
stacked modules password and will never prompt the user - if no
|
|
|
|
|
password is available or the password is not appropriate, the user
|
|
|
|
|
will be denied access.
|
|
|
|
|
|
2009-02-11 17:35:29 +01:00
|
|
|
|
"url": specify the URL template to use, this is set by calling
|
2010-04-13 22:01:22 +02:00
|
|
|
|
yubikey_client_set_url_template, which defaults to:
|
|
|
|
|
http://api.yubico.com/wsapi/verify?id=%d&otp=%s
|
2009-05-11 12:05:20 +02:00
|
|
|
|
|
2009-08-11 11:29:44 +02:00
|
|
|
|
"ldap_uri": specifiy the ldap server uri (e.g. ldap://localhost).
|
2009-05-11 12:05:20 +02:00
|
|
|
|
|
2010-04-14 10:17:43 +02:00
|
|
|
|
|
|
|
|
|
"ldapserver": specifiy the ldap server host (default ldap port is used).
|
|
|
|
|
Deprecated. Use "ldap_uri" instead.
|
|
|
|
|
|
2009-05-11 12:05:20 +02:00
|
|
|
|
"ldapdn": specify the dn where the users are stored
|
|
|
|
|
(eg: ou=users,dc=domain,dc=com).
|
|
|
|
|
|
2010-04-13 22:01:22 +02:00
|
|
|
|
"user_attr": specify the LDAP attribute used to store user names (eg:cn).
|
2009-05-11 12:05:20 +02:00
|
|
|
|
|
2010-04-13 22:01:22 +02:00
|
|
|
|
"yubi_attr": specify the LDAP attribute used to store the yubikey id.
|
2008-05-03 10:31:19 +02:00
|
|
|
|
}}}
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
|
|
|
|
If you are using "debug" you may find it useful to create a
|
|
|
|
|
world-writable log file:
|
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
{{{
|
2008-01-11 13:41:21 +01:00
|
|
|
|
touch /var/run/pam-debug.log
|
|
|
|
|
chmod go+w /var/run/pam-debug.log
|
2008-05-03 10:31:19 +02:00
|
|
|
|
}}}
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
2010-04-13 22:01:22 +02:00
|
|
|
|
== Authorization Mapping Files ==
|
|
|
|
|
A mapping must be made between the yubikey public ID and the user it ID is
|
|
|
|
|
attached to. There are two ways to do this, either centrally in one file or
|
|
|
|
|
individually, where users can create the mapping in their home directories.
|
2010-04-14 10:04:57 +02:00
|
|
|
|
If the central authorization mapping file is being used, user home directory
|
|
|
|
|
mappings will not be used and the opposite applies if user home directory
|
|
|
|
|
mappings are being used, the central authorization mappings file will not
|
|
|
|
|
be used.
|
2010-04-13 22:01:22 +02:00
|
|
|
|
|
|
|
|
|
1) Centrally
|
|
|
|
|
|
|
|
|
|
Create a /etc/yubikey_mappings, the file must contain a user name and the
|
|
|
|
|
yubikey Public ID separated by colons (same format at the passwd file) for
|
|
|
|
|
each user you want to allow onto the system using a yubikey.
|
|
|
|
|
|
|
|
|
|
The mappings should look like this, one per line:
|
|
|
|
|
<user name>:<yubikey token ID>:<yubikey token ID>: ….
|
|
|
|
|
<user name>:<yubikey token ID>:<yubikey token ID>:…..
|
|
|
|
|
|
|
|
|
|
Now add authfile=/etc/yubikey_mappings to your PAM configuration line, so it
|
|
|
|
|
looks like:
|
|
|
|
|
|
|
|
|
|
auth sufficient pam_yubico.so id=16 authfile=/etc/yubikey_mappings
|
|
|
|
|
|
|
|
|
|
2) Individual, by user
|
|
|
|
|
Each user creates a ~/.yubico/authorized_yubikeys file inside of their home
|
|
|
|
|
directory and places the mapping in that file, the file must have only one
|
|
|
|
|
line:
|
|
|
|
|
|
|
|
|
|
<user name>:<yubikey token ID>:<yubikey token ID>
|
|
|
|
|
|
|
|
|
|
This is much the same concept as the SSH authorized_keys file.
|
|
|
|
|
|
2008-06-25 15:49:31 +02:00
|
|
|
|
== Examples ==
|
|
|
|
|
|
|
|
|
|
If you want to use the Yubikey to authenticate you on linux console
|
|
|
|
|
logins, add the following to the top of /etc/pam.d/login:
|
|
|
|
|
|
|
|
|
|
{{{
|
|
|
|
|
auth sufficient pam_yubico.so id=16 debug
|
|
|
|
|
}}}
|
|
|
|
|
|
2008-05-03 10:31:19 +02:00
|
|
|
|
== Feedback ==
|
2008-01-11 13:41:21 +01:00
|
|
|
|
|
|
|
|
|
If you want to discuss anything related to the Yubico PAM module,
|
2009-01-13 15:11:09 +01:00
|
|
|
|
please contact Simon Josefsson <simon@yubico.com>.
|