CrowdSec – Protection intelligente des serveurs Linux contre les botnets, les attaques brute-force et le scan Internet

Si vous utilisez un serveur Linux avec Nginx, SSH ou WordPress, vous connaissez probablement déjà Fail2Ban. C’est un bon outil, mais il fonctionne localement — il bloque uniquement les adresses IP ayant attaqué votre serveur.

CrowdSec fonctionne de manière totalement différente. Il s’agit d’un système de protection basé sur une réputation IP partagée. Si des milliers de serveurs dans le monde détectent une adresse IP malveillante, votre serveur peut la bloquer avant même qu’une attaque ne soit tentée.

Comment fonctionne CrowdSec ?

  • analyse les journaux système (nginx, ssh, wordpress)
  • détecte les comportements suspects
  • partage les informations sur les IP attaquantes avec d’autres serveurs
  • bloque le trafic au niveau du pare-feu

Résultat ? La majorité des bots et scanners Internet n’atteignent jamais votre serveur Nginx.

Installation de CrowdSec sur Debian / Ubuntu

L’installation de CrowdSec est très simple et disponible directement depuis les dépôts Debian.

Pendant l’installation, CrowdSec :

  • crée une API locale (LAPI)
  • enregistre le serveur dans l’API centrale CrowdSec
  • télécharge les scénarios de sécurité de base

Installation du firewall bouncer

CrowdSec détecte les menaces, mais nécessite un composant d’exécution — appelé bouncer — qui bloque le trafic au niveau du pare-feu.

Par défaut, le bouncer utilise nftables et ajoute automatiquement des règles bloquant les adresses IP malveillantes.

Installation des collections de sécurité

Les collections contiennent des analyseurs de logs ainsi que des scénarios de détection d’attaques.

Rechargez ensuite la configuration :

Configuration des logs Nginx

Pour permettre à CrowdSec d’analyser le trafic HTTP, vous devez indiquer les fichiers de logs Nginx.

Éditez le fichier :

Ajoutez la configuration suivante :

Puis redémarrez le service :

Vérification du fonctionnement de CrowdSec

Statut du service :

Liste des bannissements actifs :

Statistiques :

Résultat final

Après une installation correcte de CrowdSec :

  • le serveur bloque automatiquement les botnets connus
  • les attaques WordPress et brute-force SSH sont arrêtées au niveau du pare-feu
  • Nginx traite beaucoup moins de trafic malveillant
  • la charge CPU et IO du serveur est significativement réduite

CrowdSec peut être considéré comme une évolution de Fail2Ban — un système qui ne réagit pas seulement localement, mais qui exploite une intelligence globale des menaces.

Configuration Fail2Ban pour Nginx – bloquer les scanners et les tentatives d’exploitation sans bloquer l’administration WordPress

Ce guide présente une installation et une configuration complètes de Fail2Ban pour Nginx, conçues pour :

  • bloquer les véritables scanners et tentatives d’exploitation (par exemple les requêtes vers /.env, /.git, /phpmyadmin, etc.),
  • éviter le blocage accidentel des administrateurs (problème fréquent lorsque le bannissement repose uniquement sur les erreurs HTTP),
  • bannir les adresses IP après des activités suspectes répétées,
  • utiliser une courte durée de bannissement (5 minutes) afin de réduire le risque de s’auto-bloquer.

Pourquoi bannir uniquement sur la base des erreurs HTTP peut poser problème

De nombreux guides recommandent de bannir les adresses IP uniquement selon les codes de statut HTTP (4xx/499). En pratique, cela provoque souvent des auto-blocages, car les applications modernes génèrent de nombreuses requêtes (AJAX, panneaux d’administration, reconstruction du cache), ce qui peut entraîner des erreurs HTTP lors d’une utilisation normale.

Cette configuration adopte une approche plus sûre :

  • les chemins d’exploitation sont toujours considérés comme suspects,
  • les erreurs HTTP ne sont comptabilisées que lorsque la requête ne contient pas d’en-tête Referer (comportement typique des scanners),
  • les User-Agents malveillants connus sont pris en compte.

Étape 1 : Installer Fail2Ban

Installez Fail2Ban :

Activez et démarrez le service :

Vérifiez son fonctionnement :

Étape 2 : Créer le filtre nginx-secure

Créez le fichier de filtre :

Collez la configuration suivante :

Étape 3 : Créer le jail nginx-secure

Créez le fichier de configuration du jail :

Collez la configuration suivante :

Étape 4 : Redémarrer Fail2Ban

Étape 5 : Vérifier l’intégration avec le pare-feu

Vérifiez que la chaîne Fail2Ban existe :

Test depuis une machine externe

Test du chemin d’exploitation :

Test de la logique des erreurs sans Referer :

Après plusieurs requêtes suspectes, l’adresse IP sera bannie pendant 5 minutes.

