Un bastion SSH sert de point d'entrée sécurisé pour accéder à vos serveurs. En y ajoutant l'authentification à deux facteurs (2FA) via Google Authenticator, vous renforcez significativement la sécurité de vos connexions SSH. Assurez-vous d'abord que vos accès SSH sont sécurisés avec des clés.
Prérequis
- Serveur Linux (Debian, Ubuntu, RHEL/CentOS) dédié en bastion
- Client SSH avec clavier pour OTP
- Un utilisateur non-root pour l’administration
1. Installation des paquets
sudo apt update
sudo apt install libpam-google-authenticator
2. Configuration d’OTP pour l’utilisateur bastion
Connectez-vous en tant que l’utilisateur :
google-authenticator
Répondez aux questions pour générer le secret, le QR code et configurez le délai de validité des OTP.
3. Activer PAM pour SSH
Éditez /etc/pam.d/sshd et ajoutez en haut :
auth required pam_google_authenticator.so nullok
Note de sécurité: Le paramètre nullok permet l'authentification même si l'utilisateur n'a pas configuré son OTP. Cela facilite le déploiement, mais doit être supprimé une fois tous les utilisateurs configurés pour éviter les authentifications sans 2FA.
4. Configurer SSHD
Ouvrez /etc/ssh/sshd_config et réglez :
KbdInteractiveAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
Important: Sur OpenSSH 9.x+ (Debian 12, Ubuntu 22.04+, RHEL 9+), utilisez KbdInteractiveAuthentication yes plutôt que l'ancienne directive ChallengeResponseAuthentication qui est obsolète.
Assurez-vous que UsePAM yes est activé.
Rechargez le service SSH :
sudo systemctl reload sshd
5. Tester le bastion
Lors de la connexion :
ssh user@bastion.example.com
Vous devrez fournir votre clé SSH, puis saisir l’OTP généré par Google Authenticator.
6. Bonnes pratiques
- Restreindre l'accès SSH par IP sur le bastion.
- Faire une sauvegarde des secrets OTP sous forme chiffrée.
- Désactiver l'accès direct aux serveurs backend, n'autoriser que le bastion.
- Utiliser des certificats OpenSSH pour une gestion centralisée.
- Considérer Tailscale comme alternative Zero Trust.
Conclusion
En combinant un bastion SSH et Google Authenticator, vous bénéficiez d'un accès à votre infrastructure à la fois pratique et hautement sécurisé, réduisant drastiquement le risque d'accès non autorisé.


