Offre Durée limitée : -10% sur tout le site* avec le code WELCOME10

Sécuriser un VPS Ubuntu : SSH, UFW et Fail2ban

Mis à jour le 22 octobre 2026 9 min de lecture 11 sections

Pourquoi sécuriser un VPS Ubuntu dès la première connexion

Un VPS fraichement livré est exposé sur Internet avec un accès root par mot de passe, aucun pare-feu actif et aucune protection contre les tentatives de connexion répétées. Les scans automatisés commencent en quelques minutes : des bots testent en boucle des combinaisons utilisateur/mot de passe sur le port 22. Sans configuration de sécurité, un serveur VPS Ubuntu peut être compromis avant même que vous ayez terminé d'installer vos services.

Ce guide couvre les trois mesures de sécurité indispensables sur un VPS Ubuntu (22.04 LTS, 24.04 LTS) : le durcissement du service SSH, la configuration du pare-feu UFW et la mise en place de Fail2ban pour bannir automatiquement les adresses IP malveillantes. Chaque étape est détaillée avec les commandes à exécuter en SSH, les fichiers de configuration à modifier et les vérifications à effectuer. Si votre VPS tourne sous Debian 12, les commandes sont identiques.

Ce guide s'adresse aux administrateurs de VPS, propriétaires de serveurs de jeu et développeurs qui hébergent des services sur un serveur Linux. Pour une approche plus avancée avec nftables en remplacement d'UFW : configurer nftables sur VPS Linux.

Prérequis

  • Un VPS sous Ubuntu 22.04 LTS ou 24.04 LTS (ou Debian 12) ;
  • Un accès SSH en tant que root ou un utilisateur avec sudo ;
  • Une paire de clés SSH générée sur votre poste local (recommandé : Ed25519).

Si vous n'avez pas encore configuré l'authentification par clé publique SSH, commencez par notre guide configurer une clé SSH sur VPS Linux sans perdre l'accès. C'est un prérequis avant de désactiver l'authentification par mot de passe.

Mettre à jour le système

Avant toute modification, mettez à jour les paquets système. Un VPS livré avec une image Ubuntu n'a pas forcément les derniers correctifs de sécurité :

sudo apt update && sudo apt upgrade -y

Cette commande télécharge la liste des paquets disponibles, puis installe les mises à jour. Sur un VPS de production, pensez à automatiser les mises à jour de sécurité : automatiser les mises à jour de sécurité sur Ubuntu.

Créer un utilisateur admin et désactiver root

Travailler directement en root est risqué : toute commande s'exécute sans filet, et un attaquant qui devine le mot de passe root a un accès total au serveur. Créez un utilisateur dédié à l'administration, ajoutez-le au groupe sudo, puis copiez votre clé publique SSH sur ce compte :

adduser devops
usermod -aG sudo devops

Copiez votre clé publique SSH sur le nouveau compte depuis votre poste local :

ssh-copy-id -i ~/.ssh/id_ed25519.pub devops@203.0.113.10

Testez la connexion avec le nouveau compte dans un second terminal avant de fermer la session root. Si la connexion échoue, vous gardez votre session root ouverte pour corriger :

ssh devops@203.0.113.10
sudo whoami   # doit afficher "root"

Durcir la configuration SSH

Le service SSH (sshd) est le point d'entrée principal de votre VPS. Trois paramètres réduisent drastiquement la surface d'attaque : désactiver la connexion root, désactiver l'authentification par mot de passe et limiter le nombre de tentatives de connexion.

Sur Ubuntu 24.04 LTS, la configuration SSH supporte les fichiers drop-in dans /etc/ssh/sshd_config.d/. Créez un fichier de durcissement qui sera lu automatiquement sans modifier le fichier principal :

sudo nano /etc/ssh/sshd_config.d/90-hardening.conf

Contenu du fichier :

PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
MaxAuthTries 3
LoginGraceTime 20
X11Forwarding no

Explication de chaque directive :

DirectiveValeurEffet
PermitRootLoginnoInterdit toute connexion SSH en root, même avec une clé valide
PasswordAuthenticationnoExige une clé SSH, bloque le brute force par mot de passe
KbdInteractiveAuthenticationnoDésactive l'authentification interactive (variante du mot de passe)
MaxAuthTries3Déconnecte après 3 échecs d'authentification par session
LoginGraceTime20Ferme la connexion si l'utilisateur ne s'authentifie pas en 20 secondes
X11ForwardingnoDésactive le transfert graphique X11, inutile sur un serveur

Sur Ubuntu 22.04 LTS, les fichiers drop-in sont aussi supportés. Si votre distribution n'inclut pas sshd_config.d, éditez directement /etc/ssh/sshd_config.

Vérifiez la syntaxe de la configuration, puis rechargez le service SSH :

sudo sshd -t
sudo systemctl reload ssh

Testez immédiatement la connexion depuis un second terminal avant de fermer votre session en cours. Si une erreur de configuration vous empêche de vous reconnecter, la session ouverte vous permet de corriger. Pour un guide complet sur le durcissement SSH : sécuriser SSH sur un VPS Linux.

Configurer le pare-feu UFW

UFW (Uncomplicated Firewall) est l'interface simplifiée d'iptables installée par défaut sur Ubuntu. Il permet de contrôler le trafic réseau entrant et sortant avec des règles lisibles. L'objectif : bloquer tout le trafic entrant par défaut, puis n'ouvrir que les ports strictement nécessaires.

Définir les politiques par défaut

sudo ufw default deny incoming
sudo ufw default allow outgoing

Tous les paquets entrants sont bloqués sauf ceux explicitement autorisés. Le trafic sortant (mises à jour, requêtes DNS) reste autorisé.

Autoriser SSH avant d'activer le pare-feu

Autorisez le port SSH avant d'activer UFW, sinon vous perdez immédiatement l'accès à votre VPS :

sudo ufw allow OpenSSH

Si vous avez changé le port SSH (par exemple en 2222), autorisez le port personnalisé à la place :

sudo ufw allow 2222/tcp

Activer UFW

sudo ufw enable

UFW demande confirmation car l'activation peut couper les connexions existantes si les règles sont incorrectes. Vérifiez l'état et les règles actives :

sudo ufw status verbose

Le résultat affiche les politiques par défaut et la liste des ports ouverts.

Ouvrir des ports supplémentaires

Ouvrez uniquement les ports nécessaires à vos services. Quelques exemples courants :

ServiceCommande UFWPort
HTTPsudo ufw allow 80/tcp80
HTTPSsudo ufw allow 443/tcp443
FiveMsudo ufw allow 30120/tcp et sudo ufw allow 30120/udp30120
Minecraftsudo ufw allow 25565/tcp25565
Rustsudo ufw allow 28015/udp28015

Pour un guide dédié à l'ouverture des ports de serveurs de jeu : ouvrir les ports d'un serveur de jeu Linux avec UFW.

Installer et configurer Fail2ban

Fail2ban surveille les journaux du système et bannit temporairement les adresses IP qui échouent trop de tentatives de connexion. Sur un VPS exposé, les logs SSH enregistrent souvent des centaines de tentatives par heure. Fail2ban réduit ce bruit et bloque les attaques par force brute avant qu'elles n'aboutissent.

Installer Fail2ban

sudo apt install -y fail2ban

Le service démarre automatiquement après l'installation. Vérifiez son état :

sudo systemctl status fail2ban

Créer le fichier de configuration locale

Ne modifiez jamais /etc/fail2ban/jail.conf directement : les mises à jour du paquet écrasent ce fichier. Créez /etc/fail2ban/jail.local qui prend le dessus :

sudo nano /etc/fail2ban/jail.local

Configuration recommandée :

