Login
dossier > Informatique > [Tuto] PAM: OneTimePassword et USB authentication

[Tuto] PAM: OneTimePassword et USB authentication

OTP: pratique

OTP: Pratique

#Toutes ces actions sont à effectuer en 'root'
 
 

 
apt-get install libpam0g-dev

wget http://www.cl.cam.ac.uk/~mgk25/download/otpw-1.3.tar.gz

tar xzf otpw-1.3.tar.gz

cd otpw

make

cp pam_otpw.so /lib/security

chmod a-x /lib/security/pam_otpw.so

Il faut maintenant générer une liste de password avec l'exécutable 'otpw-gen'.

 

Voyons ses options:

 

 

One-Time Password Generator v 1.2 -- Markus Kuhn
./otpw-gen [options] | lpr

Options:

        -h <int>        number of output lines (default 60)
        -w <int>        max width of output lines (default 79)
        -s <int>        number of output pages (default 1)
        -e <int>        minimum entropy of each one-time password [bits]
                        (low security: <30, default: 48, high security: >60)
        -p0             passwords from modified base64 encoding (default)
        -p1             passwords from English 4-letter words
        -f <filename>   destination file for hashes (default: ~/.otpw)
        -d              output debugging information
 

 

Nous allons générer une liste de mots de passe de 5 mots de 4 lettres

 

./otpw-gen -e 50 -p1
Generating random seed ...

If your paper password list is stolen, the thief should not gain
access to your account with this information alone. Therefore, you
need to memorize and enter below a prefix password. You will have to
enter that each time directly before entering the one-time password
(on the same line).

When you log in, a 3-digit password number will be displayed.  It
identifies the one-time password on your list that you have to append
to the prefix password. If another login to your account is in progress
at the same time, several password numbers may be shown and all
corresponding passwords have to be appended after the prefix
password. Best generate a new password list when you have used up half
of the old one.

Enter new prefix password:

 

Le préfixe est une sécurité de plus, il faut le retenir évidemment!

 

Enter new prefix password: plop
Reenter prefix password: plop
Creating '~/.otpw'.
Generating new one-time passwords ...

OTPW list generated 2008-03-14 10:43 on farwarx

000 quid sown woke zoom much  056 rick miss begs damn sobs
001 pier chan mack thee pure  057 mats raft nina loop doug
002 ross bump raid bcci peng  058 midi labs flop tide boil
003 ugly cleo stow lent fury  059 pulp utah apex bait ssap
004 lang lard hero wabi this  060 vans year done hang aces
005 shah pair baku beef gaol  061 cats uses fend trna ours
006 wade gent pick urgh sejm  062 vein time aged duke nunn
007 foil sees vote lina cite  063 tubs club dunn cave rick
008 semi tomb jane grab fear  064 buds bend only zzap sake
009 cook yuri lacy kath smug  065 glow week some ritz form
010 owls rest dumb quay nacl  066 arcs ercp tees nest legs
011 noun gulp burt move void  067 logo rees judi bent rein
012 free avid sued mass wick  068 sell crim pain jean ants
...
052 mite pods fran days shut  108 caro opec ears lets days
053 fete vera pick toad fins  109 norm anew dump pads begs
054 marr view mess parr rung  110 wary neil lays wigs last
055 owed tome nacl inns pass  111 axle lump bean lowe much

     !!! REMEMBER: Enter the PREFIX PASSWORD first !!!

 

 Il faut imprimer cette liste!!! Elle n'est conservée nulle part!!!

 

 

Configuration de 'Pam':

 

Je vais configurer 'Pam' sur la commande 'su' (qui permet le changement d'utilisateur).

Ceci pour tester le bon fonctionnement.

 

cd /etc/pam.d
vim su
# ajout à la fin apres les @includes:
#j'ai commenté: #auth       sufficient pam_rootok.so
#la fonction 'pam_rootok' permet à l'utilisateur 'root' de changer
#d'utilisateur sans demande de mot de passe.

auth    required        pam_otpw.so
session optional        pam_otpw.so

 

 

Que ce passe t-il donc maintenant si n'importe qui tape: 'su' ?

 


10:49 maxime@farwarx ~% su 
Mot de passe :  mon-pawd-root
Password 054: plopmarr view mess parr rung
Remaining one-time passwords: 111 of 112

 

Il y a la demande du mot de passe de l'utilisateur choisis ('su' sans paramètre = 'su root') et ensuite une demande d'un mot de passe de la liste de 'otpw'.

Ici le numéro 54. Il faut donc écrire le préfixe suivis (sans espace) des 5 mots de 4 lettres avec des espaces entres eux.

 

Prefixe: "plop"
Password 54: "marr view mess parr rung"
Concaténation: "plopmarr view mess parr rung"

Un message annonce qu'il reste 111 sur 112 mots de passe.

 

Ce changement dans le fichier '/etc/pam.d/su' interdit désormais le changement d'utilisateur dans une console. La commande ne fonctionne plus que pour devenir' root'.

 

Au niveau de la sécurité, c'est un atout, car il faut un mot de passe, puis un préfixe, puis une liste de mot aléatoire (imprimé sur le mur et pas dans un fichier sur le pc).

 

 

 

On peut considérer que s'il y a un accès physique à un PC, ce PC n'a plus de sécurité.

 

 

 

 Nous allons maintenant mettre en place 'otpw' sur le serveur SSH.

 

Pourquoi? Parce qu'au login, ça ne servirai qu'à sécurisé le login (hors un serveur Linux ne doit pas avoir de console loguée! et cf la phrase en gras/italique plus haut!).

 

SSH permet de se connecter à distance à un shell de manière "sécurisé" (du moins les connections sont cryptées) donc 'otpw' permettrai de renforcer la sécurité de cette connection (si il n'y a pas de certificats implentés de façon sécurisé, laissez tomber!.... mais là je parle pour un cas d'entreprise).

 

Cas de openssh-server:

 

 

vim /etc/pam.d/ssh
# on rajoute à la fin:
#OTPW Auth Method
auth required pam_otpw.so
session optional pam_otpw.so

 

 

 Puis on configure le serveur SSH pour qu'il autorise un mot de passe challenge!

 

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

 

 Pour information, je vous donne quelques variables que j'ai dans mon fichier (qui pourraient poser problèmes):

UsePAM yes
UsePrivilegeSeparation yes

Voilà, votre serveur SSH est accéssible à l'utiliateur 'root' avec une double sécurité:
password / otpw


Pour pouvoir se connecter avec des utilisateurs autres que 'root' (l'utilitée de 'otpw' est pour 'root' sur les serveurs), il faudra générer une autre liste de password par utilisateur. (je le déconseille)



Vous en savez plus sur One Time Password! Il faudra générer une nouvelle liste quand il ne restera plus beaucoup de mots de passe.

Si vous êtes un particulier, ça ne vous servira pas.... (à part si vous êtes parano ou si vous avez un 'home serveur').

 

Mais ne vous inquiétez pas, quelque chose d'interessant ce trouve après cette page!


Réalisation

Code & Design : Sébastien Cardona

Page générée en : 0.017471s