System-Linux

Aller au contenu | Aller au menu | Aller à la recherche

Compilation Installation et Configuration de ModSecurity

Modsecurity est un module complémentaire pour apache.

Ce module permet d'augmenter le niveau de sécurité d'un serveur web Apache ou d'autres serveurs si on l'utilise avec Apache en mode proxy. Modsecurity agit comme un parefeu applicatif embarqué dans Apache.

Il permet ainsi de protéger des applications web contre des attaques classiques injection SQL, Cross Site Scripting etc...

La version 2 de ModSecurity est composée de trois projets :

- ModSecurity - ModSecurity Core Rules - ModSecurity Console

Le premier est le moteur, c'est-à-dire le module Apache. Le second est un ensemble de règle de filtrage (un peu comme les règles pour Snort) le troisième une console permettant de surveiller le filtrage effectué via une interface http.

Qu'est-ce que c'est ?

ModSecurity 2 est une extension Apache qui permet d'analyser les requêtes HTTP, et de détecter certaines attaques potentielles sur les applications Web qu'Apache peut héberger ou qu'Apache peut protéger en mode reverse-proxy.

En clair, c'est un firewall pour les applications Web dit WAL.

Ce logiciel open-source est donc une bonne première protection pour les applications Web qui sont toujours potentiellement vulnérables.

Le contexte de déploiement et de fonctionnement de l'application Web va jouer sur les paramètres de configuration de l'extension ModSecurity.

On peut alors faire sois même et très finement les paramètres pour bloquer toute requête jugée illicite vis à vis du serveur Web, mais c'est un travail assez long qui nécessite de bien connaître les applications à protéger.

Nous allons juste voir comment l'installer simplement sur un serveur ainsi que ModSecurity-console et l'agent Mlogc (sensor) pour la remonté des logs.

ModSecurity à quelques dépendances à satisfaire qui sont les suivantes :

  • pcre-devel
  • apr-devel
  • apr-util-devel
  • et surtout libxml2 et libxml2-devel

Compilation :

cd /opt/SOURCES
wget modsecurity-apache_2.5.2.tar.gz
tar -zxf modsecurity-apache_2.5.2.tar.gz
cd modsecurity-apache_2.5.2/apache2
./configure --with-apxs=/opt/httpd228/bin/apxs
make && make install

Petit mise à jour pour la ligne de compilation :

./configure --with-apxs=/opt/httpd2211/bin/apxs --without-lua --with-apr=/usr/local/apr/ --with-apu=/usr/local/apr 
make 
make test 
make install
make mlogc

il est possible de faire le binaire mlogc (agent) en meme temps que modsecurity (make mlog).

Configuration :

cd ..
mv rules /etc/httpd/
vi /etc/httpd/rules/modsecurity_crs_10_config.conf    
    SecServerSignature "IIS"
    SecAuditLog /var/log/httpd/modsec_audit.log
    SecDebugLog             /var/log/httpd/modsec_debug.log

vi /etc/httpd/conf/httpd.conf et rajouter :


LoadModule security2_module modules/mod_security2.so

