Configurer SSH sur un VPS Linux
SSH, c'est la porte d'entrée de votre serveur, et par défaut la config qui sort de la boîte est loin d'être optimale. Root autorisé, mot de passe seul suffisant, port standard, bref, tout ce qu'un bot de scan aime trouver. On va corriger tout ça.
Le fichier qui nous intéresse est /etc/ssh/sshd_config. Toutes les manipulations ci-dessous se font dedans.
sudo nano /etc/ssh/sshd_config
Avant de toucher quoi que ce soit dans ce fichier, gardez votre session SSH actuelle ouverte et testez vos changements dans un second terminal. Si une modification vous bloque dehors, la session déjà ouverte vous permet de corriger le tir sans passer par la console web.
Changer le port SSH
Le port 22 par défaut, c'est le premier truc que scannent tous les bots automatisés. Le changer ne rend pas votre serveur invulnérable, mais ça fait tomber 90% du bruit inutile dans vos logs.
Port 2222
Choisissez un port au-dessus de 1024, et notez-le quelque part, vous en aurez besoin à chaque connexion.
N'oubliez pas d'ouvrir ce nouveau port sur votre firewall (UFW par exemple) avant de redémarrer SSH, sinon vous vous coupez l'accès. On en parle dans notre article sur UFW.
Désactiver la connexion root
Une fois que vous avez un utilisateur non-root avec les droits sudo (voir notre article dédié si ce n'est pas encore fait), plus aucune raison de laisser root se connecter directement en SSH.
PermitRootLogin no
C'est franchement l'une des lignes qui change le plus la donne niveau sécurité. Un attaquant devra deviner à la fois un nom d'utilisateur et un mot de passe (ou une clé), plutôt que de bruteforcer un compte root dont le nom est connu de tous.
Passer à l'authentification par clé
Un mot de passe, même solide, reste bruteforçable. Une clé SSH, beaucoup moins.
Sur votre machine (pas sur le serveur), générez une paire de clés si vous n'en avez pas déjà une :
ssh-keygen -t ed25519
Puis envoyez la clé publique sur le serveur :
ssh-copy-id -p 2222 john@votre-ip
Une fois que vous avez confirmé que la connexion par clé fonctionne (testez avant de couper quoi que ce soit), vous
pouvez désactiver l'authentification par mot de passe dans sshd_config :
PasswordAuthentication no
Ne désactivez jamais l'authentification par mot de passe sans avoir vérifié, dans une session à part, que la connexion par clé fonctionne bien. Sinon, retour à la case console web.
Limiter les tentatives de connexion
Deux réglages utiles pour ralentir un bruteforce :
MaxAuthTries 3
LoginGraceTime 30
Le premier limite le nombre de tentatives par connexion, le second réduit le temps laissé pour s'authentifier.
Restreindre l'accès à certains utilisateurs
Si votre VPS n'a que deux ou trois comptes qui ont besoin de SSH, autant le préciser explicitement :
AllowUsers john marie
Tout le reste sera refusé au niveau SSH, même si le compte existe sur le système.
Appliquer les changements
Une fois vos modifications faites, vérifiez que le fichier n'a pas d'erreur de syntaxe avant de redémarrer le service :
sudo sshd -t
Si aucune erreur ne remonte, vous pouvez redémarrer SSH :
sudo systemctl restart sshd
Et surtout, gardez votre session actuelle ouverte le temps de vérifier qu'une nouvelle connexion fonctionne bien, avec le nouveau port et les nouveaux réglages.
Pensez à mettre à jour la commande de connexion avec le nouveau port : ssh -p 2222 john@votre-ip.
En résumé
Port custom, root désactivé, clé SSH, ce sont les quatre réglages qui font le plus gros du travail pour sécuriser l'accès à votre VPS. Pour la suite, allez voir notre article sur UFW si ce n'est pas déjà fait, les deux se complètent bien.
Passez sur notre Discord, on regarde ça avec vous.