Le principe

Le principe d'un mot de passe jetable est très simple :

- L'utilisateur tente une connexion sur le serveur à partir de sa station de travail.
- Le serveur lui répond par une question ou une suite de caractères que l'on appelle le challenge.
- L'utilisateur utilise alors un client OTP dans lequel il va entrer le challenge donné par le serveur. Dans la plupart des cas ce sera un petit soft en java installé sur un téléphone portable. En plus du challenge, l’utilisateur devra donner une passphrase que lui seul connait et qui a déjà été entré sur le serveur une bonne fois pour toutes.
- Une fois que le client OTP a calculé la réponse au challenge, il l'a rentre sur le serveur.
- Le serveur vérifie la réponse et donne la connexion. Ou pas...

Installation

On commence par installer le serveur Opie :

serveur:~# aptitude install opie-server

Ensuite, il faut initialiser le mot de passe partagé avec la commande opiepasswd :

serveur:~# opiepasswd -cf

Adding root:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase: **********
Again new secret pass phrase: **********

ID root OTP key is 499 vp3782
SEA KNOB TOTO HACK BIERE WINK

L'option -cf demande de rentrer le mot de passe directement au clavier au lieu d'utiliser une calculatrice Opie. Il ne faut utiliser cette option qu'a partir d'un terminal sécurisé.

Note : pour initialiser la mot de passe de l'utilisateur "toto", il faudra utiliser la commande :

serveur:~# opiepasswd -cf toto

Maintenant que la base est installée, on modifie la configuration de pamd pour que Opie soit pris en charge :

Editer le fichier /etc/pam.d/ et rajouter les lignes suivantes à la fin du fichier :

auth sufficient pam_opie.so
auth required pam_deny.so

Toujours dans le même fichier, commenter la ligne suivante pour que l'authentification par mot de passe simple soit désactivée :

#@include common-auth

Note: sur mon serveur, j'avais déjà désactivé l'authentification par mot de passe en mettant le paramètre PasswordAuthentication à no dans le fichier /etc/ssh/sshd_config. Cependant aprés avoir installé Opie je me suis rendu compte que les mots de passe normaux étaient de nouveau acceptés. Il est donc nécessaire de commenter la ligne @include common-auth.

Si on ne veut plus du tout utiliser les mots de passes normaux et ce quel que soit le service, il faut commenter toutes les lignes du fichier /etc/pam.d/common-auth.

Il faut ensuite éditer le fichier /etc/ssh/sshd_config et mettre la paramètre ChallengeResponseAuthentication à yes :

serveur:~# vi /etc/ssh/sshd_config

ChallengeResponseAuthentication yes

Redémarrer ssh

serveur:~# /etc/init.d/ssh restart

Restarting OpenBSD Secure Shell server: sshd.

Test de la connexion

Pour pouvoir se connecter, il faut utiliser une calculatrice Opie qui va pouvoir résoudre les challenges proposés par le serveur. En voici une petite liste :

Client Windows :
ftp://ftp.cs.ait.ac.th/pub/security/opie/WinKey.exe

Clients mac :
http://www.orange-carb.org/SkeyCalc/
http://blee.org/Ski/

Client java (pour tél portable par exemple) :
http://fatsquirrel.org/software/vejotp
/

Client web :
http://math.berkeley.edu/~vojta/opiekey.html
http://www.cs.umd.edu/~harry/jotp/

Si on ne possède pas de calculatrice Opie, il est toujours possible calculer une liste de réponses que l'on pourra utiliser plus tard. Par exemple pour calculer les 10 prochaines réponses à partir du challenge actuel, utiliser la commande :

serveur:~# opiekey -n 10 496 vp3782

Il faudra alors imprimer les réponses et les conserver précieusement à l'abris des regards indiscrets...

Tout est maintenant pret pour tester OTP sur le serveur distant. Bien sûr on ne peux pas faire le test en se connectant depuis une machine déjà configurée avec une paire de clé...

Macbook:~# ssh serveur.net

otp-md5 496 vp3782 ext, Response: **** **** **** **** ****

Dans la réponse du serveur, 496 est le n° de séquence à entrer dans la calculatrice Opie. On remarquera au fil des connexions que les n° de séquences décroissent.

Si tout est correct, le serveur autorise la connexion...