Authentification SSH multi-facteur avec YubiKey et clés publique SSH
Authentification par clé privé + password|OTP
aptitude install yubico-pam
Créez le fichier /etc/yubikey_mappings
qui va contenir l'association entre chaque utilisateur et le token ID yubikey (c'est les 12 premiers caractères issus d'un OTP d'une yubikey). Vous pouvez en spécifier plusieurs en les séparant par :
cat > /etc/yubikey_mappings <<EOF pfoo:cccccatsdogs:ccccdogscats EOF
Générez un identifiant client et une clé secrète sur https://upgrade.yubico.com/getapikey/
Editez le fichier /etc/pam.d/sshd
et ajoutez la ligne suivante avant @include common-account
(remplacez XXXX par le Client ID
que vous venez de générer chez yubico ; de même pour YYYYYYYY avec la Secret key
) :
auth sufficient pam_yubico.so id=XXXX key="YYYYYYYY" authfile=/etc/yubikey_mappings
Ajoutez la ligne suivante dans /etc/ssh/sshd_config
:
AuthenticationMethods publickey,password
Les utilisateurs seront désormais obliger 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 simplement pour un utilisateur en désactivant son mot-de-passe unix (passwd -d <user>).
Authentification par password + OTP
aptitude install yubico-pam
Créez le fichier /etc/yubikey_mappings
qui va contenir l'association entre chaque utilisateur et le token ID yubikey (c'est les 12 premiers caractères issus d'un OTP d'une yubikey). Vous pouvez en spécifier plusieurs en les séparant par :
cat > /etc/yubikey_mappings <<EOF pfoo:cccccatsdogs:ccccdogscats EOF
Générez un identifiant client et une clé secrète sur https://upgrade.yubico.com/getapikey/
Editez le fichier /etc/pam.d/sshd
et ajoutez la ligne suivante avant @include common-account
(remplacez XXXX par le Client ID
que vous venez de générer chez yubico ; de même pour YYYYYYYY avec la Secret key
) :
auth requisite pam_yubico.so id=90736 key="AgIrWevHerogikhoapHaiWeykWy" authfile=/etc/yubikey_mappings debug auth [success=1 default=ignore] pam_unix.so use_first_pass nullok_secure auth requisite pam_deny.so auth required pam_permit.so
Dans /etc/pam.d/sshd
commentez la ligne @include common-auth