Aller au contenu

AS213941 · Peering-20 % sur tous les VPS avec le code NVH20 · Livraison en 60 secondes

VPS LinuxDès 2,49 €/moisVPS WindowsDès 3,49 €/moisServeur FiveMDès 0,99 €/moisServeur MinecraftDès 1,99 €/mois
VPS & Cloud

Gammes

VPS Linux NVMeAccès root, Debian, Ubuntu, Alma…VPS Windows RDPBureau à distance, licence incluseServeurs dédiésIntel Xeon Gold, ressources exclusivesVPS PterodactylPanel de jeux préinstallé

Réseau et hébergement

Anti-DDoSHébergement webHousingTransit IPVPN

Professionnels

VPS revendeurProgramme revendeur
Solutions

Bots et automatisation

VPS agents IAUn serveur pour vos assistants de code et agents autonomesVPS OllamaVotre IA privée sans GPU, données en FranceVPS bot TelegramPython ou Node.js, toujours joignableVPS bot DiscordMusique, modération, tickets : sans interruptionVPS n8nWorkflows sans limite d'exécutionsVPS VPNUn tunnel chiffré qui sort par la FranceVPS web scrapingCollecte de données planifiée, IP dédiée

Trading

VPS ForexVos robots gèrent les positions la nuitVPS MetaTrader 4Plusieurs terminaux MT4 sur une machineVPS MetaTrader 5Forex, indices et actions dans MT5VPS NinjaTraderFutures et stratégies NinjaScriptVPS prop firmChallenges et comptes financés, terminal toujours en ligneVPS trading AfriqueMetaTrader à Paris, depuis le Maghreb ou l'Afrique de l'OuestVPS RDPBureau à distance Windows, toujours alluméVPS bot de tradingBots crypto open source, clés API protégées

Bureau Windows

VPS Windows 10Pour vos logiciels qui exigent Windows 10VPS Windows 11Le poste Windows récent, accessible partoutVPS SEOCrawls de gros sites sans bloquer votre PCVPS streamingUn studio OBS qui diffuse depuis le datacenterVPS WordPressSites rapides sur disque NVMe
Marketplace

Intelligence artificielle

OllamaDes modèles de langage locaux, sans API externeOpen WebUIUne interface de discussion pour vos modèles OllamaAnythingLLMAssistant IA privé sur vos documents (PDF, sites, notes) : espaces de travail, recherche…LangflowÉditeur visuel Langflow pour construire agents, flux RAG et API d'IA, protégé par votre…FlowiseCréez visuellement vos agents et chatbots IA (LangChain, RAG, outils) avec Flowise, votre…QdrantBase de données vectorielle Qdrant pour vos projets RAG et de recherche sémantique, API…

Trading

