[Sécurité] mod_security, l'arme absolue.

ViPHP
ViPHP | 1380 Messages

20 mars 2006, 15:28

Si, comme moi, vous perdez le sommeil à chaque fois que vous analysez votre access.log d'Apache, ce qui suit est pour vous. :afraid:

Malgré la puissance de mod_rewrite, on n'arrive pas toujours à ses fins quand il s'agit de protéger son serveur d'attaques de tout poil.

Par exemple, mod_rewrite, s'il peut vérifier une uri, sera impuissant à analyser et éventuellement rejeter le contenu d'un POST qui pourrait contenir du code malicieux du style injection sql et autres rootkit.

J'ai toujours rêvé de maîtriser suffisamment le C pour être capable d'écrire un module qui filtrerait les requêtes http avant leur traitement dans le serveur http.

Ce module existe et est remarquable! Développé par Ivan Ristic auteur de Apache Security mod_security est un module complémentaire à Apache. Il fonctionne un peu comme iptables pour les datagrammes IP, dans le sens où chaque requête http est capturée avant qu'elle ne soit envoyée au serveur Apache. Elle est analysée et filtrée.

En fonction du filtre et du choix du webmaster, une ou plusieurs actions seront imposées à la requête (allow, deny, pass, exec, log, pause, redirect etc...).

mod_security permet même de filtrer la réponse du serveur (output filtering) !

La construction d'une règle de filtrage se fait, comme pour le rewriting, grâce à l'utilisation des regex. Une connaissance de base de celles-ci est donc requise pour qui souhaiterait faire ses propres règles.

Pour les autres, il existe des bibliothèques de règles (plusieurs milliers!) sur ce site:
http://www.gotroot.com/tiki-index.php?p ... rity+rules

Ou bien celui-ci sur le site du concepteur:
http://www.modsecurity.org/download/rul ... neral.conf

Pour ceux qui craindraient une perte de performance, ce filtrage est débrayable, par serveur, répertoire et, depuis peu, par type de requête.

Source: http://www.modsecurity.org/

Pour les heureux utilisateurs de Debian:
apt-get install libapache2-mod-security
ripat

ViPHP
ViPHP | 1380 Messages

21 mars 2006, 15:31

Petit update sur mes tests.
  • Pour les distro Debian, éviter le paquet binaire Debian officiel, toujours à la traîne avec la version 1.8.7-1 (même en testing et unstable). Soit prendre ce binaire (pas testé), soit compiler les sources de la dernière version stable 1.9.2 en module Apache Dynamique (dso):
    • avec l'utilitaire apxs (APache eXtenSion tool) pour apache 1 (packet Debian apache-dev)

      Code : Tout sélectionner

      apxs -cia mod_security.c
      Attention, pour Apache 1 lire ceci:
      http://www.modsecurity.org/blog/archive ... rform.html
    • avec l'utilitaire apxs2 pour apache 2 (packet Debian apache2-threaded-dev)

      Code : Tout sélectionner

      apxs2 -cia mod_security.c
    • Ne pas oublier de copier le module mod_security.so dans votre répertoire de modules dso et... loader le module bien sûr (fichier config Apache)
  • Pour les autres disto Linux, à vous de vérifier les binaires disponibles. Ou bien compilez le dso comme expliqué ci-dessus.
  • Pour windows, je suppose que les utilitaires apxs existent également. Il faudrait un bonne âme pour tester (pleeeeease). On pourrait ainsi compléter ce post et éventuellement en faire un tuto ou le mettre en faq.
  • La très complète bibliothèque de règles de filtrage ne marche que pour la version > 1.9.x
  • Lire l'article de O'Reilly sur les changements de la version 1.9.x
  • J'ai trouvé certains posts se plaignant de la surcharge CPU et mémoire de mod_security avec le set complet de Got Root. Rien ne vous empêche de nettoyer! Il n'est pas utile de garder les règles pour, par exemple, le CMS Drupal ou le forum PunBB si vous ne l'avez pas installé!. Idem pour les banned IP (badips.conf 9000 lignes!!). Pour les anti-spam blacklist.conf (7000 lignes, vaut le coup d'oeil!) et blacklist2.conf (500 lignes), à vous de voir.

    Liste des fichiers de règles de filtrage:

    Code : Tout sélectionner

    apache2-rules.conf badips.conf blacklist2.conf blacklist.conf exclude.conf jitp.conf proxy.conf recons.conf rootkits.conf rules.conf useragents.conf
  • Toute requête interceptée (et rejetée) est mise en log pour correction des faux rejets (false positives/negatives).
ripat

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

21 mars 2006, 16:17

mod_security pour Apache sous Windows peut se télécharger sur :

- http://www.apachelounge.com/download/
à l'heure actuelle la 1.9.2 pour Apache 2.0.x, et la 1.9.2 pour Apache 2.2.x

- http://www.gknw.at/development/apache/
plus de versions, mais toujours pas pour Apache 1.3.x

Je n'ai fait que jeter un oeil, mais apparemment il semble que le module n'est dispo sous Windows qu'avec Apache 2. L'outil apxs n'existe pas pour Windows.

Un bémol : il est possible de tout compiler sous Windows, bien que je n'ai jamais essayé. On dispose alors sans doute de plus de possibilités.