Yubikey authentication module

Create an API key for YubiCloud

Grab a free API key from Yubico. One application, context or server should mean a new client id.

Enter your email, select the Yubikey OTP input and touch your Yubikey. The resulting page will include:

Client ID: <clientId>
Secret Key: <secretKey>

Store these credentials in a safe place (password manager) as you will need them in the next step.

Create the Yubikey authentication module

After the system-wide mapping is completed and the API credentials generated, create and add the following configuration line to /etc/pam.d/yubikey-auth:

# Enable YubiCloud OTP Validation (implicitly includes `mode=client` and the default validation `urllist`).
auth    required        pam_yubico.so id=<clientId> key=<secretKey> authfile=/etc/yubikeys

To enable debugging, create the log files and add the debug and debug_file parameters as arguments to pam_yubico.so:

❯ touch /var/log/yubikey-auth.log
❯ chmod go+w /var/log/yubikey-auth.log

Update the /etc/pam.d/yubikey-auth file:

auth    required        pam_yubico.so id=<clientId> key=<secretKey> authfile=/etc/yubikeys debug debug_file=/var/log/yubikey-auth.log

Remove when debugging is no longer necessary.

Update common-auth authentication module

Add the try_first_pass directive to the pam_unix.so backend inside the /etc/pam.d/common-auth module so that it first attempts to use the previous stacked module's password in case that satisfies this module as well before asking it again. Not all distributions have a common-auth file, so you may look on other files to see what makes sense.

Also, you must include the previously created Yubikey authentication module (order matters):

auth    include                         yubikey-auth
auth    [success=1 default=ignore]      pam_unix.so nullok_secure try_first_pass

results matching ""

    No results matching ""