Chapitre 3 · 3.2
Désactiver la connexion par mot de passe et en tant que root
Tout serveur connecté à Internet reçoit très vite la visite de programmes qui tentent de deviner les mots de passe. Si la connexion n'est possible qu'avec une clé, ils n'ont aucune chance. C'est ce que vous allez activer maintenant.
Attention : La connexion avec votre clé en tant qu'anna fonctionne-t-elle (voir Un utilisateur personnel avec sudo) ? Créez alors d'abord un snapshot (voir Snapshots : un filet de sécurité pour chaque modification importante) et gardez une session ouverte pendant ces étapes. En cas d'erreur, vous pourrez toujours accéder au serveur via la console (voir La console : votre VPS dans votre navigateur).
Un fichier de configuration personnel
Sur Debian et Ubuntu, le serveur SSH lit d'abord les fichiers du dossier /etc/ssh/sshd_config.d/, par ordre alphabétique. Pour chaque paramètre, c'est la première valeur rencontrée qui s'applique. Votre propre fichier reçoit donc un nom qui le place en tête de liste :
anna@web1:~$ sudo nano /etc/ssh/sshd_config.d/00-eigen.conf
Ajoutez-y :
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
PasswordAuthentication no: plus de mots de passe via SSH.KbdInteractiveAuthentication no: pas de demande de mot de passe par un moyen détourné non plus.PermitRootLogin no: root ne peut plus se connecter via SSH, même avec une clé. Vous travaillez en tant qu'anna avec sudo. Si vous souhaitez encore autoriser root avec une clé, utilisezprohibit-password.
Vérifier et appliquer
anna@web1:~$ sudo sshd -t
anna@web1:~$ sudo sshd -T | grep -Ei '^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)'
passwordauthentication no
kbdinteractiveauthentication no
permitrootlogin no
anna@web1:~$ sudo systemctl restart ssh
sshd -t n'affiche rien si le fichier est correct. sshd -T indique les valeurs réellement appliquées. Voyez-vous encore passwordauthentication yes ? Un autre fichier de sshd_config.d le réactive alors, souvent 50-cloud-init.conf. Votre fichier 00-eigen.conf est lu avant et l'emporte ; vérifiez que son nom est correct.
Sur AlmaLinux et Rocky Linux, le service s'appelle sshd : sudo systemctl restart sshd.
Tester avant de fermer votre session
Ouvrez une nouvelle fenêtre et essayez :
ssh anna@203.0.113.10
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no anna@203.0.113.10
anna@203.0.113.10: Permission denied (publickey).
ssh root@203.0.113.10
root@203.0.113.10: Permission denied (publickey).
La première commande doit fonctionner. Les deux autres doivent être refusées. Tout est en ordre ? Supprimez alors le snapshot.
Astuce : Un numéro de port autre que 22 rend votre journal plus calme, mais ne rend pas votre serveur plus sûr. C'est la clé qui fait le travail. Si vous changez tout de même de port, ouvrez-le d'abord dans votre pare-feu (voir Un pare-feu avec ufw (ou nftables)).
