Ubuntu PAM USB authentication

The most secure you can get a box from a login point of view involves three authentication methods: Something you have, something you know, and something about you.

So to secure my laptop a little more I decided to implement the “something you have” method. The “something you know” method is obviously the password. Currently I don’t see the need or have the ability to easily add the “something about you” method, but maybe in the future.

Obviously I always have a USB flash drive on me, being a computer geek. Thus I decided to use pam-usb, which allows me to use a USB flash drive as an authentication method.

First, install the following two packages:

apt-get install pamusb-tools libpam-usb pmount

Then plug in your flash drive and run:

pamusb-conf --add-device <name>

Where <name> is whatever you like. You will then be asked to select your storage device. Select the desired drive and afterward:

pamusb-conf --add-user <account>

Account is whatever account you want to use the flash drive for. When asked for a device just select the one you previously configured. If you only configured one device than it will be selected by default.

Finally confirm you can authenticate properly. The flash drive must be plugged in for this step!

pamusb-check <account>

If you are told that the authentication succeeded congrats! Else, check your configuration again.

The final step to complete is to change everything in /etc/pam.d/gdm so that it now says:

#%PAM-1.0
auth    requisite       pam_nologin.so
auth    required        pam_env.so readenv=1
auth    required        pam_env.so readenv=1 envfile=/etc/default/locale
@include common-auth
auth    optional        pam_gnome_keyring.so
@include common-account
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close
session required        pam_limits.so
@include common-session
session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open
session optional        pam_gnome_keyring.so auto_start
@include common-password
auth required pam_usb.so fs=fat check_device=-1 check_if_mounted=-1

Then just restart GDM or restart your computer. After that try to login without your flash drive inserted. It should simply fail. Afterwards try plugging in the flash drive, waiting a few seconds, and trying again. This time the login should succeed. Note the above setup is for using both a password and flash drive, not just a flash drive.

Leave a Reply