Installation de Freeradius avec Google Authenticator

Afin de mettre en place LemonLDAP::NG avec une double authentification LDAP + OTP nous allons devoir installer Freeradius. En effet LemonLDAP::NG ne supporte pas pour le moment PAM comme backend direct d’authentification.

 (Ré)Installation de Google Authenticator

Si vous avez suivi ce billet, vous avez certainement installé le paquet de Google Authenticator de Debian. Malheureusement celui-ci n’est au moment où j’écris ces lignes pas assez à jour pour être utilisé avec Freeradius : il ne gère pas les applications ne supportant pas les challenges.

Nous allons donc désinstaller le paquet et installer le projet depuis les sources.

# apt-get remove lib-pam-google-authenticator
# apt-get install libpam0g-dev gcc make mercurial
# hg clone https://code.google.com/p/google-authenticator/
# cd google-authenticator/libpam
# make
# make test
# make install

Installation de Freeradius

Ne pouvant pas utiliser directement PAM comme mécanisme d’authentification, nous allons passer par Freeradius qui s’appuiera lui même sur PAM.

# apt-get install freeradius

Pour fonctionner avec le module PAM de Google Authenticator, Freeradius a besoin d’un tout petit peu de configuration.

Dans ‘/etc/freeradius/radiusd.conf’, il faut demander à Freeradius de s’éxecuter en tant que root:root à la place de freerad:freerad:

user = root
group = root

Dans ‘/etc/freeradius/users, on va définir PAM comme méthode d’authentification par défaut :

DEFAULT   Auth-Type := PAM

Dans le default site de Freeradius, décommentez la ligne pam dans la section ‘authenticate’ :

authenticate {
<.../>
        pam
<.../>
}

Il nous faut maintenant aller modifier le fichier ‘/etc/pam.d/radiusd’ pour obtenir :

auth    requisite       pam_google_authenticator.so forward_pass
auth    required        pam_unix.so use_first_pass

Test de l’installation de Freeradius

En prérequis il vous faut un utilisateur système ayant un fichier .google_authenticator dans son home.

Ensuite on va utiliser l’outils radtest :

#radtest myuser userpwdOTP localhost 18120 testing123

ATTENTION : Notez bien que le mot de passe à fournir à radtest est le password UNIX de l’utilisateur et son OTP concaténés !

Vous devriez obtenir quelque chose comme ceci :

# radtest toto totopasswd966037 localhost 18120 testing123
Sending Access-Request of id 0 to 127.0.0.1 port 1812
        User-Name = "toto"
        User-Password = "totopasswd966037"
        NAS-IP-Address = 127.0.1.1
        NAS-Port = 18120
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=0, length=20

En cas de problème vous pouvez toujours relancer Freeradius en mode Debug. Attention vous allez voir passer les mots de passe en clair dans les logs de debug de Freeradius :

# service freeradius stop
# freeradius -X

Voila ! Votre Freeradius peut maintenant utiliser PAM pour fonctionner. Nous allons passer dans l’article suivant sur la configuration de PAM + LDAP + Google Authenticator.

Vus : 1424
Publié par Fitzdsl Blog : 27