Vérifier les adresses IP bannies

Débannir une adresse IP

Retirer un bannissement manuellement :

Résumé

  • bloque les véritables scanners et tentatives d’exploitation,
  • réduit le risque d’auto-blocage des administrateurs,
  • utilise un bannissement court de 5 minutes,
  • compatible avec iptables-nft,
  • facile à tester et à débannir.

Mise à niveau automatique Debian 12 → Debian 13 avec mise à jour optionnelle de PHP et nginx

Mise à niveau Debian 12 vers Debian 13

La mise à niveau de Debian de la version 12 (bookworm) vers 13 (trixie) est une opération qui doit être effectuée de manière reproductible et sans surprises, en particulier sur les serveurs et les conteneurs (par exemple Proxmox LXC ou machines virtuelles). Ci-dessous, vous trouverez un guide simple ainsi que des commandes prêtes à l’emploi pour télécharger et exécuter le script de mise à niveau.

Avant de lancer la mise à niveau : créez une sauvegarde ou un snapshot. Dans Proxmox, la meilleure option est vzdump ou un snapshot. Sur bare metal, sauvegardez au minimum /etc, les applications et les bases de données.

  • Proxmox LXC / VM : sauvegarde avec vzdump ou snapshot.
  • Serveur : sauvegarde de /etc, /var/www, bases de données (MySQL/PostgreSQL) et certificats SSL.

Téléchargement du script :

https://soban.pl/bash/upgrade_to_debian13.sh

1) Sauvegarde avant la mise à niveau (exemples)

Exemple de sauvegarde dans Proxmox (exécuter sur l’hôte Proxmox, remplacez CTID/VMID) :

Exemple de sauvegarde simple du système de fichiers sur un serveur (cela ne remplace pas un snapshot complet, mais c’est mieux que rien) :

2) Télécharger le script (wget / curl)

La méthode la plus simple consiste à utiliser wget. Si la commande wget ne fonctionne pas malgré l’installation du paquet, utilisez le chemin complet /usr/bin/wget.

Variante A (wget standard) :

Variante B (wget avec chemin complet – utile si PATH est incorrect) :

Variante C (curl) :

3) Aide du script (paramètres)

Avant d’exécuter la mise à niveau, affichez la liste des paramètres disponibles et des exemples d’utilisation :

4) Mise à niveau Debian 12 → Debian 13 (système uniquement)

Si vous utilisez actuellement Debian 12 (bookworm) et souhaitez effectuer la mise à niveau du système :

Le script sauvegarde /etc/apt/sources.list, remplace les dépôts par trixie, exécute apt update et apt full-upgrade, puis autoremove et autoclean.

5) Détection automatique PHP/nginx et mise à jour si nécessaire

Si le conteneur ou la VM utilise une stack web et que vous souhaitez que le script détecte automatiquement PHP (nginx + fastcgi_pass) et mette à jour PHP et nginx si nécessaire :

6) Forcer la mise à niveau de PHP et nginx (correction du socket PHP-FPM)

Si vous souhaitez forcer l’installation ou la mise à niveau de PHP et corriger automatiquement la configuration nginx pour utiliser le bon socket PHP-FPM :

Cette commande installe PHP 8.2 (php-fpm et modules courants) et remplace les anciens chemins de socket PHP-FPM dans nginx par /run/php/php8.2-fpm.sock. Ensuite, elle exécute nginx -t et recharge ou redémarre les services.

7) Déjà sur Debian 13 ? Mode PHP/nginx uniquement

Si le système est déjà sous Debian 13 (trixie) et que vous souhaitez uniquement mettre à jour PHP et nginx sans modifier les dépôts système :

8) Mode test (dry-run)

Si vous souhaitez voir ce que le script fera sans effectuer de modifications :

9) Diagnostic : wget installé mais ne fonctionne pas

Si apt indique que wget est installé mais que le shell affiche command not found, il s’agit généralement d’un problème PATH. La solution la plus simple est d’utiliser le chemin complet : /usr/bin/wget.

Résumé

Cette solution permet de mettre à niveau Debian 12 → Debian 13 et de corriger automatiquement les problèmes courants PHP/nginx après la mise à niveau (socket PHP-FPM, test de configuration nginx, redémarrage des services). Créez toujours une sauvegarde avant la mise à niveau et commencez par exécuter --help.

Script : https://soban.pl/bash/upgrade_to_debian13.sh

iftop comme un bon outil de surveillance du trafic réseau

iftop est un outil en ligne de commande permettant de surveiller la bande passante réseau en temps réel. Il affiche une liste continuellement mise à jour des connexions réseau ainsi que la quantité de données transférées entre elles. Les connexions sont présentées sous forme de tableau et peuvent être triées selon l’utilisation de la bande passante.

