---
title: "Comment sécuriser son VPS Linux ? (Guide 2026)"
description: "Sécurisez votre VPS Linux Winheberg, mise à jour système, authentification par clé SSH, pare-feu et CrowdSec, quelle que soit votre distribution."
category: vps
subcategory: vps-linux
icon: tabler:file-text
date: 2026-07-24
author: Winheberg
slug: "securiser-vps-linux-2026"
order: 2
image: /statics/images/docs/fr/vps-linux/securiser-vps-linux-2026.webp
tags: [vps, sécurité, ssh, crowdsec, firewall]
keywords: [sécuriser vps linux, clé ssh ed25519, ufw firewalld iptables, crowdsec vps, guide sécurité vps 2026]
link_en: "/en/docs/vps-linux/secure-linux-vps-2026"
---

## 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.

> [!IMPORTANT]
> 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

```bash
ssh root@VOTRE_IP_VPS
```

> [!NOTE]
> 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

:::MdTabs
::MdTab{label="Debian et Ubuntu"}
```bash
apt update && apt dist-upgrade -y
```

> [!TIP]
> 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.
::
::MdTab{label="AlmaLinux, Rocky Linux et Fedora"}
```bash
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.
::
::MdTab{label="Alpine Linux"}
```bash
apk update && apk upgrade
```
::
:::

> [!TIP]
> 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.

> [!NOTE]
> « 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.

```bash
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.

```bash
ssh-copy-id root@VOTRE_IP_VPS
```

Testez la connexion.

```bash
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.

```bash
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.

:::MdTabs
::MdTab{label="Debian et Ubuntu"}
```bash
systemctl restart ssh
```
::
::MdTab{label="AlmaLinux, Rocky Linux et Fedora"}
```bash
systemctl restart sshd
```
::
::MdTab{label="Alpine Linux"}
```bash
rc-service sshd restart
```
::
:::

> [!WARNING]
> 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.

:::MdTabs
::MdTab{label="UFW (Debian, Ubuntu)"}
UFW (*Uncomplicated Firewall*) est un pare-feu simple à utiliser qui permet de n'autoriser que les ports nécessaires sur votre serveur.

### Installer UFW

```bash
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.

```bash
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.

```bash
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.

```bash
ufw allow 80/tcp
ufw allow 443/tcp
```

### Activer le pare-feu

```bash
ufw enable
```

Vérifiez ensuite que tout est en ordre.

```bash
ufw status verbose
```

Vous devriez voir vos règles listées avec le statut `active`.
::
::MdTab{label="firewalld (AlmaLinux, Rocky, Fedora)"}
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

```bash
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.

```bash
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.

```bash
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.

```bash
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
```

### Vérifier les règles actives

```bash
firewall-cmd --list-all
```

Vous devriez voir les services autorisés listés dans la zone active.
::
::MdTab{label="iptables (Alpine)"}
Alpine n'inclut pas UFW ni firewalld, la protection par pare-feu passe donc par `iptables`.

### Installer iptables

```bash
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.

```bash
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.

```bash
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

```bash
iptables -P INPUT DROP
```

### Rendre les règles persistantes

Par défaut, les règles iptables sont perdues au redémarrage.

```bash
/etc/init.d/iptables save
rc-update add iptables
```

### Vérifier les règles actives

```bash
iptables -L INPUT -n -v --line-numbers
```
::
:::

## 4. Installer CrowdSec pour bloquer les attaques

[CrowdSec](https://www.crowdsec.net/) 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.

> [!NOTE]
> 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.

:::MdTabs
::MdTab{label="Debian et Ubuntu"}
### Installer CrowdSec

```bash
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

```bash
systemctl status crowdsec
```

Vous devriez voir `active (running)` en vert.

Pour voir les scénarios de détection actifs, lancez la commande suivante.

```bash
cscli collections list
```

### Installer le bouncer

CrowdSec détecte les menaces, mais il a besoin d'un bouncer pour les bloquer activement.

```bash
apt install crowdsec-firewall-bouncer-iptables -y
```

Le bouncer s'enregistre automatiquement auprès de CrowdSec. Vérifiez ensuite qu'il est bien actif.

```bash
systemctl status crowdsec-firewall-bouncer
```
::
::MdTab{label="AlmaLinux, Rocky Linux et Fedora"}
### Installer CrowdSec

```bash
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.rpm.sh | bash
dnf install crowdsec -y
```

> [!NOTE]
> 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

```bash
systemctl status crowdsec
```

Vous devriez voir `active (running)` en vert.

Pour voir les scénarios de détection actifs, lancez la commande suivante.

```bash
cscli collections list
```

### Installer le bouncer

```bash
dnf install crowdsec-firewall-bouncer-iptables -y
systemctl enable --now crowdsec-firewall-bouncer
```

Vérifiez ensuite qu'il est bien actif.

```bash
systemctl status crowdsec-firewall-bouncer
```
::
:::

### Tester et surveiller CrowdSec

Pour lister les décisions en cours (IP bloquées), utilisez cette commande.

```bash
cscli decisions list
```

Pour consulter les alertes (tentatives détectées), lancez celle-ci.

```bash
cscli alerts list
```

> [!TIP]
> Créez un compte gratuit sur [app.crowdsec.net](https://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é 🔒
