Outils personnels

Apache mod security, mod evasive : limitation du traffic, protection anti-DDOS : Différence entre versions

De wikiGite

Ligne 16 : Ligne 16 :
 
  <IfModule mod_security2.c>
 
  <IfModule mod_security2.c>
 
   SecRuleEngine Off
 
   SecRuleEngine Off
 +
</IfModule>
 +
 +
Ou au contraire, on peut désactiver le module par défaut, et ne l'activer que sur les sites qu'on souhaite. Dans /etc/httpd/conf.d/mod_security.conf mettre SecRuleEngine à Off, et dans chaque configuration de vhost mettre le bloc :
 +
<IfModule mod_security2.c>
 +
  SecRuleEngine '''On'''
 
  </IfModule>
 
  </IfModule>
  

Version du 7 août 2013 à 14:52

Mod_security est un "web application firewall" (WAF) et un IDS/IPS pour les applications web. Il surveille le traffic HTTP en temps réel et protège les applications web des attabques "brute force". Il utilise les règles OWASP (Open Web Application Security Project). Il filtre et modifie la réponse renvoyé par le serveur web (exemple, erreur 404 ou 500).

Mod_evasive est un module Apache pour contrer les attaques DoS (Denial of Service). Il est par exemple capable de détecter lorsqu'un utilisateur demande un trop grand nombre de pages sur un site web, sur un délai de temps très court, et de bloquer son IP par iptables, par exemple (et par défaut, d'ailleurs :) ).

Installation

Sur CentOS/BlueOnyx : Déclarer le dépôt EPEL (Dépôts_complémentaires), puis

yum install --enablerepo=epel mod_evasive mod_security

Configuration basique

mod_security

La configuration mod_security se trouve dans /etc/httpd/conf.d/mod_security.conf, dans modsecurity.d/*.conf et modsecurity.d/activated_rules/*.conf.

Si un site pose vraiment problème (exemple : MediaWiki n'aime pas du tout mod_security, et c'est réciproque), ajouter dans la configuration du vhost (sur blueonyx, dans siteXX.include):

<IfModule mod_security2.c>
  SecRuleEngine Off
</IfModule>

Ou au contraire, on peut désactiver le module par défaut, et ne l'activer que sur les sites qu'on souhaite. Dans /etc/httpd/conf.d/mod_security.conf mettre SecRuleEngine à Off, et dans chaque configuration de vhost mettre le bloc :

<IfModule mod_security2.c>
  SecRuleEngine On
</IfModule>

mod_evasive

La configuration de Mod_evasive se trouve dans le fichier /etc/httpd/conf.d/mod_evasive.conf. Exemple de configuration :

<IfModule mod_evasive20.c>
  DOSHashTableSize 3097
  # Pas plus de 2 pages par seconde, 150 requêtes (images, css, ...) par site
  DOSPageCount 2
  DOSPageInterval 1
  DOSSiteCount 150
  DOSSiteInterval 1
  # Periode en seconde pendant laquelle on bloque le client
  DOSBlockingPeriod 600
  # Et par exemple :
  DOSWhitelist 66.249.65.*
  DOSWhitelist 66.249.66.*
  DOSWhitelist 66.249.71.*
</IfModule>

On relance le serveur Apache pour prendre en compte les modifications :

/etc/init.d/httpd restart

TIPS

Tests

Pour tester le module, on peut mettre des valeurs assez faibles et regarder ce qui se passe. Normalement, toutes les images des sites visités ne s'afficheront pas et le dossier /tmp devrait se remplir d'IP blacklistées.

Paramètres

  • DOSHashTableSize : Taille de la table hash, plus grande est la valeur, plus de mémoire sera necessaire pour parcourir la table, plus la valeur sera petite, plus le parcourt de la table sera rapide. Laissez la valeur par défaut.
  • DOSPageCount Nombre de requête pour une même page dans l'intervale DOSPageInvernal, au delà, l'IP est bloquée.
  • DOSSiteCount Pareil qu'au dessus mais pour un site au lieu d'une page.
  • DOSPageInterval Intervalle du nombre de pages en secondes.
  • DOSSiteInterval Intervalle du nombre de sites par secondes.
  • DOSBlockingPeriod Période en seconde pendant laquelle l'IP sera bloquée (vous recevrez un forbidden).
  • DOSWhitelist Permet de mettre des IP en liste blanche, dans notre exemple ci-dessus, ce sont des IP du bot Google.
  • DOSSystemCommand Permet d'exécuter une commande, ici on peut lancer un script iptables

(exemple : DOSSystemCommand "sudo iptables -A INPUT -s %s -j DROP")