Un mot de passe seul ne protège plus rien. Phishing, fuites de bases de données, réutilisation de passwords, brute force sur les formulaires d'admin : il suffit d'un fuite pour perdre un site. La 2FA (authentification à deux facteurs) ajoute un code temporaire généré par une app sur votre téléphone. Sans ce code, le password volé ne sert à rien. Cette doc montre comment l'activer sur tous les accès qui touchent à vos sites : Plesk, SSH, WordPress, Nextcloud, Mailcow, espace client Datacampus.
Pourquoi la 2FA, maintenant
- Phishing : un faux mail « votre quota Plesk est plein » avec un formulaire cloné, et le password part. Sans 2FA, l'attaquant entre directement.
- Fuites de bases de données : un autre service que vous utilisez se fait pirater, le password est dans un dump public. Si vous le réutilisez quelque part, c'est fini.
- Brute force : les bots testent en continu
admin,administrator,root,wp-admin. Fail2ban aide, mais la 2FA coupe court. - Malware navigateur : un keylogger ou une extension compromise capture le password. La 2FA rend ce vol inutile passé 30 secondes.
TOTP, SMS, clé hardware : lequel choisir
- TOTP (app authenticator) : code à 6 chiffres régénéré toutes les 30 secondes. Gratuit, hors-ligne, universel. C'est la recommandation par défaut.
- SMS : à éviter. SIM swapping, interception via SS7, dépendance à l'opérateur. À n'utiliser qu'en dernier recours quand rien d'autre n'est disponible.
- Clé hardware (YubiKey, SoloKey, Nitrokey) : le plus résistant au phishing (WebAuthn/FIDO2), mais demande un périphérique physique et le support côté appli. Idéal pour les comptes les plus critiques (admin Plesk serveur, GitLab, registrar DNS).
Apps TOTP recommandées (open source)
- Aegis Authenticator — Android, open source, export chiffré des secrets. Référence.
- Raivo OTP — iOS, open source, sync iCloud chiffrée en option.
- Bitwarden ou 1Password — si vous avez déjà un gestionnaire de mots de passe, il peut stocker les secrets TOTP à côté du password. Attention : tout dans le même coffre signifie qu'une compromission du coffre donne tout. Acceptable si le coffre a lui-même une 2FA séparée.
À éviter : Google Authenticator (pas d'export des secrets historiquement, lock-in), Authy (fermé, dépendance cloud, a arrêté la version desktop sans prévenir).
1. Plesk
Côté administrateur serveur (si vous avez un VPS/dédié géré)
Sur l'infra Datacampus, l'admin Plesk serveur est géré par l'équipe. Pour les clients VPS qui ont leur propre Plesk, activer la 2FA globale :
- Outils & paramètres > Paramètres de sécurité.
- Cocher Authentification multifacteur.
- À la prochaine connexion, Plesk affiche un QR code à scanner avec Aegis, Raivo ou Bitwarden.
- Enregistrer les recovery codes proposés.
Côté client (abonnement Plesk hébergé chez Datacampus)
- Connectez-vous à votre espace Plesk.
- En haut à droite, cliquez sur votre nom d'utilisateur > Modifier le profil.
- Onglet Authentification multifacteur, cochez Activer.
- Scannez le QR code avec votre app TOTP.
- Saisissez le code à 6 chiffres pour confirmer, puis sauvegardez les recovery codes.
2. SSH avec Google Authenticator PAM (VPS)
Sur un VPS Debian géré par vos soins, la 2FA SSH se fait via le module PAM libpam-google-authenticator. Ça reste du TOTP standard, compatible Aegis, Raivo, Bitwarden. Le nom « Google » est historique.
Installation
apt update
apt install libpam-google-authenticator
Génération du secret par utilisateur
À lancer en tant que l'utilisateur concerné, pas en root :
google-authenticator
Répondre y à la question « time-based token ». Scanner le QR code avec votre app, noter les emergency scratch codes (les recovery codes), puis répondre y à la plupart des questions suivantes (update du .google_authenticator, rate limiting, interdiction de réutiliser un code).
Config PAM
Éditer /etc/pam.d/sshd, ajouter en tête :
auth required pam_google_authenticator.so nullok
L'option nullok autorise les utilisateurs qui n'ont pas encore configuré la 2FA à se connecter normalement (le temps de migrer tout le monde). À retirer une fois la bascule terminée.
Config sshd
Éditer /etc/ssh/sshd_config :
KbdInteractiveAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
La ligne AuthenticationMethods est la plus importante : elle impose clé SSH + code TOTP. Recharger :
systemctl restart ssh
Tester depuis un autre terminal avant de fermer la session ouverte.
3. WordPress
Deux plugins open source solides :
- Two Factor — maintenu par des membres du core WordPress, simple, TOTP + clés hardware FIDO2. wordpress.org/plugins/two-factor
- WP 2FA — plus de features (forcer la 2FA par rôle, délai de grâce pour l'activation, recovery codes intégrés). Utile pour les sites multi-utilisateurs.
Procédure
- Installer et activer le plugin depuis Extensions > Ajouter.
- Aller dans le profil utilisateur (Utilisateurs > votre compte).
- Section Two-Factor Options : cocher Time Based One-Time Password (TOTP), scanner le QR, valider.
- Générer et stocker les Recovery Codes.
- Dans les réglages du plugin (WP 2FA surtout), forcer la 2FA pour tous les rôles administrateur et éditeur.
4. Nextcloud
- En tant qu'admin, aller dans Applications > catégorie Sécurité.
- Activer Two-Factor TOTP provider et Two-Factor backup codes.
- Chaque utilisateur active ensuite la 2FA dans Paramètres personnels > Sécurité > TOTP.
- Générer les backup codes dans la même page, les imprimer.
- Dans Paramètres administration > Sécurité, vous pouvez forcer la 2FA par groupe (admins, compta, etc.).
5. Mailcow
- Connectez-vous à l'interface webmail ou admin Mailcow.
- Cliquez sur votre profil utilisateur en haut à droite.
- Onglet Security > Two-Factor Authentication.
- Choisir TOTP ou WebAuthn (clé hardware), scanner le QR, valider.
Côté admin Mailcow, la 2FA s'active dans le panneau admin > Edit administrator details.
6. Espace client Datacampus et ServiceDesk
L'espace client datacampus.ninja et le ServiceDesk supportent tous les deux la 2FA TOTP. À activer dans votre profil utilisateur. C'est par là que passent vos factures et vos tickets, ne laissez pas cet accès sans 2FA.
7. Les autres comptes à ne pas oublier
La checklist complète des comptes qui peuvent faire tomber votre site :
- Plesk (admin et client).
- SSH / SFTP sur le VPS.
- WordPress admin (tous les comptes, pas juste le vôtre).
- GitLab / GitHub où est stocké le code du site.
- Registrar DNS (OVH, Gandi, Cloudflare, etc.) : si un attaquant prend la main sur le DNS, il redirige tout.
- Cloudflare ou autre CDN/WAF devant le site.
- Boîte mail associée au compte registrar et aux comptes admin : c'est celle qui reçoit les liens de reset, donc elle doit être la plus protégée.
- Gestionnaire de mots de passe lui-même (Bitwarden, 1Password).
Recovery codes : la règle d'or
Téléphone perdu, cassé, volé, reset sans backup : sans recovery codes, vous êtes dehors. Les comptes seront à débloquer via procédure support, ce qui prend des jours.
Si vous les perdez aussi, régénérez-les dès que possible depuis une session authentifiée, et réimprimez. Ce sont des codes à usage unique : une fois utilisés, ils ne valent plus rien.
Récapitulatif
- Installer une app TOTP open source (Aegis sur Android, Raivo sur iOS, ou Bitwarden).
- Activer la 2FA sur Plesk (admin et client), WordPress, Nextcloud, Mailcow, espace client Datacampus.
- Sur VPS, activer la 2FA SSH avec
libpam-google-authenticatoretAuthenticationMethods publickey,keyboard-interactive. - Ne pas oublier : registrar DNS, GitLab/GitHub, Cloudflare, boîte mail de récupération, gestionnaire de mots de passe.
- Imprimer les recovery codes, les stocker en deux endroits distincts.
- Forcer la 2FA pour les rôles sensibles (admins WordPress, groupes Nextcloud) avec un délai de grâce.
Un mot de passe volé sans 2FA, c'est un site perdu. Un mot de passe volé avec 2FA, c'est juste un mot de passe à changer. La différence vaut largement les 10 minutes de config.