4 234
modifications
Aucun résumé des modifications |
m (Pfoo a déplacé la page Multi-factor SSH authentication using YubiKey and SSH public keys vers Authentification SSH multi-facteur avec YubiKey et clés publique SSH) |
||
(51 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category:serveur]] | |||
[[Category:debian]] | |||
[[Category:security]] | |||
=Configuration globale= | |||
Installez le paquet libpam-yubico qui ajoute le support des yubikey dans PAM : | |||
<pre>aptitude install libpam-yubico</pre> | <pre>aptitude install libpam-yubico</pre> | ||
Ligne 14 : | Ligne 16 : | ||
Générez un identifiant client et une clé secrète sur https://upgrade.yubico.com/getapikey/ | 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>) | |||
Editez le fichier <code>/etc/pam.d/sshd</code> et ajoutez la ligne suivante avant <code>@include common- | =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> | <pre> | ||
# PAM configuration for the Secure Shell service | |||
# Yubikey auth | |||
auth sufficient pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings | auth sufficient pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings | ||
# Standard Un*x authentication. | |||
@include common-auth | |||
</pre> | </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> : | Ajoutez la ligne suivante dans <code>/etc/ssh/sshd_config</code> : | ||
Ligne 25 : | Ligne 48 : | ||
</pre> | </pre> | ||
Et relancez le serveur OpenSSH : | |||
<pre>/etc/init.d/ssh restart</pre> | |||
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>). | |||
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)= | |||
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 required pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings | |||
</pre> | |||
Commentez ensuite la ligne <code>@include common-auth</code> | |||
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 required pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings | |||
# Standard Un*x authentication. | |||
#@include common-auth | |||
</pre> | |||
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 OTP yubikey. | |||
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= | ||
<pre> | 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 required pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings | |||
</pre> | |||
Commentez ensuite la ligne <code>@include common-auth</code> et ajoutez 3 lignes suivantes. 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 | |||
# 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> | </pre> | ||
Empêchez other de lire la clé yubico : | |||
<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> 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= | |||
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 required pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings | |||
</pre> | |||
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> | ||
auth | # PAM configuration for the Secure Shell service | ||
auth [success=1 default=ignore] | |||
# Yubikey auth | |||
auth required pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings | |||
# Standard Un*x authentication. | |||
#@include common-auth | |||
# Yubikey auth | |||
auth [success=1 default=ignore] pam_unix.so try_first_pass nullok_secure | |||
</pre> | </pre> | ||
Empêchez other de lire la clé yubico : | |||
<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> dans <code>/etc/ssh/sshd_config</code>) |