# MODSECURITY
Include /etc/httpd/rules/*.conf

Mise à jour des rules :

Pour l'instant elle doit se faire à la main, en téléchargent les mises à jour sur le site et en les installant , à l'avenir un serveur de mises à jour sera mit en place preuve en est le script présent dans les sources dans le répertoire tools : rules-updater.pl

Modsecurity-Console :

Elle peut être installée sur un autre poste que celui ou se trouve modsecurity et apache2.

Le plus gros à faire c'est l'installation de java : à télécharger sur le site de SUN ---> http://java.sun.com/javase/downloads/index.jsp

jdk-6u11-linux-X.bin, X selon votre architecture.

cp jdk-6u4-linux-i586.bin /opt
cd /opt
chmod +x jdk-6u11-linux-i586.bin
./jdk-6u11-linux-i586.bin
rm -rf jdk-6u11-linux-i586.bin
mv jdk1.6.0_XX/ java
export JAVA_HOME=/opt/java

Vous pourrez trouver à cette url un lien pour télécharger la console :

https://bsn.breach.com/downloads/modsecurity-console/

wget modsecurity-console_1_0_5_unix.tar.gz

Désarchivage :

cd /opt
tar -xvzf modsecurity-console_1_0_5_unix.tar.gz
cd modsecurity-console

Lancer modsecurity-console :

cd bin
./modsecurity-console start

Il devrait trouver java tout seul comme un grand.

Fichier de conf dans /opt/modsecurity-console/etc/console.conf

Penser à changer les ports par defaut et les passwords

Pour redémarrer modsecurity-console et prendre en compte vos modifications du console.conf :

./modsecurity-console stop
killall java
./modsecurity-console start

Mise en place du sensors/agent Mlogc, agent de remontées pour Modsecurity :

NOTE: depuis peu les sources de mlogc sont dans celle de modsecurity.

Dépendances : curl et curl-devel

https://bsn.breach.com/downloads/mlogc/

wget  mlogc-src_1.4.5.tar.gz
tar –xvzf  mlogc-src_1.4.5.tar.gz
cd mlogc-src_1.4.5
make

On obtient un binaire nommé mlogc.

le mettre dans /opt/mlogc145 pas oublier de faire le lien symbolique

cd /opt
ls –n mlogc145 mlogc

Fichier de configuration de mlogc :

cp -a /opt/SOURCES/mlogc-src_1.4.5/mlogc-default.conf /etc/mlogc.conf

Bien suivre les modifications à faire dans ce fichier et dans celui de modsecurity qui se nomme :

/etc/httpd/rules/modsecurity_crs_10_config.conf

Les modifs à faire sont dans le fichier INSTALL

/opt/SOURCES/mlogc-src_1.4.5/INSTALL

Petite histoire de licence

Il vous faudra créer un compte sur le site : https://bsn.breach.com/account/login.php pour valider votre licence.

Script d'init pour modsecurity

Pour le passer facilement de Off à DetectOnly ou en mode Actif.

#!/bin/bash

NAME_FILE="/opt/httpd/rules/modsecurity_crs_10_config.conf"
ETAT=$(grep -R "SecRuleEngine" /opt/httpd/rules/modsecurity_crs_10_config.conf | cut -d " " -f2)

case $1 in
start)
        echo "Modsecurity Mode Actif"
        sed -i 's/SecRuleEngine Off/SecRuleEngine On/g' $NAME_FILE
        sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/g' $NAME_FILE
        service httpd reload
;;
stop)
        echo "Modsecurity Mode Inactif"
        sed -i 's/SecRuleEngine On/SecRuleEngine Off/g' $NAME_FILE
        sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine Off/g' $NAME_FILE
        service httpd reload
;;
passif)
        echo "Modsecurity Mode DetectionOnly"
        sed -i 's/SecRuleEngine On/SecRuleEngine DetectionOnly/g' $NAME_FILE
        sed -i 's/SecRuleEngine Off/SecRuleEngine DetectionOnly/g' $NAME_FILE
        service httpd reload
;;
status)
        echo "Modsecurity est en mode $ETAT"
;;
*)
        echo "usage: $0 {start:stop}"
        exit 1
;;
esac
Par GanGan | le vendredi, décembre 26 2008 08:00

Commentaires

1. rene

mardi, janvier 6 2009 | 18:07

Merci pour ces infos.
J'avais utilisé ce module avec ses règles de bases mais il est bloquant pour pas mal d'opérations d'administration du cms joomla.
J'ai donc du me passer de ses services car je n'ai pas eu le temps de le configurer convenablement. Mais il est sur que dès que l'occasion se présentera...

Des idées ???

2. gangan

mardi, janvier 6 2009 | 18:39

Deux solutions pour ta problématique :

tu l'utilise en mode DetectOnly ou en mode normal mais tu commente avec un ptit # les rules qui te bloque.
Sachant que le mainteneur de Modsecurity est facile a joindre et repond tres vite, et que le "langage" des rules est assez simple parait il.
:)

3. cedric

vendredi, juillet 3 2009 | 21:43

Merci pour votre article très intéressant.
J'utilise la version 1.9 de ModSecurity et je constate un ralentissement des performances. Certes, le scénario mis en jeu comprend 6 échanges de type 302 (GET URI) entre le navigateur client et le reverse proxy. Donc le module traite ces 6 requêtes. Lorsque le module est utilisé, le surcout sur ces 6 requêtes est de 3 secondes. Cela me parait important par rapport à la nature des requêtes échangées.

La version 2 pourrait-elle vraiment résoudre ces problèmes de performance ? Existe-t-il des pièges à éviter en terme de règles de sécurité ?

4. GanGan

samedi, juillet 4 2009 | 13:40

quand tu fais de la sécurité generalement tu rajoute un programme qui va faire un traitement surtout si c'est de la sécurtié active, c'est a dire que tu ajoute un traitement des données donc il est logique que tu perde un peu en vitesse, tu devrais essayer la version 2.5.9 de modsecurity ta version est beaucoup trop vieille à mon sens.

Si tu as des questions tres techniques sur modsecurity tu devrais t'inscrire sur la mailling liste ou le mainteneur du projet est tres tres reactif et prendra le temps de te repondre.