Sécuriser un VPS Linux : UFW, fail2ban, clé SSH, root
Guide pour sécuriser un VPS Linux Lordhosting : firewall UFW, protection brute-force fail2ban, authentification par clé SSH et désactivation du login root.
Un VPS exposé sur Internet est scanné en permanence. Sans configuration minimale, vous risquez des tentatives de brute-force SSH, des intrusions et la compromission de vos services. Ce guide pose les bases d'un VPS Debian/Ubuntu sécurisé en moins de 30 minutes.
⚙️ Prérequis
- Un VPS Lordhosting (Debian 11/12 ou Ubuntu 22.04/24.04 recommandé)
- Un client SSH (Terminal sur macOS/Linux, PowerShell ou PuTTY sur Windows)
- Vos identifiants
rootreçus par email à la livraison
⚙️ 1. Connexion SSH initiale
Connectez-vous une dernière fois en root pour préparer la suite :
ssh root@votre_ip
⚙️ 2. Mise à jour du système
Toujours commencer par patcher les paquets installés :
apt update && apt upgrade -y
⚙️ 3. Créer un utilisateur sudo
Désactiver root est dangereux sans utilisateur de remplacement. Créez-en un avec les privilèges sudo :
adduser lordadmin
usermod -aG sudo lordadmin
Remplacez lordadmin par le nom d'utilisateur de votre choix.
⚙️ 4. Configurer l'authentification par clé SSH
Sur votre machine locale, générez une paire de clés si vous n'en avez pas déjà :
ssh-keygen -t ed25519 -C "votre_email@example.com"
Acceptez le chemin par défaut (~/.ssh/id_ed25519) et choisissez une passphrase forte.
Copiez ensuite la clé publique sur le VPS :
ssh-copy-id lordadmin@votre_ip
Si ssh-copy-id n'est pas disponible (Windows), copiez manuellement le contenu de ~/.ssh/id_ed25519.pub dans /home/lordadmin/.ssh/authorized_keys sur le VPS.
Testez la connexion par clé dans une nouvelle fenêtre :
ssh lordadmin@votre_ip
Si elle fonctionne sans demander de mot de passe, continuez. Sinon, ne touchez à rien et corrigez l'authentification d'abord.
⚙️ 5. Désactiver le login root et par mot de passe
Toujours connecté en tant que lordadmin, ouvrez la config SSH :
sudo nano /etc/ssh/sshd_config
Modifiez ou ajoutez les lignes suivantes :
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Sauvegardez (Ctrl+O, Entrée, Ctrl+X) puis rechargez SSH :
sudo systemctl restart ssh
⚠️ Ne fermez pas votre session active avant d'avoir vérifié, dans une nouvelle fenêtre, que vous arrivez bien à vous reconnecter en
lordadminavec votre clé. Si ça ne marche pas, vous êtes encore connecté et pouvez revenir en arrière.
⚙️ 6. Installer et configurer UFW (firewall)
UFW (Uncomplicated Firewall) est un wrapper simple autour d'iptables.
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable
Vérifiez l'état :
sudo ufw status verbose
Pensez à ouvrir les ports nécessaires à vos services. Quelques exemples :
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 25565/tcp # Minecraft Java
sudo ufw allow 19132/udp # Minecraft Bedrock
⚙️ 7. Installer et configurer fail2ban
fail2ban bannit automatiquement les IP qui multiplient les tentatives de connexion échouées :
sudo apt install -y fail2ban
Créez une config locale (ne pas modifier jail.conf directement) :
sudo nano /etc/fail2ban/jail.local
Collez ceci :
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Démarrez le service :
sudo systemctl enable --now fail2ban
Pour voir les IP bannies en temps réel :
sudo fail2ban-client status sshd
⚙️ 8. Vérification finale
- ✅ Connexion SSH par clé uniquement (pas de mot de passe)
- ✅ Login root désactivé
- ✅ UFW actif avec règles minimales
- ✅ fail2ban surveille SSH
Vous pouvez maintenant installer vos services (web, Pterodactyl, bots Discord, etc.) sur un terrain assaini. Pour aller plus loin, pensez à activer les mises à jour automatiques de sécurité avec unattended-upgrades et à mettre en place une sauvegarde régulière de votre VPS.

