Comment protéger votre VPS contre les attaques DDoS : Guide pratique
Guide complet sur la protection de votre VPS contre les attaques DDoS en utilisant des pare-feux, la limitation de débit et d'autres méthodes éprouvées.

Les attaques DDoS (Distributed Denial of Service) peuvent mettre votre serveur hors ligne en quelques minutes, entraînant une perte de revenus, une insatisfaction des clients et des dommages à la réputation. En 2026, de telles attaques sont devenues plus sophistiquées et accessibles. Heureusement, les méthodes de protection modernes ont également évolué. Ce guide vous montrera comment protéger votre VPS Hiddence contre les types d'attaques DDoS les plus courants.
Qu'est-ce qu'une attaque DDoS ?
Une attaque DDoS se produit lorsque plusieurs ordinateurs (botnet) envoient simultanément des requêtes à votre serveur, submergeant ses ressources et le rendant indisponible pour les utilisateurs légitimes.
Principaux types d'attaques DDoS
- Attaques volumétriques (L3/L4) : Inondation UDP, ICMP, inondation SYN — submergent la bande passante réseau
- Attaques de la couche application (L7) : Inondation HTTP, Slowloris — ciblent la couche application
- Attaques de protocole : Exploitent les vulnérabilités dans les protocoles réseau
Protection intégrée Hiddence
Tous les VPS Hiddence incluent une protection DDoS de base de couche 3-4 (niveau réseau). Cela filtre automatiquement la plupart des attaques volumétriques. Cependant, les attaques de couche 7 (application) nécessitent une configuration supplémentaire.
Étape 1 : Configuration du pare-feu
La première ligne de défense est une configuration appropriée du pare-feu. UFW (Uncomplicated Firewall) est un outil simple et efficace pour Ubuntu/Debian.
# Installer UFW
sudo apt update && sudo apt install ufw -y
# Autoriser SSH (IMPORTANT ! Faites cela avant d'activer UFW)
sudo ufw allow 22/tcp
# Autoriser HTTP et HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Activer UFW
sudo ufw enable
# Vérifier le statut
sudo ufw status verbose
# Règles de protection avancées :
# Limiter les connexions SSH (protection contre la force brute)
sudo ufw limit 22/tcp
# Bloquer les inondations de ping ICMP
sudo nano /etc/ufw/before.rules
# Ajouter après *filter :
-A ufw-before-input -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
# Protection contre l'inondation SYN
sudo nano /etc/sysctl.conf
# Ajouter :
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5
# Appliquer les modifications
sudo sysctl -pÉtape 2 : Installer Fail2Ban
Fail2Ban bloque automatiquement les adresses IP présentant une activité suspecte (plusieurs tentatives de connexion échouées, balayage de ports).
# Installer
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Configuration pour la protection SSH et HTTP
# Créer une configuration locale
sudo nano /etc/fail2ban/jail.local
# Ajouter :
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
banaction = ufw
[sshd]
enabled = true
port = 22
logpath = /var/log/auth.log
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
[nginx-limit-req]
enabled = true
filter = nginx-limit-req
port = http,https
logpath = /var/log/nginx/error.log
# Redémarrer Fail2Ban
sudo systemctl restart fail2ban
# Vérifier le statut
sudo fail2ban-client statusÉtape 3 : Protection Nginx
Si vous utilisez Nginx, configurez la limitation de débit pour protéger contre les attaques d'inondation HTTP.
sudo nano /etc/nginx/nginx.conf
# Ajouter au bloc http :
http {
# Limite de requêtes : 10 requêtes par seconde par IP
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
# Limite de connexion
limit_conn_zone $binary_remote_addr zone=addr:10m;
# Protection Slowloris
client_body_timeout 10s;
client_header_timeout 10s;
keepalive_timeout 5s 5s;
send_timeout 10s;
# Reste de la configuration...
}
# Dans le bloc server ajouter :
server {
location / {
# Appliquer la limite de requêtes
limit_req zone=one burst=20 nodelay;
# Limite de connexion : max 10 par IP
limit_conn addr 10;
# Votre configuration...
}
}
# Tester la configuration et recharger
sudo nginx -t
sudo systemctl reload nginxÉtape 4 : Utiliser un CDN
Pour une protection maximale, utilisez un service CDN comme Cloudflare. Le CDN agit comme un proxy, masquant la vraie IP de votre serveur et absorbant la plupart des attaques DDoS. Avantages : masquer la vraie IP, filtrage automatique du trafic malveillant, distribution de charge, SSL/TLS gratuit, WAF pour la protection L7.
- Inscrivez-vous sur cloudflare.com (plan gratuit disponible)
- Ajoutez votre domaine et changez les enregistrements NS chez votre registrar
- Activez le mode 'Proxy' (nuage orange) pour les enregistrements DNS
- Définissez le mode SSL sur 'Full (strict)' dans la section SSL/TLS
- Activez 'Protection DDoS' et 'Bot Fight Mode' dans les paramètres de sécurité
Étape 5 : Surveillance
Une surveillance régulière aide à détecter les attaques tôt.
# Surveiller les connexions actives
watch -n 1 'ss -s'
# Voir les IP principales par nombre de connexions
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# Voir les journaux en temps réel
sudo tail -f /var/log/nginx/access.log
sudo journalctl -u nginx -f
# Vérifier les IP bloquées dans Fail2Ban
sudo fail2ban-client status sshdMesures d'urgence
Si une attaque est déjà en cours, prenez les mesures suivantes :
- Identifier la source : Utilisez 'netstat' ou les journaux pour identifier les IP attaquantes
- Blocage temporaire : sudo ufw insert 1 deny from IP_ATTAQUANTE
- Bloquer des sous-réseaux entiers : sudo ufw deny from 123.45.0.0/16
- Limiter la limitation de débit : Réduisez temporairement les limites Nginx à 1-5 req/s
- Contacter le support : Contactez le support Hiddence pour l'activation de la protection avancée
- Activez le mode 'Under Attack Mode' dans Cloudflare (si vous l'utilisez)
Meilleures pratiques
- Ne publiez jamais la vraie IP de votre serveur si vous utilisez un CDN
- Mettez régulièrement à jour le système : sudo apt update && sudo apt upgrade
- Utilisez des clés SSH au lieu de mots de passe pour l'accès au serveur
- Changez le port SSH par défaut (22) vers un port non standard
- Configurez des sauvegardes automatiques pour une récupération rapide
- Utilisez des IP séparées pour les services critiques
- Activez la journalisation et vérifiez régulièrement les journaux pour une activité suspecte
- Envisagez d'utiliser le blocage géographique si votre service n'est pas global