2 step verification – sécurisez l’accès à votre compte google, facebook et à vos serveurs

Depuis un certain temps, vous pouvez fortement améliorer la sécurité à vos différents comptes grâce à la mise en place d’un système d’authentification à 2 étapes appelé « 2 step verification » en anglais.

Depuis un certain temps, vous pouvez fortement améliorer la sécurité à vos différents comptes grâce à la mise en place d’un système d’authentification à 2 étapes appelé « 2 step verification » en anglais. Un article à ce sujet est présent sur le support google.

Fonctionnement

Rien de plus simple : lorsque vous vous connectez à votre compte avec vos informations habituelles, vous recevez un mot de passe temporaire sur votre téléphone portable dont vous aurez besoin pour valider la connexion. Cela permet d’éviter le piratage de votre compte et donc de vos informations.

Conseil : activez le sur votre compte google et facebook
Etant donné que plus de sécurité ne fait jamais de mal, surtout si vous utilisez gmail comme compte principal, vous ne voudrez évidemment pas que votre compte soit piraté… Pour google, c’est par ici : http://accounts.google.com/SmsAuthConfigSous facebook, cela se situe dans les paramètres de votre compte -> sécurité du compte -> Login approval (approbation de connexion).

Installation de google authenticator sur debian

Téléchargement

Google a publié un paquet debian pam pour permettre ce système d’authentifications sur votre serveur. Pour ce faire, récupérez la dernière version à l’adresse : http://packages.debian.org/wheezy/libpam-google-authenticator

Installation

apt-get install libqrencode3
wget http://ftp.fr.debian.org/debian/pool/main/g/google-authenticator/libpam-google-authenticator_20110413.68230188bdc7-1.1_amd64.deb
dpkg -i libpam-google-authenticator_20110413.68230188bdc7-1.1_amd64.deb

Configuration

Une fois installé, il vous faudra configurer le programme pour chaque utilisateur. En l’occurrence, le compte utilisateur que vous utilisez pour vous connecter depuis l’extérieur. Pour ce faire, vous exécutez la commande :

google-authenticator

Cela va créer un fichier .google_authenticator et un QR Code va apparaître dans votre console ainsi que d’autres informations qu’il faudrait que vous enregistriez quelque part (la secret key, les codes d’urgence qui servent si vous n’avez pas votre téléphone à portée de main ou que vous l’avez perdu, etc). Le programme va aussi vous poser tout un tas de questions, je vous conseille de répondre oui à celles-ci :

Do you want me to update your "~/.google_authenticator" file (y/n) y

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y

By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) y

If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y

Ensuite, il faut téléchargez l’application Google Authenticator (sur l’AppStore ou l’Android Market) puis scanner le code QR avec votre téléphone portable. Pour ce faire, ouvrez google authenticator puis »Ajouter un compte »-> »Lire le code-barres ».

Utilisation de PAM avec openSSH

Ouvrez le fichier  /etc/pam.d/sshd et rajoutez cette ligne (avant @include common-auth) :

auth required pam_google_authenticator.so
@include common-account
@include common-auth
@include common-session
session    optional   pam_mail.so standard noenv
session    optional   pam_motd.so
@include common-password

Si vous utilisez univention, il vous faudra modifier le fichier : /etc/univention/templates/files/etc/pam.d/sshd

@%@UCRWARNING=# @%@

@!@
scope = "sshd"
accessfileDefault = "/etc/security/access-" + scope + ".conf"
accessfile = "auth/" + scope + "/accessfile"
if configRegistry.is_true("auth/" + scope + "/restrict", False):
 print 'account required pam_access.so accessfile=%s listsep=,' % configRegistry.get(accessfile, accessfileDefault)

print 'auth required pam_google_authenticator.so'
print '@include common-account'
print '@include common-auth'
print '@include common-session'
print 'session optional pam_mail.so standard noenv'
print 'session optional pam_motd.so'
print '@include common-password'
@!@

Toujours si vous êtes sous univention, n’oubliez pas de faire :

ucr commit /etc/pam.d/sshd

Vérifier que la configuration d’openssh (/etc/ssh/sshd_config) contient :

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication yes

C’est terminé! Lorsque vous vous connecterez en ssh à votre serveur, vous verrez alors apparaître « Verification code » que vous obtiendrez depuis votre portable sur l’application google authenticator :

root@ucsdc:/var/lib/owncloud/sandra/cache# ssh -l pascal vpn
Verification code:
Password:

Sachez que vous n’avez pas besoin d’avoir votre portable connecté à Internet ou au réseau GSM pour que le code fonctionne, il vous suffit juste d’avoir l’application google authenticator installé sur le portable et que le serveur et le portable soient bien synchronisés (via ntp par exemple).

Dans le cas où vous n’avez pas de portable

Vous pouvez utiliser l’extension Google Authenticator sur votre ordinateur.

Plugin google authenticator sous WordPress

Un plugin existe sur WordPress : http://wordpress.org/extend/plugins/google-authenticator/.  Dans chaque profil de vos utilisateurs WordPress. Il vous faudra activer la validation en 2 étapes. Vous scannez ensuite le QR Code comme indiqué précédemment.