Dans ce guide, nous allons apprendre ce qu'est l'authentification multifacteur et son importance et enfin comment configurer l'authentification multifacteur pour SSH sous Linux à l'aide de l'application Google Authenticator.
Présentation
La sécurité est une affaire sérieuse. Le nombre de compromis augmente considérablement de jour en jour et on estime que d'ici 2025, la cybercriminalité coûtera aux entreprises 10 500 milliards de dollars.
Il est important qu'une couche de sécurité solide soit mise en œuvre sur toutes les couches de la pile technologique. Dans cet article, nous allons voir une telle implémentation de sécurité pour ssh utilisant l'authentification multifacteur.
SSH, pour Secure Shell, est un protocole réseau qui permet aux utilisateurs de se connecter aux machines distantes (serveurs) et d'accéder aux ressources.
Le protocole ssh implémente deux types de sécurité à savoir l'authentification par mot de passe , et Authentification basée sur une clé .
L'authentification par clé (publique -> privée) est considérée comme plus sûre que l'authentification par mot de passe et la plupart des instructions de renforcement SSH recommandent de désactiver l'authentification par mot de passe et d'activer uniquement l'authentification par clé.
Quel que soit le mécanisme d'authentification que vous choisissez, vous pouvez renforcer la sécurité de ssh en mettant en œuvre une configuration d'authentification multifacteur.
Qu'est-ce que l'authentification multifacteur ?
Authentification multi-facteurs (sous peu MFA ) est un processus d'authentification sécurisé qui nécessite plusieurs techniques d'authentification choisies parmi des catégories indépendantes d'informations d'identification.
L'authentification multifacteur est aussi parfois appelée "authentification à deux facteurs (2FA)" .
Il y a deux facteurs impliqués dans la validation de qui vous dites que vous êtes. Le premier facteur sera le mot de passe créé lors de la création de votre compte utilisateur.
Le deuxième facteur sera toute application qui génère OTP ou tout protocole qui vous envoie des messages texte ou passe un appel sur votre appareil.
Selon la façon dont l'application est implémentée, la façon dont vous vous authentifiez varie. Certains outils courants que vous utilisez pour MFA sont :
- Application installée sur l'appareil mobile qui génère des jetons.
- Un appareil externe comme Yubikey.
- Empreinte digitale.
- Reconnaissance faciale.
- Mot de passe OTP basé sur un message texte ou un appel.
Pour activer l'authentification multifacteur pour ssh, nous utiliserons "Google Authenticator" application qui utilise le protocole OATH-TOTP. Il existe d'autres outils alternatifs comme Twilio Authy ou FreeOTP que vous pouvez installer et essayer.
Nous allons commencer par installer l'application Google Authenticator sur le serveur et l'appareil mobile et essayer d'activer MFA et de valider.
Installer Google Authenticator
Installez d'abord l'application Google Authenticator sur vos appareils Android ou IOS via le playstore /Itunes .
Maintenant, installez l'application Google Authenticator sur votre système Linux.
En fonction de votre distribution, exécutez les commandes d'installation suivantes.
Dans Ubuntu et ses distributions dérivées exécutent la commande suivante.
$ sudo apt install libpam-google-authenticator
Dans RHEL les distributions basées exécutent la commande suivante.
$ sudo dnf install google-authenticator -y
Pour Arche distribution basée exécutez la commande suivante.
$ sudo pacman -S libpam-google-authenticator
Générer un jeton initial pour un utilisateur
Comme première étape de la configuration de MFA, vous devez exécuter la commande suivante à partir de votre terminal. Cela prendra soin de la configuration initiale en générant la clé TOTP. Cette clé est destinée à l'utilisateur qui exécute la commande et ne s'applique pas à tous les utilisateurs du système.
$ google-authenticator
Il y a une séquence d'étapes où vous serez invité avec le (y /n ).
ÉTAPE 1 - Il vous demandera de choisir des jetons d'authentification basés sur le temps. Les jetons d'authentification basés sur le temps généreront un nouveau code toutes les 30 secondes. Appuyez sur "y" pour continuer.
ÉTAPE 2 - Un jeton secret sera généré avec un code QR. Ouvrez l'application mobile Google Authenticator et scannez le code QR ou saisissez manuellement la clé secrète pour enregistrer l'appareil. Une fois cela fait, l'application commencera à générer des jetons toutes les 30 secondes.
ÉTAPE 3 - Dans cette étape, il vous sera demandé de mettre à jour le .google_authenticator
fichier sous votre répertoire personnel. Toutes les clés secrètes, le code de vérification, les codes à gratter d'urgence sont enregistrés dans ce fichier. Appuyez sur "y" pour continuer.
ÉTAPE 4 - Choisir "y" dans cette étape fera expirer le jeton immédiatement une fois que vous l'aurez utilisé pour vous authentifier. Dans ce cas, même si certains pirates obtiennent votre jeton, il sera expiré.
ÉTAPE 5 - Cette étape décide du nombre de jetons autorisés et du délai. Lorsque je choisis "n" , il autorisera 3 jetons en 90 secondes la fenêtre. Si j'appuie sur "y" , il autorisera 17 jetons en 240 secondes fenêtre horaire.
ÉTAPE 6 - Cette étape vous demandera d'activer la limitation de débit. La limitation du débit permet à un attaquant de tenter seulement 3 tentatives de connexion toutes les 30 secondes . Si les jetons sont erronés, ils doivent attendre N il est temps de réessayer.
Nous avons terminé la première étape. Ouvrez le fichier ~/.google_authenticator
et vous pouvez trouver tous les paramètres et codes secrets que nous avons créés à travers toutes ces étapes.
$ cat ~/.google_authenticator
Vous pouvez également transmettre des arguments à la commande google-authenticator qui créera les clés et autres paramètres sans passer par cette séquence d'étapes.
$ google-authenticator -q -t -d -f -r 3 -R 30 -w 3
Reportez-vous à la section d'aide de l'authentificateur Google pour savoir ce que ces arguments feront.
$ google-authenticator –-help
Configurer SSH pour l'authentification multifacteur
Nous devons apporter quelques modifications à la configuration d'openSSH afin de pouvoir commencer à utiliser MFA.
Remarque :
- En tant que bonne pratique, sauvegardez toujours vos fichiers de configuration avant d'apporter des modifications. Si quelque chose ne va pas, les modifications peuvent être annulées.
- Étant donné que vous apportez des modifications aux fichiers de configuration SSH, assurez-vous qu'une session est ouverte séparément, afin de ne pas être verrouillé par accident.
Exécutez les commandes suivantes pour sauvegarder les fichiers de configuration SSH.
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
$ sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup
Tout d'abord, activez SSH pour utiliser MFA en définissant ChallengeResponseAuthentication
option sur "oui" .
Ensuite, modifiez le /etc/pam.d/sshd
fichier :
$ sudo vi /etc/pam.d/sshd
Et ajoutez les lignes suivantes au bas du fichier.
auth required pam_google_authenticator.so nullok auth required pam_permit.so
Si vous souhaitez rendre MFA obligatoire pour tous les utilisateurs, supprimez le mot "nullok" .
Redémarrez le service ssh pour appliquer les modifications.
$ sudo systemctl restart sshd
Tester l'authentification à deux facteurs
Il est temps de tester si les changements que nous avons apportés sont efficaces.
Connectez-vous au serveur via SSH et il vous sera demandé un mot de passe comme premier facteur suivi d'un code de vérification comme authentification de deuxième facteur, comme indiqué dans l'image ci-dessous.
$ ssh [email protected]/IPaddress
Une fois que vous avez entré le mot de passe SSH et le code de vérification, vous pourrez vous connecter.
Vous souvenez-vous que nous n'avons pas activé la MFA comme obligatoire pour tous les utilisateurs ? Testons-le et voyons si je peux me connecter avec un autre utilisateur où je n'ai pas généré et configuré de jetons.
J'ai un utilisateur test et je peux me connecter avec succès sans demander de code de vérification.
Voir? Je peux également me connecter sans le code de vérification.
Authentification multifacteur pour l'authentification basée sur une clé
Si vous avez configuré une authentification par clé, vous ne serez pas promu pour le mot de passe ou les codes de vérification. Pourquoi ?
Parce que, par défaut, ssh utilise d'abord l'authentification par clé publique et s'il existe une clé trouvée, il s'authentifie à l'aide de celle-ci. Si la clé n'est pas trouvée, elle utilisera l'authentification par mot de passe.
Vous pouvez utiliser verbeux mode pour vérifier cela.
$ ssh -v [email protected]/IPaddress ## With verbose
Ajoutez la ligne suivante en bas /etc/ssh/sshd_config
fichier :
AuthenticationMethods publickey,password publickey,keyboard-interactive
Ouvrez ensuite /etc/pam.d/sshd
et commentez la ligne suivante.
Si vous ne commentez pas "@include common-auth"
, cela permettra à plus de deux facteurs de s'authentifier. Il s'authentifiera d'abord à l'aide de clés suivies d'un mot de passe et de jetons. Tout ce dont j'ai besoin est une clé et un jeton pour mon authentification, je le désactive donc.
Redémarrez le sshd
service et testez si les modifications fonctionnent correctement.
$ sudo systemctl restart sshd
Maintenant, si j'essaie de me connecter, il utilise la clé publique comme premier facteur et le code de vérification comme deuxième facteur pour s'authentifier.
Étapes de récupération
Il peut y avoir des scénarios où vous risquez de perdre ou de changer votre appareil mobile. Dans ce cas, vous devez réinstaller l'application google-authenticator et enregistrer la clé secrète pour commencer à générer des jetons.
Si vous êtes bloqué sur le système, vous devez contacter votre administrateur système pour vous fournir de nouvelles clés secrètes pour l'enregistrer et l'utiliser. Mais il existe une approche alternative où vous pouvez vous connecter et générer des clés par vous-même.
Vous souvenez-vous des codes générés lors de l'étape initiale ? Vous pouvez utiliser le code à gratter d'urgence comme jeton pour se connecter. Chaque code à gratter ne peut être utilisé qu'une seule fois. Enregistrez-le dans un endroit sûr afin qu'il puisse être utilisé en cas de besoin.
Les codes sont enregistrés dans ~/.google_authenticator
fichier.
$ cat ~/.google_authenticator
Vous pouvez maintenant régénérer à nouveau vos propres clés en exécutant la commande suivante.
$ google-authenticator
Conclusion
Dans cet article, je vous ai montré comment installer l'authentificateur Google et activer l'authentification multifacteur pour SSH avec différentes configurations.
En tant qu'administrateur, vous pouvez également écrire des scripts bash pour automatiser le processus de génération des clés secrètes et le partager avec l'utilisateur. Vous devez également renforcer le ssh avant de configurer MFA, afin que votre système soit plus sécurisé. Nous prévoyons de les couvrir dans des articles séparés. Restez à l'écoute !
Lire connexe :
- Comment configurer l'authentification basée sur une clé SSH sous Linux
- Savoir si un utilisateur utilise une authentification SSH basée sur un mot de passe ou une clé
- Comment autoriser ou refuser l'accès SSH à un utilisateur ou à un groupe particulier sous Linux
- Désactiver l'authentification par mot de passe SSH pour un utilisateur ou un groupe spécifique