« Authentification SSH multi-facteur avec YubiKey et clés publique SSH » : différence entre les versions

Aller à la navigation Aller à la recherche
m
 
(23 versions intermédiaires par le même utilisateur non affichées)
Ligne 20 : Ligne 20 :
Attention, si vous souhaitez utiliser la yubikey pour vous loguer en root, pensez à ne PAS désactiver le login root par password dans <code>/etc/ssh/sshd_config</code> (<code>PermitRootLogin yes</code>)
Attention, si vous souhaitez utiliser la yubikey pour vous loguer en root, pensez à ne PAS désactiver le login root par password dans <code>/etc/ssh/sshd_config</code> (<code>PermitRootLogin yes</code>)


=Authentification par clé privé ET password ou OTP=
=Authentification par clé privé+password OU clé privé+OTP (méthode 1)=


Cette configuration ne sera possible qu'a partir de OpenSSH 6.2 (pour Debian, à partir de Debian/Jessie et Debian/Wheezy-backports).
Cette configuration ne sera possible qu'a partir de OpenSSH 6.2 (pour Debian, à partir de Debian/Jessie et Debian/Wheezy-backports).
Ligne 47 : Ligne 47 :
AuthenticationMethods publickey,password
AuthenticationMethods publickey,password
</pre>
</pre>
Et relancez le serveur OpenSSH :
<pre>/etc/init.d/ssh restart</pre>


