ModSecurity est un moteur de pare-feu pour applications web (WAF) open source et multiplateforme pour Apache, IIS et Nginx. Il dispose d'un langage de programmation robuste basé sur les événements qui offre une protection contre un large éventail d'attaques visant les applications web et permet la surveillance du trafic HTTP, la journalisation et l'analyse en temps réel.
Libmodsecurity est l'un des composants du projet ModSecurity v3. La base de code de la bibliothèque sert d'interface aux connecteurs ModSecurity, qui reçoivent le trafic web et lui appliquent le traitement ModSecurity traditionnel. De manière générale, elle offre la capacité de charger et d'interpréter des règles écrites au format ModSecurity SecRules et de les appliquer au contenu HTTP fourni par votre application via les connecteurs.
Si vous recherchez ModSecurity pour Apache (aussi appelé ModSecurity v2.x), il est toujours maintenu et disponible : ici.
Libmodsecurity est une réécriture complète de la plateforme ModSecurity. Lors de sa conception initiale, le projet ModSecurity a démarré comme un simple module Apache. Au fil du temps, le projet a été étendu, à la demande générale, pour prendre en charge d'autres plateformes, notamment (mais sans s'y limiter) Nginx et IIS. Afin de répondre à la demande croissante de prise en charge de plateformes supplémentaires, il est devenu nécessaire de supprimer les dépendances Apache sous-jacentes à ce projet, le rendant ainsi plus indépendant des plateformes.
Pour atteindre cet objectif, nous avons réarchitecturé Libmodsecurity afin qu'elle ne dépende plus du serveur web Apache (tant à la compilation qu'à l'exécution). L'un des effets secondaires est que, sur toutes les plateformes, les utilisateurs peuvent s'attendre à des performances accrues. De plus, nous avons saisi cette occasion pour poser les bases de nouvelles fonctionnalités que les utilisateurs réclamaient depuis longtemps. Par exemple, nous cherchons à prendre en charge nativement les journaux d'audit au format JSON, ainsi qu'une multitude d'autres fonctionnalités dans les versions futures.
La branche 'ModSecurity' ne contient plus la logique de module traditionnelle (pour Nginx, Apache et IIS) qui était traditionnellement regroupée. À la place, cette branche ne contient que la partie bibliothèque (libmodsecurity) de ce projet. Cette bibliothèque est consommée par ce que nous appelons des « connecteurs » ; ces connecteurs s'interfacent avec votre serveur web et fournissent à la bibliothèque un format commun qu'elle comprend. Chacun de ces connecteurs est maintenu en tant que projet GitHub distinct. Par exemple, le connecteur Nginx est fourni par le projet ModSecurity-nginx (https://github.com/owasp-modsecurity/ModSecurity-nginx).
Le maintien de ces connecteurs séparés permet à chaque projet d'avoir des cycles de publication, des tickets et des arbres de développement différents. De plus, cela signifie que lorsque vous installez ModSecurity v3, vous obtenez exactement ce dont vous avez besoin, sans extras que vous n'utiliserez pas.
Avant de commencer le processus de compilation, assurez-vous que toutes les dépendances requises sont installées.
Consultez les sections Dépendances et Sous-modules Git pour plus d'informations.
Après la compilation, assurez-vous qu'il n'y a aucun problème sur votre build/plateforme.
Nous recommandons fortement d'exécuter les tests unitaires et les tests de régression. Ces utilitaires de test se trouvent dans le sous-dossier tests/.
En tant que bibliothèque dynamique, libmodsecurity doit être installée dans un emplacement où votre système d'exploitation peut trouver les bibliothèques dynamiques.
Sur les systèmes de type Unix, le projet utilise autotools pour le processus de compilation.
Si vous travaillez avec une copie de travail git, assurez-vous de cloner le dépôt de manière récursive ou d'initialiser tous les sous-modules avant de compiler.
Voir également la section Sous-modules Git.
git clone https://github.com/owasp-modsecurity/ModSecurity ModSecurity
cd ModSecurity
Ce dépôt utilise des sous-modules git. Après le clonage, assurez-vous d'initialiser et de récupérer tous les sous-modules :
git submodule update --init --recursive
Vous pouvez vérifier que tous les sous-modules sont correctement initialisés avec :
git submodule status
Les sous-modules correctement initialisés affichent un hash de commit.
Un - en tête indique que le sous-module n'a pas été initialisé.
Vous pouvez ensuite lancer le processus de compilation :
./build.sh
./configure
make
sudo make install
Les détails sur les builds spécifiques à chaque distribution sont disponibles dans notre Wiki : Recettes de compilation
Les informations de build pour Windows sont disponibles ici.
Regex (src/utils/regex.*).@rx, @rxGlobal et @verifyCC.