Magazine

Google-Authenticator : Sécuriser SSH (Module PAM) + Patch

Publié le 31 août 2011 par Mydoom666

Introduction

Google-Authenticator permet l’ajout d’une seconde protection à l’accès de certains services. Par exemple lors de sa connexion au serveur par SSH, l’utilisateur devra renseigner le mot de passe de son compte (comme à l’habitude). Si le mot de passe est correct, il devra ensuite taper un code à 6 chiffres disponible uniquement via l’application de son smartphone Android, iOS ou Blackberry. Pour des raisons de sécurité, le code se régénère toutes les 30 secondes. Si tous les pré-requis sont validés alors l’utilisateur parvient à accéder au serveur.

La validation en deux étapes est une procédure permettant de renforcer la sécurité des connexions aux comptes Google, par le biais d’un code de validation que les utilisateurs doivent saisir en complément de leur nom d’utilisateur et de leur mot de passe.

Pré-requis : L’application Android (Market), iOS (AppleStore) ou Blackberry http://code.google.com/p/google-authenticator/

Note : Pour l’installation de ce module, je me suis basé sur l’article très complet de essembeh sur son blog.

Patch : Par défaut, l’installation de Google-Authenticator impacte TOUS les utilisateurs du système. Le patch ignore_nofile permet d’éviter cela et choisir quel(s) utilisateur(s) doivent bénéficier de la validation à deux étapes. (optionnel)

googleauth_logo.png

Installation

Installer les dépendances.

apt-get install mercurial subversion libpam-dev

Attention : Mercurial doit être >= 1.7.5 ! Si ce n’est pas le cas : http://code.google.com/p/google-authent … ialVersion

Télécharger les sources. (ça peut prendre un moment)

hg clone https://google-authenticator.googlecode.com/hg/ google-authenticator/
cd google-authenticator/libpam/

Appliquer le patch : http://code.google.com/p/google-authent … tail?id=18 (miroir-07-07-2011) (cf. partie Introduction)

patch < ignore_nofile.patch

Puis lancer la compilation.

make
sudo make install

Sous Ubuntu Server 11.04 (Natty) x86_64 lors du make, je tombe sur les erreurs suivantes :

gcc --std=gnu99 -Wall -O2 -g -fPIC -c   -o google-authenticator.o google-authenticator.c
gcc --std=gnu99 -Wall -O2 -g -fPIC -c   -o base32.o base32.c
gcc --std=gnu99 -Wall -O2 -g -fPIC -c   -o hmac.o hmac.c
gcc --std=gnu99 -Wall -O2 -g -fPIC -c   -o sha1.o sha1.c
gcc -g    -o google-authenticator google-authenticator.o base32.o hmac.o sha1.o
google-authenticator.o: In function `displayQRCode':
~/work/google-authenticator/libpam/google-authenticator.c:154: undefined reference to `dlopen'
~/work/google-authenticator/libpam/google-authenticator.c:166: undefined reference to `dlsym'
~/work/google-authenticator/libpam/google-authenticator.c:168: undefined reference to `dlsym'
~/work/google-authenticator/libpam/google-authenticator.c:253: undefined reference to `dlclose'
~/work/google-authenticator/libpam/google-authenticator.c:156: undefined reference to `dlopen'
collect2: ld returned 1 exit status
make: *** [google-authenticator] Error 1

Rectification du chemin vers la librairie libdl.so

locate libdl.so
sudo sed -i -e 's/\/usr\/lib\/libdl.so/\/usr\/lib\/x86_64-linux-gnu\/libdl.so/' Makefile

Maintenant la compilation se termine correctement.

Configuration

Dans mon cas, j’utilise ce module pour sécuriser l’accès SSH au serveur. Mais on peut l’appliquer à d’autres services, comme par exemple Vsftpd, Samba…

Editer /etc/pam.d/sshd
Et ajouter en début de fichier après la ligne @include common-auth :

auth required pam_google_authenticator.so
Exemple a écrit :

# PAM configuration for the Secure Shell service

# Read environment variables from /etc/environment and
# /etc/security/pam_env.conf.
auth       required     pam_env.so # [1]
# In Debian 4.0 (etch), locale-related environment variables were moved to
# /etc/default/locale, so read that as well.
auth       required     pam_env.so envfile=/etc/default/locale

# Standard Un*x authentication.
@include common-auth
auth       required     pam_google_authenticator.so

# Disallow non-root logins when /etc/nologin exists.
account    required     pam_nologin.so

Passer la valeur à yes dans /etc/ssh/sshd_config

ChallengeResponseAuthentication yes

Puis redémarrer le service pour prendre en compte la nouvelle configuration

/etc/init.d/ssh restart

Utilisation

Chaque utilisateur qui souhaite bénificier de cette protection devra créer son propre fichier de configuration~/.google_authenticator avec la commande :

google-authenticator

Le lien pointe vers un QRcode qu’il faut impérativement scanner à l’aide de l’application.
Autrement, je suppose qu’il faut utiliser la clé secrète CMBGEGEKQYHP7IA5 dans cet exemple. (pas testé)

googleauth.jpg

Il est important de noter ou rajouter des codes de secours en cas de perte ou panne du smartphone. (en éditant le fichier)

- La première question demande si on doit écrire le fichier de configuration, répondre oui.

- Ensuite si on permet ou non l’utilisation du même code plusieurs fois. Autrement dit comme un code est valable 30 secondes, si je veux me connecter deux fois en 30 secondes, je dois répondre oui.

- Ensuite on vous propose d’étendre la durée de vie des codes.

- Enfin une sécurité visant à interdire le brute-force.

Test

Pour tester que tout fonctionne comme il faut, on récupère le code de vérification avec l’application du smartphone.

google_auth_apk.jpg
L’application ne nécessite pas de connexion Internet.

Puis on ouvre une connexion SSH.

$ ssh [email protected]
Password: 
Verification code: 
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.38-8-server x86_64)

 * Documentation:  http://www.ubuntu.com/server/doc

  System information as of Wed Aug 31 17:54:56 CEST 2011

  System load:    0.11                Processes:           203
  Usage of /home: 85.8% of 448.84GB   Users logged in:     1
  Memory usage:   47%                 IP address for eth0: 10.20.30.40
  Swap usage:     11%

  Graph this data and manage this system at https://landscape.canonical.com/
Last login: Tue Aug 30 09:17:59 2011 from 11.12.13.14

Génial ! Ça marche ! cool

Patch : Vérifier que les utilisateurs qui n’ont pas crée leur fichier ~/.google_authenticator peuvent toujours se connecter.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Mydoom666 3 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte