Contexte
Vous venez de louer un VPS Linux chez Winheberg et vous voulez le protéger correctement ? Bonne nouvelle, quelques étapes simples suffisent à bloquer la grande majorité des attaques automatisées qui ciblent les serveurs exposés sur Internet.
Ce guide pas à pas est conçu pour les débutants. Chaque commande est expliquée, et vous comprendrez pourquoi chaque étape est importante. Il couvre toutes les distributions que nous proposons, à savoir Debian 11/12/13, Ubuntu 23.10/24.04/25.04, AlmaLinux 9/10, Rocky Linux 9/10, Fedora 41/42 et Alpine Linux 3.22.
Pourquoi sécuriser son VPS Linux ?
Dès qu'un VPS est mis en ligne, il devient une cible. Des milliers de bots scannent Internet en permanence à la recherche de serveurs mal configurés. En quelques heures seulement, votre serveur peut subir différents types d'attaques.
- Des tentatives de connexion SSH par force brute où des bots testent des milliers de mots de passe
- Des scans de ports pour détecter des services vulnérables
- Des exploitations de failles sur des logiciels non mis à jour
Un VPS compromis peut être utilisé pour envoyer du spam, miner de la cryptomonnaie ou participer à des attaques DDoS, souvent sans que vous vous en rendiez compte.
Suivez ce guide dès la première connexion à votre VPS, avant même d'y installer vos services.
Prérequis
- Un VPS Linux Winheberg en service
- Un accès root en SSH à votre serveur
- Un PC local pour générer une paire de clés SSH
1. Mettre à jour le système
La toute première étape consiste à mettre à jour l'ensemble des paquets installés. Cela permet de corriger les failles de sécurité connues et d'avoir les dernières versions stables des logiciels.
Connectez-vous à votre VPS en SSH
ssh root@VOTRE_IP_VPS
L'adresse IP de votre serveur vous a été communiquée dans le mail de livraison envoyé au moment de la commande, ou dans la section IP Address de votre espace client. Remplacez VOTRE_IP_VPS par cette adresse (par exemple ssh root@82.153.202.xx).
Lancez la mise à jour
apt update && apt dist-upgrade -y
Pourquoi dist-upgrade et pas upgrade ? La commande apt upgrade peut bloquer certaines mises à jour critiques (notamment celles du noyau Linux ou de paquets avec de nouvelles dépendances). apt dist-upgrade (ou son équivalent apt full-upgrade) est plus complet et applique toutes les mises à jour de sécurité sans exception. C'est la commande recommandée pour un serveur.
dnf upgrade --refresh -y
L'option --refresh force le rafraîchissement des métadonnées des dépôts avant d'appliquer les mises à jour, pour être sûr de ne rien manquer.
apk update && apk upgrade
Prenez l'habitude de lancer cette commande chaque semaine pour garder votre VPS à jour.
2. Sécuriser l'accès SSH
SSH est la porte d'entrée principale de votre VPS. C'est aussi la cible n°1 des attaques. Voici les bonnes pratiques à appliquer.
❌ Pourquoi changer le port SSH ne sert à rien
Beaucoup de tutoriels recommandent de changer le port SSH par défaut (22) vers un autre port (par exemple 2222). C'est une fausse bonne idée.
Il s'agit de « sécurité par obscurité », vous cachez le service au lieu de le protéger réellement. Un scanner moderne comme nmap ou masscan trouvera votre nouveau port en quelques secondes. Au final, ce changement va surtout compliquer votre administration (vous devez préciser le port à chaque connexion), casser certains outils qui supposent le port 22 par défaut, et vous donner un faux sentiment de sécurité.
Gardez le port 22 et appliquez plutôt les vraies protections ci-dessous.
2.1 Mettre en place l'authentification par clé SSH
L'authentification par clé est beaucoup plus sûre qu'un mot de passe. Une clé privée est quasiment impossible à deviner par force brute, contrairement à un mot de passe qui peut être attaqué pendant des jours.
« Quasiment impossible » avec les ordinateurs actuels. Avec l'arrivée de l'informatique quantique, certains algorithmes cryptographiques classiques (comme RSA) pourraient devenir vulnérables dans le futur. C'est pourquoi on recommande aujourd'hui les clés Ed25519 (utilisée dans ce guide), plus robustes et déjà mieux préparées à l'ère post-quantique.
Cette étape est identique quelle que soit la distribution de votre VPS, puisqu'elle se déroule principalement sur votre PC local.
Sur votre PC local (pas sur le VPS), générez une paire de clés.
ssh-keygen -t ed25519 -C "votre_email@exemple.com"
Appuyez sur Entrée pour accepter l'emplacement par défaut, puis définissez une passphrase (mot de passe protégeant la clé).
Copiez ensuite la clé publique sur votre VPS.
ssh-copy-id root@VOTRE_IP_VPS
Testez la connexion.
ssh root@VOTRE_IP_VPS
Si vous vous connectez sans demander de mot de passe (juste la passphrase de la clé), tout fonctionne.
2.2 Désactiver la connexion par mot de passe
Maintenant que la connexion par clé fonctionne, désactivez la connexion par mot de passe pour bloquer définitivement les attaques par force brute.
Ouvrez le fichier de configuration SSH, identique sur toutes les distributions.
nano /etc/ssh/sshd_config
Modifiez (ou ajoutez) les lignes suivantes.
PermitRootLogin prohibit-password
PasswordAuthentication no
PubkeyAuthentication yes
L'option PermitRootLogin prohibit-password autorise root uniquement par clé SSH, jamais par mot de passe. PasswordAuthentication no désactive complètement l'authentification par mot de passe, et PubkeyAuthentication yes autorise la connexion par clé.
Sauvegardez (Ctrl+O, Entrée, Ctrl+X), puis redémarrez le service SSH. Le nom du service diffère selon la distribution.
systemctl restart ssh
systemctl restart sshd
rc-service sshd restart
Ne fermez pas votre session actuelle avant d'avoir testé la nouvelle configuration dans un autre terminal. Si quelque chose ne va pas, vous pourriez vous retrouver bloqué hors du serveur.
3. Installer un pare-feu
Le pare-feu à utiliser dépend de votre distribution.
UFW (Uncomplicated Firewall) est un pare-feu simple à utiliser qui permet de n'autoriser que les ports nécessaires sur votre serveur.
Installer UFW
apt install ufw -y
Autoriser SSH (étape critique)
Avant toute autre commande UFW, autorisez SSH. Si vous oubliez cette étape et activez le pare-feu, vous serez immédiatement déconnecté de votre VPS sans possibilité d'y revenir.
ufw allow OpenSSH
Définir les règles de base
Maintenant que SSH est autorisé, vous pouvez bloquer tout le trafic entrant par défaut et autoriser le trafic sortant.
ufw default deny incoming
ufw default allow outgoing
La règle default deny incoming bloque tout ce qui entre, sauf les exceptions que vous avez définies (comme SSH). La règle default allow outgoing permet à votre serveur de continuer à communiquer vers l'extérieur (mises à jour, requêtes web, etc.).
Autoriser d'autres services (si besoin)
Si vous hébergez un site web, ouvrez les ports HTTP et HTTPS.
ufw allow 80/tcp
ufw allow 443/tcp
Activer le pare-feu
ufw enable
Vérifiez ensuite que tout est en ordre.
ufw status verbose
Vous devriez voir vos règles listées avec le statut active.
firewalld est le pare-feu par défaut sur l'écosystème Red Hat. Contrairement à UFW, il bloque déjà tout le trafic entrant non explicitement autorisé dans sa zone par défaut, il n'y a donc pas de règle "deny incoming" à ajouter séparément.
Vérifier que firewalld est actif
systemctl status firewalld
Sur AlmaLinux, Rocky et Fedora, firewalld est généralement actif par défaut. S'il ne l'est pas, démarrez-le et activez-le au démarrage.
systemctl enable --now firewalld
Autoriser SSH (étape critique)
Avant toute autre commande, assurez-vous que SSH est bien autorisé. C'est le cas par défaut sur la zone public, mais vérifiez tout de même.
firewall-cmd --permanent --add-service=ssh
firewall-cmd --reload
Autoriser d'autres services (si besoin)
Si vous hébergez un site web, ouvrez les ports HTTP et HTTPS.
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
Vérifier les règles actives
firewall-cmd --list-all
Vous devriez voir les services autorisés listés dans la zone active.
Alpine n'inclut pas UFW ni firewalld, la protection par pare-feu passe donc par iptables.
Installer iptables
apk add iptables
Autoriser le loopback, les connexions établies et SSH (étape critique)
Avant d'appliquer une politique de blocage par défaut, autorisez explicitement SSH, sous peine de vous retrouver bloqué hors du serveur.
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Autoriser d'autres services (si besoin)
Si vous hébergez un site web, ouvrez les ports HTTP et HTTPS.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Bloquer le reste du trafic entrant par défaut
iptables -P INPUT DROP
Rendre les règles persistantes
Par défaut, les règles iptables sont perdues au redémarrage.
/etc/init.d/iptables save
rc-update add iptables
Vérifier les règles actives
iptables -L INPUT -n -v --line-numbers
4. Installer CrowdSec pour bloquer les attaques
CrowdSec est une alternative moderne à Fail2Ban. Il analyse les logs en temps réel pour détecter les comportements malveillants (tentatives de brute force, scans, etc.) et bloque automatiquement les IP suspectes.
Sa particularité, c'est que CrowdSec partage les IP malveillantes avec une communauté mondiale, ce qui permet de bloquer des attaquants avant même qu'ils n'attaquent votre serveur.
Sur Alpine, CrowdSec ne dispose pas du même niveau de support que sur les autres distributions. L'assistant d'installation automatique ne fonctionne pas (il suppose systemd, absent sur Alpine avec OpenRC), et les paquets ne sont disponibles que dans le dépôt edge/testing, pas dans les dépôts stables. Une installation manuelle est possible mais dépasse le cadre de ce guide. Sur Alpine, le pare-feu iptables mis en place à l'étape précédente reste votre principale protection.
Installer CrowdSec
curl -s https://install.crowdsec.net | sh
apt install crowdsec -y
L'installateur détecte automatiquement les services à surveiller (dont SSH) et configure les collections nécessaires.
Vérifier l'installation
systemctl status crowdsec
Vous devriez voir active (running) en vert.
Pour voir les scénarios de détection actifs, lancez la commande suivante.
cscli collections list
Installer le bouncer
CrowdSec détecte les menaces, mais il a besoin d'un bouncer pour les bloquer activement.
apt install crowdsec-firewall-bouncer-iptables -y
Le bouncer s'enregistre automatiquement auprès de CrowdSec. Vérifiez ensuite qu'il est bien actif.
systemctl status crowdsec-firewall-bouncer
Installer CrowdSec
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.rpm.sh | bash
dnf install crowdsec -y
Si l'installation du dépôt échoue en réclamant pygpgme, ce paquet n'est plus packagé sur les versions récentes d'AlmaLinux et Rocky. Consultez la documentation officielle CrowdSec pour la méthode d'installation manuelle du dépôt sur votre version exacte.
Vérifier l'installation
systemctl status crowdsec
Vous devriez voir active (running) en vert.
Pour voir les scénarios de détection actifs, lancez la commande suivante.
cscli collections list
Installer le bouncer
dnf install crowdsec-firewall-bouncer-iptables -y
systemctl enable --now crowdsec-firewall-bouncer
Vérifiez ensuite qu'il est bien actif.
systemctl status crowdsec-firewall-bouncer
Tester et surveiller CrowdSec
Pour lister les décisions en cours (IP bloquées), utilisez cette commande.
cscli decisions list
Pour consulter les alertes (tentatives détectées), lancez celle-ci.
cscli alerts list
Créez un compte gratuit sur app.crowdsec.net pour visualiser vos alertes dans une interface web et bénéficier de la blocklist communautaire, qui bloque préventivement les IP signalées comme malveillantes par d'autres utilisateurs.
Récapitulatif des bons réflexes
Après avoir suivi ce guide, votre VPS est protégé contre la majorité des attaques courantes. Pour garder ce niveau de sécurité dans le temps, gardez en tête ces quelques habitudes.
- Mettre à jour le système régulièrement
- Utiliser uniquement l'authentification par clé SSH
- Garder votre pare-feu activé et n'ouvrir que les ports réellement nécessaires
- Vérifier les logs CrowdSec de temps en temps (
cscli alerts list), sur les distributions où il est installé
Besoin d'aide ?
Si vous rencontrez un problème lors de la sécurisation de votre VPS, notre équipe est là. Ouvrez un ticket dans le département Technique depuis votre espace client et renseignez le champ Produit lié avec le VPS concerné.
Vous avez maintenant un VPS Linux sécurisé et prêt à héberger vos projets en toute tranquillité 🔒