iftop propose différentes options de filtrage permettant de limiter l’affichage à des hôtes, réseaux ou ports spécifiques. Il prend en charge IPv6 et peut afficher les adresses IP source et destination, les numéros de ports ainsi que les protocoles utilisés.

Cet outil est particulièrement utile pour surveiller le trafic en temps réel et identifier les services ou machines consommant le plus de bande passante. Il peut également aider à détecter des problèmes de performance réseau et faciliter le dépannage.

En résumé, iftop est un outil léger mais puissant, constituant un excellent complément à la boîte à outils de tout administrateur système ou réseau.

L’un des outils de surveillance réseau que j’utilise le plus est iftop. Il devient particulièrement utile lorsque la liaison réseau est saturée. En pratique, il peut aussi aider à détecter des schémas de trafic anormaux, notamment des attaques de type DoS. Dans l’exemple ci-dessous, je vais transférer un fichier volumineux vers une machine distante avec une limitation de bande passante et observer le trafic à l’aide de iftop.

Commençons par installer iftop sur la machine locale (dans cet exemple, Kali Linux) :

Installation de iftop sous Kali Linux

La distribution importe peu — iftop est disponible dans la plupart des dépôts Linux, notamment sous Debian.

Installons maintenant iftop sur la machine distante (Debian Linux) :

Installation de iftop sous Debian Linux

Pour commencer la surveillance du trafic réseau, exécutez iftop avec les paramètres -PpNn :

iftop en cours de surveillance du trafic

Comme je suis connecté à la machine distante via SSH, je peux voir ma session SSH active dans la liste des connexions.

Revenons maintenant à la machine locale et créons un fichier volumineux :

Après avoir créé le fichier de 1 Go, transférons-le vers la machine distante avec une limitation de bande passante :

Transfert de fichier avec limitation de débit via scp

L’option -l 800 limite le débit à 800 Kbit/s. Pour convertir en KB/s, il faut diviser par 8, soit environ 100 KB/s.

Trafic sortant affiché dans iftop
Trafic entrant affiché dans iftop

De cette manière, il est possible d’observer à la fois le trafic sortant et entrant en temps réel. Bien que simple, iftop offre une excellente visibilité sur l’activité réseau en direct.

Lors d’attaques par force brute, on observe généralement un grand nombre de connexions de courte durée. En revanche, une attaque DoS vise à saturer la bande passante, ce qui se traduit par un trafic entrant élevé. Si l’augmentation du trafic est légitime, il est possible d’envisager une limitation du débit — des outils comme iptables peuvent être utilisés à cet effet.

Analyse SSL et suites de chiffrement avec Nmap sous Debian 11

Analyse SSL et suites de chiffrement avec Nmap sous Debian 11

Dans cet exemple, nous utilisons Debian 11 (Bullseye). Commençons par vérifier la version du système :

Nmap est l’un des outils les plus puissants pour l’analyse réseau et les audits de sécurité. Il permet de scanner les ports ouverts, détecter les services actifs, identifier les versions logicielles et analyser les protocoles SSL/TLS ainsi que les suites de chiffrement supportées par un serveur.

L’installation sous Debian 11 est simple :

Une fois installé, nous pouvons analyser un serveur HTTPS distant. Par exemple :

L’option -sV active la détection de version des services, tandis que --script ssl-enum-ciphers analyse les versions TLS et les suites de chiffrement disponibles. Cela permet de vérifier :

  • les versions TLS activées (TLS 1.0, 1.1, 1.2, 1.3),
  • la présence de chiffrements faibles comme 3DES,
  • les vulnérabilités cryptographiques potentielles.

Nmap est plus lent que des outils comme sslscan, mais il fournit des informations très détaillées, particulièrement utiles pour tester une infrastructure interne.

TLS 1.0 :

Analyse TLS 1.0 avec Nmap

TLS 1.1 :

Analyse TLS 1.1 avec Nmap

TLS 1.2 :

Suites de chiffrement TLS 1.2 détectées par Nmap

L’élément essentiel lors d’une analyse SSL/TLS est de vérifier l’absence de chiffrements faibles ou obsolètes.

Si vous voyez le message suivant :

« 64-bit block cipher 3DES vulnerable to SWEET32 attack »

cela signifie que le serveur prend encore en charge 3DES, vulnérable à l’attaque SWEET32. En environnement de production, ces chiffrements doivent être désactivés.

Pour analyser un site public, vous pouvez également utiliser :

https://www.ssllabs.com/ssltest/

Cependant, pour des serveurs internes, des environnements de test ou une infrastructure privée, utiliser Nmap directement depuis Debian reste une solution efficace.

Une analyse régulière SSL/TLS permet de maintenir un niveau de sécurité élevé et d’éliminer les protocoles obsolètes ainsi que les chiffrements faibles.