[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
banaction = nftables
ignoreip = 127.0.0.1/8 ::1

[sshd]
enabled = true
backend = systemd
maxretry = 3
bantime = 2h

Explication des paramètres :

ParamètreValeurEffet
bantime1h / 2hDurée du bannissement (1 h par défaut, 2 h pour SSH)
findtime10mFenêtre d'observation des tentatives échouées
maxretry5 / 3Nombre de tentatives avant bannissement
banactionnftablesUtilise nftables pour les règles de bannissement (recommandé sur Ubuntu 24.04)
backendsystemdLit les logs depuis le journal systemd (pas besoin de chemin de fichier log)
ignoreip127.0.0.1/8 ::1Ne bannit jamais localhost (ajoutez votre IP fixe si vous en avez une)

Appliquer et vérifier

Redémarrez Fail2ban pour appliquer la configuration, puis vérifiez l'état de la jail SSH :

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

La commande affiche le nombre d'adresses bannies, le filtre utilisé et le fichier journal surveillé. Pour débannir une adresse IP manuellement :

sudo fail2ban-client set sshd unbanip 203.0.113.50

Pour une configuration avancée de Fail2ban (bannissement progressif, jails Nginx, alertes par email) : configurer Fail2ban sur VPS Linux.

Vérifier la sécurité du serveur

Après avoir appliqué les trois couches de sécurité (SSH, UFW, Fail2ban), vérifiez que tout fonctionne correctement. Cette liste de contrôle couvre les points essentiels :

VérificationCommandeRésultat attendu
Connexion root interditessh root@votre-ipPermission denied (publickey)
Connexion par mot de passe interditessh -o PubkeyAuthentication=no devops@votre-ipPermission denied (publickey)
Pare-feu actifsudo ufw statusStatus: active, règles affichées
Fail2ban actifsudo fail2ban-client status sshdJail sshd active, filtre configuré
Port SSH ouvertsudo ss -tlnp | grep sshPort 22 (ou personnalisé) en écoute

Pour aller plus loin dans la surveillance, installez un outil de monitoring comme htop ou btop pour détecter les processus suspects : surveiller les ressources d'un VPS Linux avec htop et btop.

Récapitulatif des commandes

Voici l'enchainement complet des commandes de ce guide, à exécuter dans l'ordre :

# 1. Mise à jour du système
sudo apt update && sudo apt upgrade -y

# 2. Créer l'utilisateur admin
adduser devops
usermod -aG sudo devops

# 3. Durcir SSH (fichier drop-in)
sudo nano /etc/ssh/sshd_config.d/90-hardening.conf
sudo sshd -t && sudo systemctl reload ssh

# 4. Configurer UFW
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow OpenSSH
sudo ufw enable

# 5. Installer et configurer Fail2ban
sudo apt install -y fail2ban
sudo nano /etc/fail2ban/jail.local
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

Questions fréquentes

Faut-il changer le port SSH par défaut ?

Changer le port 22 réduit le volume de scans automatisés dans les logs, mais ce n'est pas une mesure de sécurité en soi. Un attaquant ciblé scanne tous les ports en quelques secondes avec nmap. La vraie protection vient de la désactivation de l'authentification par mot de passe et de Fail2ban. Si vous changez le port, pensez à mettre à jour la règle UFW (sudo ufw allow 2222/tcp) et la directive Port dans la configuration SSH.

Fail2ban fonctionne-t-il si j'utilise nftables au lieu d'iptables ?

Oui. Depuis les versions récentes, Fail2ban supporte nftables nativement via banaction = nftables dans jail.local. C'est le backend recommandé sur Ubuntu 24.04 LTS qui utilise nftables par défaut. Si vous avez configuré manuellement un pare-feu nftables, consultez notre guide configurer nftables sur un VPS Linux.

Comment savoir si mon VPS est attaqué par brute force SSH ?

Consultez les logs avec journalctl -u ssh --since "1 hour ago" | grep "Failed" sur Ubuntu 24.04 (systemd journal) ou grep "Failed password" /var/log/auth.log sur les versions plus anciennes. Fail2ban affiche les IP bannies avec sudo fail2ban-client status sshd. Pour une analyse complète des logs : analyser les échecs de connexion SSH.

UFW et nftables peuvent-ils coexister sur le même serveur ?

UFW utilise iptables (ou nftables en backend transparent sur Ubuntu 24.04). Si vous gérez des règles nftables manuellement en parallèle d'UFW, les deux jeux de règles peuvent entrer en conflit. Choisissez l'un ou l'autre : UFW pour une configuration simple, nftables pour un contrôle granulaire.

Que faire si je me bloque après avoir modifié la configuration SSH ?

Si vous avez perdu l'accès SSH à votre VPS, la plupart des hébergeurs proposent une console VNC ou un accès de secours depuis le panneau de gestion. Sur un VPS ElypseCloud, utilisez la console noVNC du panel pour vous reconnecter et corriger la configuration. Pour diagnostiquer les accès réseau : VPS inaccessible : diagnostic réseau en 30 secondes.

Conclusion

Avec le durcissement SSH, le pare-feu UFW et Fail2ban configurés, votre VPS Ubuntu dispose d'une base de sécurité solide. Ces trois couches complémentaires bloquent l'essentiel des attaques automatisées : SSH refuse les connexions non autorisées, UFW filtre le trafic réseau, et Fail2ban bannit les IP malveillantes. La prochaine étape logique est de sauvegarder régulièrement votre serveur pour pouvoir restaurer en cas d'incident : sauvegarder un VPS avec rsync.

FAQ

Faut-il changer le port SSH par défaut ?

Changer le port 22 réduit le volume de scans automatisés dans les logs, mais ce n'est pas une mesure de sécurité en soi. Un attaquant ciblé scanne tous les ports en quelques secondes. La vraie protection vient de la désactivation de l'authentification par mot de passe et de Fail2ban. Si vous changez le port, mettez à jour la règle UFW et la directive Port dans la configuration SSH.

Fail2ban fonctionne-t-il si j'utilise nftables au lieu d'iptables ?

Oui. Fail2ban supporte nftables nativement via banaction = nftables dans jail.local. C'est le backend recommandé sur Ubuntu 24.04 LTS qui utilise nftables par défaut.

Comment savoir si mon VPS est attaqué par brute force SSH ?

Consultez les logs avec journalctl -u ssh --since "1 hour ago" | grep "Failed" sur Ubuntu 24.04 ou grep "Failed password" /var/log/auth.log sur les versions plus anciennes. Fail2ban affiche les IP bannies avec sudo fail2ban-client status sshd.

UFW et nftables peuvent-ils coexister sur le même serveur ?

UFW utilise iptables ou nftables en backend transparent sur Ubuntu 24.04. Si vous gérez des règles nftables manuellement en parallèle d'UFW, les deux jeux de règles peuvent entrer en conflit. Choisissez l'un ou l'autre : UFW pour une configuration simple, nftables pour un contrôle granulaire.

Que faire si je me bloque après avoir modifié la configuration SSH ?

Utilisez la console VNC ou noVNC proposée par votre hébergeur pour vous reconnecter au serveur sans passer par SSH. Corrigez la configuration dans /etc/ssh/sshd_config.d/ puis rechargez le service avec systemctl reload ssh. Testez toujours depuis un second terminal avant de fermer votre session.