MetaTrader 5Terminal MetaTrader 5 officiel (MetaQuotes) installé en mode portable, raccourci sur le…MetaTrader 4Terminal MetaTrader 4 officiel (MetaQuotes) installé en mode portable, raccourci sur le…Pack VPS Forex (MT4 + MT5)MetaTrader 4 et MetaTrader 5 installés ensemble, chacun dans son dossier portable, VPS…NinjaTrader 8Plateforme NinjaTrader 8 avec ses prérequis (.NET 4.8, WebView2) : installée à partir du…FreqtradeRobot de trading crypto open source avec son interface FreqUI, installé en mode…Interactive Brokers TWS / IB GatewayTrader Workstation ou IB Gateway (pour l'API et les robots) d'Interactive Brokers…

Bots et agents

Claude CodeL'agent de code d'Anthropic, dans votre terminalCodex CLIL'agent de code d'OpenAI en ligne de commandeBot TelegramHébergez votre bot Telegram (Python, Node.js ou Bun) : votre code depuis Git ou une…Bot DiscordHébergez votre bot Discord (discord.py, discord.js, Bun…) : votre code depuis Git ou une…OpenClawAssistant IA personnel open source OpenClaw, actif 24 h/24 : discutez avec lui sur…Hermes AgentAgent IA autonome open source de Nous Research, avec mémoire et compétences qui…

Déploiement et automatisation

DockerLe moteur de conteneurs et Docker Composen8nVos automatisations, sans limite d'exécutionsPortainerGérez vos conteneurs Docker depuis le navigateurCoolifyDéployez vos applications depuis Git, sur votre serveurUptime KumaSurveillez vos sites et serveurs, alertes comprises

Sites et bases de données

WordPressLe CMS le plus utilisé, sur une pile Nginx rapideApache + PHP + MySQLServeur web prêt à héberger vos sites : Apache2, PHP et ses extensions courantes, MariaDB…MySQL (MariaDB)Serveur de base de données MariaDB compatible MySQL, avec votre base et votre…PleskPanel d'hébergement Plesk Obsidian installé avec ses composants recommandés : sites…NextcloudVotre cloud de fichiers, agenda et contacts

Réseau et sécurité

WireGuardVotre VPN chiffré, préinstallé en option payanteVaultwardenUn gestionnaire de mots de passe auto-hébergé

Serveurs de jeu

FiveMServeur FiveM (FXServer + txAdmin), MariaDB et phpMyAdmin installés et configurés, sous…MinecraftServeur Minecraft Java Edition clé en main : Paper, Purpur, Fabric, NeoForge, Forge ou…RustServeur Rust (Facepunch) avec LinuxGSM : mises à jour automatiques, redémarrage après…Counter-Strike 2Serveur Counter-Strike 2 dédié avec LinuxGSM (environ 60 Go à télécharger), jeton GSLT…PalworldServeur Palworld dédié avec LinuxGSM : nom, mot de passe, nombre de joueurs et mot de…ValheimServeur Valheim dédié avec LinuxGSM, protégé par mot de passe (exigé par le jeu)…
Gaming

Serveurs de jeux

Serveur FiveMtxAdmin, ESX, QBCoreServeur MinecraftJava, Bedrock, modpacksServeur RustOxide, Carbon, wipesServeur Nova-LifeRP Nova-Life: Amboise

Protection et outils

Anti-DDoS FiveMOutils gratuits
Ressources

Apprendre

DocumentationBlog

Assistance

ContactEngagement SLA
Voir les offres Espace client Peering · AS213941

Sécurité

Fail2ban avancé : protéger Nginx, WordPress et la messagerie

Par Équipe NVHCloud 2026-09-18 Lecture : 4 min

Si vous avez suivi sécuriser SSH, Fail2ban protège déjà votre accès SSH. Mais sur un serveur web, les robots s'attaquent surtout à tout le reste : formulaires de connexion, pages d'administration, fichiers de configuration oubliés. Ce guide étend Fail2ban à Nginx, WordPress et la messagerie, et ajoute un bannissement long pour ceux qui reviennent.

1. Comment Fail2ban décide

Fail2ban assemble trois éléments dans une jail :

  • un filtre, une expression régulière qui reconnaît une tentative malveillante dans un journal ;
  • des seuils : maxretry tentatives dans une fenêtre de findtime déclenchent un bannissement de bantime ;
  • une action, en général une règle de pare-feu qui bloque l'adresse.

Fail2ban fournit des dizaines de filtres prêts à l'emploi dans /etc/fail2ban/filter.d/. Ne modifiez jamais les fichiers .conf fournis : placez vos réglages dans des fichiers .local, qui ne sont pas écrasés par les mises à jour.

2. Une base propre avec liste blanche

Commencez par /etc/fail2ban/jail.local :

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

ignoreip est essentiel : ajoutez-y l'adresse de votre bureau ou de votre serveur de supervision. Sans elle, une série de connexions légitimes rapprochées, comme un script de déploiement qui se reconnecte plusieurs fois, peut vous bannir de votre propre serveur.

3. Le piège du backend

Fail2ban lit soit des fichiers de journaux, soit le journal systemd. SSH écrit dans le journal systemd, surtout sur Debian 12, alors que Nginx écrit dans des fichiers. Si vous mettez backend = systemd dans la section [DEFAULT], les jails Nginx ignorent leur logpath et ne voient jamais rien, sans aucun message d'erreur. Réglez donc le backend par jail : systemd pour SSH, auto pour les services qui écrivent dans des fichiers, comme dans les exemples ci-dessous.

4. Protéger Nginx

Ajoutez à jail.local :

[sshd]
enabled = true
backend = systemd
maxretry = 3
bantime  = 24h
[nginx-http-auth]
enabled = true
backend = auto
port    = http,https
logpath = /var/log/nginx/error.log
[nginx-botsearch]
enabled  = true
backend  = auto
port     = http,https
logpath  = /var/log/nginx/access.log
maxretry = 2
[nginx-limit-req]
enabled = true
backend = auto
port    = http,https
logpath = /var/log/nginx/error.log
maxretry = 10
  • nginx-http-auth bannit les échecs répétés sur les zones protégées par mot de passe Nginx.
  • nginx-botsearch repère les robots qui cherchent des pages d'administration et des scripts connus sur votre site.
  • nginx-limit-req bannit les adresses qui dépassent régulièrement la limite de requêtes de Nginx. Il ne fonctionne que si vous avez configuré une directive limit_req, décrite dans limiter l'impact d'une attaque DDoS.

5. Protéger le formulaire de connexion WordPress

Aucun filtre WordPress n'est fourni. Créez /etc/fail2ban/filter.d/wordpress.conf :

[Definition]
failregex = ^<HOST> .* "POST /wp-login\.php
            ^<HOST> .* "POST /xmlrpc\.php
ignoreregex =

Puis la jail correspondante :

[wordpress]
enabled  = true
backend  = auto
port     = http,https
filter   = wordpress
logpath  = /var/log/nginx/access.log
maxretry = 5
findtime = 10m
bantime  = 6h

Un utilisateur légitime soumet le formulaire une ou deux fois ; un robot, des dizaines. Si vous hébergez plusieurs sites avec des journaux séparés, listez-les tous sur plusieurs lignes dans logpath. Pour la configuration de WordPress elle-même, voir installer WordPress sur un VPS.

6. Protéger la messagerie

Si le serveur reçoit du courrier ou authentifie des utilisateurs en SMTP :

[postfix]
enabled = true
backend = systemd
mode    = aggressive
[postfix-sasl]
enabled = true
backend = systemd
maxretry = 3

Le mode aggressive repère aussi les tentatives de relais et les adresses inexistantes. Un serveur qui ne fait qu'envoyer des notifications n'a pas besoin de ces jails : voir configurer Postfix.

7. Punir les récidivistes

Beaucoup de robots reviennent dès la fin de leur bannissement. La jail recidive lit le propre journal de Fail2ban et bannit pour une semaine toute adresse bannie plusieurs fois en une journée :

[recidive]
enabled  = true
backend  = auto
logpath  = /var/log/fail2ban.log
bantime  = 1w
findtime = 1d
maxretry = 3

8. Tester un filtre avant de l'activer

Un filtre qui ne correspond à rien ne protège rien ; un filtre trop large bannit vos visiteurs. Testez-le sur le vrai journal :

fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/wordpress.conf

La commande indique combien de lignes correspondent. Appliquez ensuite la configuration :

fail2ban-client -t && systemctl restart fail2ban
fail2ban-client status

La première commande vérifie la syntaxe de toute la configuration, la dernière liste les jails actives.

9. Gérer les bannissements

fail2ban-client status wordpress                  # adresses bannies par une jail
fail2ban-client set wordpress unbanip 203.0.113.10 # débannir une adresse
fail2ban-client get sshd ignoreip                 # voir la liste blanche
fail2ban-client banned                            # toutes les adresses bannies

Si vous vous êtes banni vous-même, connectez-vous depuis une autre connexion, par exemple le partage de connexion de votre téléphone, ou par la console de secours, puis débannissez votre adresse et ajoutez-la à ignoreip.

Questions fréquentes

Fail2ban peut-il bloquer mes propres visiteurs ?

Oui, si un filtre est trop large ou un seuil trop bas. Testez chaque filtre avec fail2ban-regex avant de l'activer, gardez des seuils raisonnables et ajoutez vos adresses fixes dans ignoreip. Surveillez aussi le nombre d'adresses bannies dans les premiers jours.

Pourquoi ma jail Nginx ne bannit jamais personne ?

Le plus souvent, backend = systemd est défini dans la section DEFAULT : la jail lit alors le journal systemd au lieu du fichier indiqué dans logpath, où Nginx écrit. Réglez backend = auto sur les jails qui lisent des fichiers, et vérifiez le filtre avec fail2ban-regex.

Fail2ban protège-t-il contre une attaque DDoS ?

Non. Il agit sur des adresses isolées qui répètent des tentatives, en quelques secondes ou minutes. Une attaque distribuée vient de milliers d'adresses et sature la connexion : elle doit être filtrée en amont, sur le réseau de l'hébergeur.

Combien de temps faut-il bannir une adresse ?

Une heure suffit pour la plupart des robots, qui passent à une autre cible. Réservez les bannissements longs à SSH et aux récidivistes, grâce à la jail recidive. Des bannissements très longs pour tout le monde finissent par pénaliser des utilisateurs légitimes dont l'adresse IP a changé de propriétaire.

VPS Linux NVMe

Accès root, Intel Xeon Gold et NVMe, livré en 60 secondes. Dès 2,49 €/mois.