Publié le: 2011-09-30

mod evasive

Apache est un serveur Web. Dans le cas de grosses entreprise il convient de définir une politique de répartition des charges (Load Balancing) afin de pouvoir supporter le nombre de clients et limiter les attaques de grande ampleur sur le service.

Nous allons étudier le paquet mod-evasive (anciennement appelé mod-dosevasive) qui permettra de limiter la charge de votre serveur et permettre ainsi de parer aux attaques de type Denial Of Service

Installation

Afin d’installer mod-evasive tapez la commande :

# Debian
apt-get install libapache-mod-evasive
# Redhat
yum install mod-evasive

Pour pouvoir configurer le module il est nécessaire d’ajouter le fichier de configuration /etc/apache2/conf.d/evasive.

touch /etc/apache2/conf.d/evasive
# ou
echo "" > /etc/apache2/conf.d/evasive

et ensuite éditez le fichier afin d’ajouter le contenu suivant permettant d’utiliser le module :

<ifmodule mod_evasive20.c>
</ifmodule>

Configuration

Pour configurer mod-evasive, il suffit d’ajouter les directives entre les balises ifmodule du fichier /etc/apache2/conf.d/evasive.

Voyons maintenant les diverses options du module.

  • DOSSiteCount: définit le nombre de requêtes autorisées dans un intervalle donné. (Attention n’oubliez pas que si vous utilisez une technologie AJAX il faudra augmenter en conséquence du nombre d’appels)
  • DOSSiteInterval: définit l’intervalle de temps pour DOSSiteCount, en secondes
  • DOSPageCount: définit le nombre de requêtes autorisées sur une même page dans un intervalle donné
  • DOSPageInterval: définit l’intervalle de temps pour DOSPageCount
  • DOSBlockingPeriod: définit l’intervalle de temps pendant lesquelles les IP blacklistées ne pourrons plus ce connecter au site et recevront une erreur 403
  • DOSWhiteList: définit une IP ou plage autorisée, il est judicieux d’autoriser 127.0.0.1.
  • DOSSystemCommand: lance la commande spécifiée lorsque l’IP est ajoutée en Blacklist de mod-evasive
  • DOSEmailNotify: spécifie l’adresse mail à qui envoyer l’alerte de mod-evasive lorsque quelqu’un est bloqué

Exemple de configuration

Voici maintenant quelques exemples de configuration suivant le trafic que vous devrez emmagasiner.

Pour moins de 100 connexions simultanées :

DOSPageCount 100
DOSPageInterval 1
DOSSiteInterval 1
DOSSiteCount 120
DOSBlockingPeriod 30

Pour 100 à 500 connexions simultanées ou si le moyen principal est via une passerelle natée (donc une seule IP) :

DOSPageCount 500
DOSPageInterval 1
DOSSiteCount 1000
DOSBlockingPeriod 20

Pour de plus de 1000 connexions simultanées :

DOSPageCount 2000
DOSPageInterval 1
DOSSiteCount 5000
DOSBlockingPeriod 20

Vous savez désormais gérer le trafic efficacement sur votre Apache. N’oubliez pas d’augmenter la valeur de la directive MaxKeepAliveRequests dans le fichier /etc/apache2/apache2.conf afin de pouvoir supporter le trafic.