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.