Un nouveau VPS doté d’une adresse IP publique reçoit des tentatives de connexion automatisées en quelques minutes. Rien de tout cela n’est personnel ; des bots scannent simplement toutes les adresses. Quelques étapes de base en bloquent presque la totalité. Cette liste de contrôle suppose un serveur Ubuntu 24.04 ou Debian 12/13 tout neuf et prend environ quinze minutes.
1. Commencez par tout mettre à jour
apt update && apt full-upgrade -y
reboot
Reconnectez-vous après le redémarrage. Partez toujours d’un système entièrement à jour.
2. Créez un utilisateur non root
Travailler en permanence en root rend chaque faute de frappe dangereuse. Créez un utilisateur normal avec les droits sudo :
adduser deploy
usermod -aG sudo deploy
3. Configurez des clés SSH
Sur votre propre ordinateur, créez une paire de clés si vous n’en avez pas et copiez la moitié publique sur le serveur :
ssh-keygen -t ed25519 -C "my-vps"
ssh-copy-id deploy@YOUR_SERVER_IP
Ouvrez un second terminal et vérifiez que vous pouvez vous connecter en tant que deploy avec la clé avant de continuer. Ne fermez pas votre session d’origine tant que ce n’est pas fait.
4. Désactivez la connexion par mot de passe et en root
Modifiez la configuration du démon SSH :
sudo nano /etc/ssh/sshd_config.d/99-hardening.conf
Placez ces lignes dans le fichier :
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
Vérifiez la syntaxe et rechargez :
sudo sshd -t && sudo systemctl reload ssh
5. Activez un pare-feu
UFW est l’option la plus simple. Autorisez d’abord SSH, puis activez le pare-feu :
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw allow 80,443/tcp # only if you run a web server
sudo ufw enable
sudo ufw status verbose
N’ouvrez des ports que pour les services que vous exécutez réellement. Tout le reste reste fermé par défaut.
6. Ajoutez fail2ban
Fail2ban surveille les journaux et bannit temporairement les adresses qui échouent sans cesse à se connecter.
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
Les valeurs par défaut conviennent pour SSH. Comme vous avez déjà désactivé les mots de passe, cela sert surtout à réduire le bruit dans les journaux et le CPU gaspillé.
7. Activez les mises à jour de sécurité automatiques
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Cela installe automatiquement les correctifs de sécurité. Redémarrez de temps en temps pour les mises à jour du noyau, ou laissez l’outil le faire à une heure creuse.
8. Vérifiez ce qui écoute
sudo ss -tulpn
Tout ce qui écoute sur 0.0.0.0 et que vous n’attendiez pas mérite une enquête. Les services destinés à un usage local uniquement (bases de données, caches, panneaux d’administration) doivent écouter sur 127.0.0.1.
9. Surveillance de base et sauvegardes
- Surveillez les journaux avec
journalctl -u ssh --since todayde temps en temps. - Vérifiez les ressources avec
htopetdf -hpour qu’un disque plein ou un processus emballé ne vous surprenne pas. - Faites des sauvegardes. Prenez un instantané du serveur avant les gros changements et gardez une copie hors serveur de tout ce que vous ne pouvez pas recréer.
Et ensuite
Vous disposez maintenant d’un serveur beaucoup plus difficile à pénétrer que la configuration par défaut. À partir de là, gardez les logiciels à jour, exécutez chaque service sous son propre utilisateur non privilégié et n’exposez que le nécessaire. Si vous voulez un tunnel privé vers le serveur, notre guide pour configurer WireGuard est une bonne prochaine étape.
Questions fréquentes
Que faire en premier sur un nouveau VPS ?
Mettez à jour les paquets, créez un utilisateur non root, passez aux clés SSH, désactivez la connexion par mot de passe et activez un pare-feu.
Dois-je changer le port SSH ?
Cela réduit le bruit dans les journaux, mais ce n’est pas une vraie sécurité. Les clés et un pare-feu comptent bien davantage.