Introduction
ModSecurity est un pare-feu d’application web open source (WAF) qui peut être utilisé pour protéger votre site web contre diverses attaques en ligne. Dans cet article, nous allons vous guider à travers l’installation de ModSecurity, puis vous montrer comment l’utiliser de manière avancée.
Installation de ModSecurity
ModSecurity est disponible pour de nombreux systèmes d’exploitation, y compris Linux, Windows et macOS. Ici, nous allons couvrir l’installation sur un serveur Linux.
Sur Ubuntu
sudo apt-get install libapache2-mod-security2
Sur CentOS
sudo yum install mod_security
Configuration de base de ModSecurity
Après avoir installé ModSecurity, vous devez le configurer. La configuration par défaut de ModSecurity est généralement un bon point de départ. Vous pouvez trouver le fichier de configuration dans le répertoire /etc/modsecurity/.
Utilisation de ModSecurity
Maintenant que vous avez installé et configuré ModSecurity, nous allons discuter de certaines de ses fonctionnalités avancées.
Création de règles personnalisées
ModSecurity vous permet de créer des règles personnalisées pour répondre à des menaces spécifiques. Par exemple, vous pouvez créer une règle pour bloquer les demandes provenant d’une adresse IP spécifique.
- Bloquer une adresse IP spécifique :
SecRule REMOTE_ADDR "^192\.168\.0\.1$" "id:'1000', deny, log, msg:'IP 192.168.0.1 is blocked' "
Cette règle bloque toutes les requêtes provenant de l’adresse IP 192.168.0.1.
- Bloquer les requêtes contenant une chaîne de caractères spécifique :
SecRule ARGS "badword" "id:'1001', deny, log, msg:'Request contains badword' "
Cette règle bloque toutes les requêtes contenant le mot « badword ».
- Bloquer les requêtes avec un user-agent spécifique :
SecRule REQUEST_HEADERS:User-Agent "BadBot" "id:'1002', deny, log, msg:'Request from BadBot is blocked' "
Cette règle bloque toutes les requêtes de l’user-agent « BadBot ».
- Bloquer les requêtes qui contiennent plus de 5 paramètres :
SecRule &ARGS "@gt 5" "id:'1003', deny, log, msg:'Request has more than 5 parameters' "
Cette règle bloque toutes les requêtes qui ont plus de 5 paramètres.
Ces règles sont juste des exemples de ce que vous pouvez faire avec ModSecurity. Le système de règles est très flexible et vous pouvez créer des règles pour répondre à presque toutes les menaces. Cependant, assurez-vous de bien tester vos règles avant de les mettre en production, car une mauvaise règle peut bloquer le trafic légitime.
Utilisation des ensembles de règles commerciales de ModSecurity
ModSecurity propose également des ensembles de règles commerciales, qui sont constamment mis à jour pour répondre aux dernières menaces. Ces ensembles de règles peuvent être achetés auprès de Trustwave, la société qui maintient ModSecurity.
Journalisation et débogage
ModSecurity offre des fonctionnalités de journalisation détaillées qui peuvent vous aider à comprendre les attaques sur votre site web. Vous pouvez configurer ModSecurity pour enregistrer toutes les demandes et réponses, y compris les en-têtes HTTP et les données POST. De plus, ModSecurity offre des fonctionnalités de débogage qui peuvent vous aider à résoudre les problèmes avec vos règles de pare-feu.
Voici quelques exemples de ce que vous pourriez voir dans les journaux de ModSecurity :
- Une entrée de journal pour une règle qui a été déclenchée :
[Sat Aug 27 11:45:32 2023] [error] [client 123.123.123.123] ModSecurity: Access denied with code 403 (phase 2). Pattern match "badword" at ARGS. [id "1001"] [msg "Request contains badword"] [severity "CRITICAL"] [hostname "www.example.com"] [uri "/path/to/file.html"] [unique_id "V80M@woAcRwAAFwD1H8AAAAB"]
Cette entrée de journal indique que la règle avec l’ID 1001 a été déclenchée parce que la requête contenait le mot « badword« . La requête a été bloquée avec un code de statut 403.
- Une entrée de journal pour une requête bloquée en raison d’une adresse IP interdite :
[Sat Aug 27 11:45:32 2023] [error] [client 192.168.0.1] ModSecurity: Access denied with code 403 (phase 1). Match of "ipMatch against "192.168.0.1" required. [id "1000"] [msg "IP 192.168.0.1 is blocked"] [severity "CRITICAL"] [hostname "www.example.com"] [uri "/path/to/file.html"] [unique_id "V80M@woAcRwAAFwD1H8AAAAB"]
Cette entrée de journal indique que la règle avec l’ID 1000 a été déclenchée parce que la requête provenait de l’adresse IP 192.168.0.1, qui est bloquée. La requête a été bloquée avec un code de statut 403.
Ces journaux peuvent être très utiles pour comprendre ce qui se passe sur votre site web et pour identifier les tentatives d’attaque. Vous pouvez également utiliser ces journaux pour affiner vos règles ModSecurity et améliorer la sécurité de votre site web.
Intégration avec d’autres outils
ModSecurity peut être intégré avec d’autres outils de sécurité pour fournir une protection encore plus complète. Par exemple, vous pouvez intégrer ModSecurity avec un système de détection et de prévention des intrusions (IDS/IPS) pour bloquer les attaques avant qu’elles n’atteignent votre site web.
Voici quelques exemples :
- Intégration avec un IDS/IPS : ModSecurity peut être intégré avec un système de détection et de prévention des intrusions (IDS/IPS) pour bloquer les attaques avant qu’elles n’atteignent votre site web. Un exemple d’un tel système est Snort, un IDS/IPS open source populaire.
SecRule REQUEST_HEADERS:User-Agent "Snort" "id:'2000', deny, log, msg:'Request from Snort is blocked' "
Cette règle bloquerait toutes les requêtes de l’user-agent « Snort ».
- Intégration avec Fail2ban : Fail2ban est un outil qui scanne les journaux de serveur pour les tentatives d’attaque et bloque les adresses IP qui présentent trop de tentatives d’échec. Vous pouvez configurer Fail2ban pour scanner les journaux de ModSecurity et bloquer les adresses IP qui déclenchent certaines règles ModSecurity.
# /etc/fail2ban/jail.local
[modsecurity]
enabled = true filter = modsecurity action = iptables-multiport[name=modsecurity, port="http,https"] logpath = /var/log/apache2/modsec_audit.log bantime = 3600 maxretry = 3
Cette configuration Fail2ban bannirait une adresse IP pour une heure après 3 infractions enregistrées dans les journaux ModSecurity.
- Intégration avec ELK Stack : ELK Stack (Elasticsearch, Logstash, Kibana) est une suite populaire pour l’analyse et la visualisation de journaux. Vous pouvez configurer ModSecurity pour envoyer ses journaux à Logstash, qui les stocke dans Elasticsearch et vous permet de les visualiser avec Kibana.
Notez que ces exemples sont très simplifiés. L’intégration de ModSecurity avec ces outils nécessiterait une configuration plus détaillée et pourrait nécessiter des ajustements pour s’adapter à votre environnement spécifique.
Conclusion
ModSecurity est un pare-feu d’application web puissant et flexible qui peut vous aider à protéger votre site web contre une grande variété d’attaques. Avec ses fonctionnalités d’installation facile, de création de règles personnalisées, de journalisation détaillée et d’intégration avec d’autres outils de sécurité, ModSecurity est un outil précieux pour toute personne soucieuse de la sécurité de son site web.