GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Défendez-vous contre les DoS et DDoS sur Apache avec mod_evasive

Présentation

Le module mod_evasive est un module de services Web Apache qui aide votre serveur à continuer de fonctionner en cas d'attaque. Un type courant de cyberattaque se présente sous la forme d'un déni de service (DoS), d'un déni de service distribué (DDoS) ou d'une tentative de force brute visant à submerger votre sécurité.

La nature de ces attaques consiste à utiliser plusieurs ordinateurs différents pour effectuer des requêtes répétées contre votre serveur. Cela fait que le serveur manque de puissance de traitement, de mémoire, de bande passante réseau et ne répond plus.

Ce guide vous guidera à travers la configuration et l'installation de mod_evasive pour vous protéger contre DoS et DDoS.

Prérequis

  • La pile LAMP (Linux, Apache, MySQL, PHP) installée et configurée
  • Accès à un compte utilisateur avec sudo ou privilèges root
  • Un serveur de messagerie fonctionnel (pour les alertes par e-mail)

Comment fonctionne Apache mod_evasive

L'Apache mod_evasive L'utilitaire fonctionne en surveillant les demandes de serveur entrantes. L'outil surveille également les activités suspectes d'une adresse IP, telles que :

  • Plusieurs requêtes pour la même page en une seconde.
  • Plus de 50 requêtes simultanées par seconde.
  • Demandes effectuées alors que l'adresse IP est temporairement sur liste noire.

Le module envoie une erreur 403 si l'une de ces choses se produit. Par défaut, cela inclut également une période d'attente de 10 secondes sur la liste noire. Si l'adresse IP à l'origine de la demande réessaye dans cette fenêtre de 10 secondes, le temps d'attente augmente.

mod_evasive vous aide à vous défendre contre ce type d'attaques grâce à la détection et à la gestion du réseau.

Étapes d'installation de l'utilitaire Apache mod_evasive

Étape 1 :Installer l'utilitaire de serveur Web Apache

Avant d'installer l'utilitaire, mettez à jour le référentiel de packages avec la commande correspondant à votre distribution Linux :

Debian / Ubuntu :

sudo apt update

RedHat / CentOS :

sudo yum update

Autorisez le système à actualiser et à mettre à jour vos listes de logiciels.

Ensuite, installez un utilitaire d'assistance :

Debian/Ubuntu :

sudo apt install apache2-utils

RedHat/CentOS :

sudo yum install httpd-devel

La dernière section de la sortie ressemble à ceci :

Cet utilitaire est requis pour l'installation demod_evasive .

Étape 2 :Installez mod_evasive

Debian/Ubuntu

Pour installer le mod_evasive module sur Debian/Ubuntu, entrez ce qui suit :

sudo apt install libapache2-mod-evasive

Lorsque vous obtenez une invite, sélectionnez OK et choisissez votre configuration.

En cas de doute, sélectionnez Pas de configuration ou Local uniquement.

CentOS/RedHat

Pour installer le module mod_evasive sur RedHat / CentOS :

Ajoutez le référentiel EPEL :

sudo yum install epel-release

Et puis, entrez :

sudo yum install mod_evasive

Laissez le processus se terminer.

Étape 3 :Configurer mod_evasive

Comme la plupart des progiciels Linux, mod_evasive est contrôlé par un fichier de configuration. Effectuez les modifications suivantes dans le fichier de configuration comme première étape pour empêcher les attaques DDoS :

1. Utilisez un éditeur de texte de votre choix avec les commandes suivantes :

Debian / Ubuntu :

sudo nano /etc/apache2/mods-enabled/evasive.conf

RedHat / CentOS :

sudo nano /etc/httpd/conf.d/mod_evasive.conf

2. Recherchez l'entrée suivante :

#DOSEmailNotify        [email protected]

Supprimez le # signer, puis remplacer [email protected] avec votre adresse e-mail réelle. Utilisez un e-mail que vous consultez régulièrement - c'est là que l'outil enverra des alertes.

3. Supprimez la balise de commentaire des entrées suivantes, de sorte que le fichier journal ressemble à ceci :

DOSHashTableSize 3097

DOSPageCount 2

DOSSiteCount 50

DOSPageInterval 1

DOSSiteInterval 1

DOSBlockingPeriod 10

DOSEmailNotify [email protected]

DOSLogDir "/var/log/apache2/"

4. Enregistrez le fichier et quittez. Rechargez le service Apache en saisissant ce qui suit :

Debian / Ubuntu :

sudo systemctl reload apache2

RedHat / CentOS :

sudo systemctl restart httpd.service

Tester mod_evasive

Vérifions maintenant que le module fonctionne correctement.

Dans cet exemple, utilisez le test.pl script pour tester mod_evasive.

Le script se trouve à :/usr/share/doc/libapache2-mod-evasive/examples/test.pl .

