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

Aller à la navigation Aller à la recherche
m
Aucun résumé des modifications
 
(29 versions intermédiaires par le même utilisateur non affichées)
Ligne 2 : Ligne 2 :
[[Category:debian]]
[[Category:debian]]
[[Category:security]]
[[Category:security]]
Dans tous les cas : Vérifier que l'authentification par mot-de-passe est autorisé au niveau de la configuration du serveur OpenSSH (<code>PasswordAuthentication yes</code> dans <code>/etc/ssh/sshd_config</code>)7
<br><br><br>


=Configuration globale=
=Configuration globale=
Ligne 18 : Ligne 15 :
</pre>
</pre>


Générez un identifiant client et une clé secrète sur https://upgrade.yubico.com/getapikey/
<br><br>
Dans tous les cas : Vérifier que l'authentification par mot-de-passe est autorisé au niveau de la configuration du serveur OpenSSH (<code>PasswordAuthentication yes</code> dans <code>/etc/ssh/sshd_config</code>)7
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>)


Générez un identifiant client et une clé secrète sur https://upgrade.yubico.com/getapikey/
=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).
 
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>
AuthenticationMethods publickey,password
</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>).
 
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|OTP=
=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).
Cette configuration ne sera possible qu'a partir de OpenSSH 6.2 (pour Debian, à partir de Debian/Jessie et Debian/Wheezy-backports).
Ligne 31 : Ligne 66 :
</pre>
</pre>


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


Ajoutez la ligne suivante dans <code>/etc/ssh/sshd_config</code> :
Ajoutez la ligne suivante dans <code>/etc/ssh/sshd_config</code> :
<pre>
<pre>
AuthenticationMethods publickey,password
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
</pre>
</pre>


Les utilisateurs seront désormais obligé de s'authentifier par une clé privée ET un mot de passe.
Et relancez le serveur OpenSSH :
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).
<pre>/etc/init.d/ssh restart</pre>
Vous pouvez désactiver le login par mot de passe simplement pour un utilisateur en désactivant son mot-de-passe unix (passwd -d <user>).


Notez que vous pouvez spécifier la directive <code>AuthenticationMethods</code> dans une directive <code>Match</code>
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 55 : 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 67 : 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=90736 key="AgIrWevHerogikhoapHaiWeykWy" 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 99 : 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 107 : 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 234

modifications

Menu de navigation