Les utilisateurs seront désormais obligé de s'authentifier par une '''clé privée ET un mot de passe'''.  
Les utilisateurs seront désormais obligé de s'authentifier par une '''clé privée ET un mot de passe'''.  
Ce mot de passe dépend de votre configuration PAM. Si vous avec juste suivi cette documentation, les utilisateurs pourront se loguer soit avec leur (clé privé + mot de passe unix), soit avec leur (clé privé + OTP yubikey).
Ce mot de passe dépend de votre configuration PAM. Si vous avec juste suivi cette documentation, les utilisateurs pourront se loguer soit avec leur (clé privé + mot de passe unix), soit avec leur (clé privé + OTP yubikey).
Vous pouvez désactiver le login par mot de passe pour un utilisateur spécifique en désactivant son mot-de-passe unix (passwd -d <user>).
Vous pouvez désactiver le login par mot de passe pour un utilisateur spécifique en désactivant son mot-de-passe unix (<code>passwd -dl <user></code>).


Notez également que vous pouvez spécifier la directive <code>AuthenticationMethods</code> dans une directive <code>Match</code> pour modifier les méthodes d'authentification par utilisateur ou même par groupe.
Notez également que vous pouvez spécifier la directive <code>AuthenticationMethods</code> dans une directive <code>Match</code> pour modifier les méthodes d'authentification par utilisateur ou même par groupe.
=Authentification par clé privé+password OU clé privé+OTP (méthode 2)=
Cette configuration ne sera possible qu'a partir de OpenSSH 6.2 (pour Debian, à partir de Debian/Jessie et Debian/Wheezy-backports).
Editez le fichier <code>/etc/pam.d/sshd</code> et ajoutez la ligne suivante avant <code>@include common-auth</code> (remplacez XXXX par le <code>Client ID</code> que vous venez de générer chez yubico ; de même pour YYYYYYYY avec la <code>Secret key</code>) :
<pre>
auth sufficient pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings
</pre>
Le début de votre fichier <code>/etc/pam.d/sshd</code> devrait ressembler à ceci :
<pre>
# PAM configuration for the Secure Shell service
# Yubikey auth
auth sufficient pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings
# Standard Un*x authentication.
@include common-auth
</pre>
Pour des raisons de sécurité, empêchez other de lire la clé yubico :
<pre>chmod o-r /etc/pam.d/sshd</pre>
Ajoutez la ligne suivante dans <code>/etc/ssh/sshd_config</code> :
<pre>
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
</pre>
Et relancez le serveur OpenSSH :
<pre>/etc/init.d/ssh restart</pre>
Les utilisateurs seront désormais obligé de s'authentifier par une '''clé privée ET un mot de passe'''.
Ce mot de passe dépend de votre configuration PAM. Si vous avec juste suivi cette documentation, les utilisateurs pourront se loguer soit avec leur (clé privé + mot de passe unix), soit avec leur (clé privé + OTP yubikey).
Vous pouvez désactiver le login par mot de passe pour un utilisateur spécifique en désactivant son mot-de-passe unix (<code>passwd -dl <user></code>).
Voici comment cela va se présenter lors d'une tentative de connexion :
<pre>
pfoo@laptop:~$ ssh pfoo@domain.tld
Enter passphrase for key '/home/pfoo/.ssh/id_ed25519':
YubiKey for `pfoo':
</pre>
Pour vous connecter avec le mot-de-passe, tapez "enter" au prompt <code>YubiKey</code> pour le passer, puis vous sera présenté un champ <code>Password</code>


=Authentification par clé privé + OTP (pas de password)=
=Authentification par clé privé + OTP (pas de password)=
Ligne 64 : Ligne 112 :


Commentez ensuite la ligne <code>@include common-auth</code>  
Commentez ensuite la ligne <code>@include common-auth</code>  
Votre configuration devrait ressembler à ceci ;
Le début de votre fichier <code>/etc/pam.d/sshd</code> devrait ressembler à ceci :
<pre>
<pre>
# PAM configuration for the Secure Shell service
# Yubikey auth
auth required pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings
auth required pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings
# Standard Un*x authentication.
#@include common-auth
#@include common-auth
</pre>
</pre>
Ligne 76 : Ligne 129 :
<pre>
<pre>
AuthenticationMethods publickey,password
AuthenticationMethods publickey,password
</pre>
Et relancez le serveur OpenSSH :
<pre>
/etc/init.d/ssh restart
</pre>
</pre>


Les utilisateurs seront désormais obligé de s'authentifier par une clé privée ET un OTP yubikey.
Les utilisateurs seront désormais obligé de s'authentifier par une clé privée ET un OTP yubikey.


Notez que vous pouvez spécifier la directive <code>AuthenticationMethods</code> dans une directive <code>Match</code>
Notez également que vous pouvez spécifier la directive <code>AuthenticationMethods</code> dans une directive <code>Match</code> pour modifier les méthodes d'authentification par utilisateur ou même par groupe.


=Authentification par password + OTP=
=Authentification par password + OTP=


Éditez le fichier <code>/etc/pam.d/sshd</code> et ajoutez la ligne suivante avant <code>@include common-account</code> (remplacez XXXX par le <code>Client ID</code> que vous venez de générer chez yubico ; de même pour YYYYYYYY avec la <code>Secret key</code>) :
Editez le fichier <code>/etc/pam.d/sshd</code> et ajoutez la ligne suivante avant <code>@include common-auth</code> (remplacez XXXX par le <code>Client ID</code> que vous venez de générer chez yubico ; de même pour YYYYYYYY avec la <code>Secret key</code>) :
<pre>
<pre>
auth     requisite pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings debug
auth required pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings
auth [success=1 default=ignore]    pam_unix.so use_first_pass nullok_secure
auth requisite          pam_deny.so
auth required            pam_permit.so
</pre>
</pre>


Dans <code>/etc/pam.d/sshd</code> commentez la ligne <code>@include common-auth</code>
Commentez ensuite la ligne <code>@include common-auth</code> et ajoutez 3 lignes suivantes. Votre configuration devrait ressembler à ça :
<pre>
# PAM configuration for the Secure Shell service
 
# Yubikey auth
auth required pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings
 
# Standard Un*x authentication.
#@include common-auth
 
# Standard Un*x authentication+yubikey OTP
auth    [success=1 default=ignore]      pam_unix.so try_first_pass nullok_secure
auth    requisite                      pam_deny.so
auth    required                        pam_permit.so
</pre>


Empêchez other de lire la clé yubico :
Empêchez other de lire la clé yubico :
<pre>chmod o-r /etc/pam.d/sshd</pre>
<pre>chmod o-r /etc/pam.d/sshd</pre>


Pour vous loguer, il faudra entrer votre mot-de-passe unix suivi de l'OTP yubikey.
Vérifier aussi que l'auth par password est autorisé par ssh (<code>PasswordAuthentication yes</code> dans <code>/etc/ssh/sshd_config</code>)
 
Pour vous connecter, tapez le mot-de-passe ('''sans valider''') puis entrez l'OTP yubikey.


=Authentification par yubikey seule=
=Authentification par yubikey seule=
Ligne 108 : Ligne 179 :
Commentez ensuite la ligne <code>@include common-auth</code> et ajoutez la ligne <code>auth    [success=1 default=ignore]      pam_unix.so try_first_pass nullok_secure</code> a la place. Votre configuration devrait ressembler à ça :
Commentez ensuite la ligne <code>@include common-auth</code> et ajoutez la ligne <code>auth    [success=1 default=ignore]      pam_unix.so try_first_pass nullok_secure</code> a la place. Votre configuration devrait ressembler à ça :
<pre>
<pre>
# PAM configuration for the Secure Shell service
# Yubikey auth
auth required pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings
auth required pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings
# Standard Un*x authentication.
#@include common-auth
#@include common-auth
# Yubikey auth
auth    [success=1 default=ignore]      pam_unix.so try_first_pass nullok_secure
auth    [success=1 default=ignore]      pam_unix.so try_first_pass nullok_secure
</pre>
</pre>
Ligne 116 : Ligne 194 :
<pre>chmod o-r /etc/pam.d/sshd</pre>
<pre>chmod o-r /etc/pam.d/sshd</pre>


Vérifier aussi que l'auth par password est autorisé par ssh (<code>PasswordAuthentication yes</code> ou commenté dans /etc/ssh/sshd_config)
Vérifier aussi que l'auth par password est autorisé par ssh (<code>PasswordAuthentication yes</code> dans <code>/etc/ssh/sshd_config</code>)
4 231

modifications

Menu de navigation