Utilisez la commande suivante pour exécuter le script :

perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl

La sortie doit renvoyer ce message :

Paramètres et réglages

Il existe de nombreux paramètres mod_evasive que vous pouvez configurer :

  • DOSSystemCommand : Tout d'abord, vous avez peut-être remarqué que cette option a été laissée désactivée en tant que commentaire. Cette commande vous permet de spécifier une commande système à exécuter lorsqu'une adresse IP est ajoutée à la liste noire. Vous pouvez l'utiliser pour lancer une commande pour ajouter une adresse IP à un pare-feu ou à un filtre IP.
  • DOSHashTableSize : Augmentez cette valeur pour les serveurs Web plus occupés. Cette configuration alloue de l'espace pour exécuter les opérations de recherche. L'augmentation de la taille améliore la vitesse au détriment de la mémoire.
  • DOSPageCount : Le nombre de requêtes pour une page individuelle qui déclenche la mise sur liste noire. Ceci est défini sur 2, ce qui est faible (et agressif) - augmentez cette valeur pour réduire les faux positifs.
  • DOSSiteCount : Le nombre total de requêtes pour le même site par la même adresse IP. Par défaut, cette valeur est définie sur 50. Vous pouvez augmenter la valeur jusqu'à 100 pour réduire les faux positifs.
  • DOSPageInterval : Nombre de secondes pour DOSPageCount . Par défaut, il est réglé sur 1 seconde. Cela signifie que si vous ne le modifiez pas, demander 2 pages en 1 seconde mettra temporairement une adresse IP sur liste noire.
  • DOSSiteInterval : Similaire à DOSPageInterval , cette option spécifie le nombre de secondes que DOSSiteCount moniteurs. Par défaut, il est réglé sur 1 seconde. Cela signifie que si une seule adresse IP demande 50 ressources sur le même site Web en une seule seconde, elle sera temporairement mise sur liste noire.
  • DOSBlockingPeriod : La durée pendant laquelle une adresse IP reste sur la liste noire. Réglé sur 10 secondes par défaut, vous pouvez le remplacer par la valeur de votre choix. Augmentez cette valeur pour conserver les adresses IP bloquées dans le délai d'attente pendant une période plus longue.
  • DOSLogDir : Par défaut, ceci est configuré pour écrire les journaux dans /var/log/mod_evasive. Ces journaux peuvent être examinés ultérieurement pour évaluer le comportement du client.

Vous pouvez créer un nouveau répertoire pour enregistrer ces journaux d'accès apache. Assurez-vous de changer le propriétaire en Apache, puis mettez à jour l'emplacement dans cette entrée :

sudo mkdir /var/log/apache/mod_evasive
sudo chown -R apache:apache /var/log/apache/mod_evasive
sudo nano /etc/apache2/mods-enabled/evasive.conf
DOSLogDir "/var/log/apache/mod_evasive"

Adresses IP sur liste blanche : Cette option n'est pas incluse dans le evasive.conf f fichier par défaut.

Ouvrez à nouveau le fichier pour le modifier, puis ajoutez la ligne suivante :

DOSWhitelist 192.168.0.13

DOSWhitelist 192.168.0.*

Remplacez l'adresse IP par celle que vous souhaitez ajouter à la liste blanche. En outre, vous ne devez indiquer qu'une seule entrée par ligne . Ceci est généralement utilisé avec un client de confiance qui échange beaucoup de données avec votre site Web.

Cet outil est bon pour détecter les bots et les scripts. Si vous souhaitez autoriser des bots ou des scripts, vous pouvez les ajouter à la liste blanche pour empêcher ces bots et scripts de déclencher une action de liste noire.

Assurez-vous d'enregistrer le fichier et de quitter. Ensuite, rechargez votre service Apache avant de tester l'une de ces options.


Ubuntu
  1. Défendez-vous contre les DoS et DDoS sur Apache avec mod_evasive

  2. Sécurisez Apache avec Lets Encrypt sur Ubuntu 18.04

  3. Comment installer et configurer Nextcloud avec Apache sur Ubuntu 18.04

  4. Comment installer Joomla avec Apache sur Ubuntu 18.04

  5. Configuration d'Apache 2.4 avec Fastcgi sur Ubuntu 16.04 - Que dois-je faire avec Php7.0-fpm.conf ?

Installer WordPress sur Ubuntu 20.04 avec Apache, MariaDB, PHP7.4 (LAMP)

Comment installer WordPress 4.7 sur Ubuntu 16.04 avec Apache, MariaDB, PHP7

Comment installer plusieurs versions de PHP avec Apache sur Ubuntu 18.04 et 16.04

Comment installer Apache avec Let's Encrypt SSL sur Ubuntu 20.04 LTS

Comment installer Apache avec PHP-FPM sur CentOS 8

Comment sécuriser Apache avec Let's Encrypt sur Ubuntu 20.04