Sécurité Apache · 3 min read · Jan 11, 2026

Sécurisez votre Apache avec mod_security

Sécurisez votre Apache avec mod_security

Version 1.0
Auteur : Falko Timme

Cet article montre comment installer et configurer mod_security. mod_security est un module Apache (pour Apache 1 et 2) qui fournit une détection et une prévention des intrusions pour les applications web. Il vise à protéger les applications web contre les attaques connues et inconnues, telles que les attaques par injection SQL, le cross-site scripting, les attaques par traversée de chemin, etc.

Dans le premier chapitre, je vais montrer comment installer mod_security sur Debian Sarge, Ubuntu 6.06 LTS (Dapper Drake) et sur Fedora Core 5, et dans le deuxième chapitre, je vais décrire comment configurer Apache pour mod_security, qui est indépendant de la distribution que vous utilisez.

Je veux d’abord dire que ce n’est pas la seule façon de mettre en place un tel système. Il existe de nombreuses façons d’atteindre cet objectif, mais c’est la méthode que je choisis. Je ne donne aucune garantie que cela fonctionnera pour vous !

1 Installation

1.1 Debian Sarge

mod_security est disponible en tant que paquet Debian dans les dépôts Debian par défaut, donc l’installation est aussi simple que cela :

apt-get install libapache2-mod-security
a2enmod mod-security
/etc/init.d/apache2 force-reload

1.2 Ubuntu 6.06 LTS (Dapper Drake)

L’installation est exactement la même que sur Debian Sarge :

apt-get install libapache2-mod-security
a2enmod mod-security
/etc/init.d/apache2 force-reload

1.3 Fedora Core 5

Sur Fedora, vous pouvez installer et activer mod_security comme ceci :

yum install mod_security
/etc/init.d/httpd restart

Vous devriez maintenant trouver le fichier /etc/httpd/conf.d/mod_security.conf qui contient déjà une configuration de base pour mod_security :

vi /etc/httpd/conf.d/mod_security.conf

| # Exemple de fichier de configuration pour le module mod_security d'Apache LoadModule security_module modules/mod_security.so # Activer ou désactiver le moteur de filtrage SecFilterEngine On # Le moteur d'audit fonctionne indépendamment et # peut être activé ou désactivé par serveur ou # par répertoire SecAuditEngine RelevantOnly # Assurez-vous que l'encodage URL est valide SecFilterCheckURLEncoding On # Vérification de l'encodage Unicode SecFilterCheckUnicodeEncoding On # N'autoriser que les octets de cette plage SecFilterForceByteRange 1 255 # Vérifications du format des cookies. SecFilterCheckCookieFormat On # Le nom du fichier journal d'audit SecAuditLog logs/audit_log # mod_security doit-il inspecter les charges utiles POST SecFilterScanPOST On # Action par défaut définie SecFilterDefaultAction "deny,log,status:406" # Filtre d'exemple simple # SecFilter 111 # Prévenir les attaques par traversée de chemin (..) # SecFilter "\.\./" # Protection XSS plus faible mais permet les balises HTML courantes # SecFilter "<( |\n)*script" # Prévenir les attaques XSS (injection HTML/Javascript) # SecFilter "<(.|\n)+>" # Filtres très rudimentaires pour prévenir les attaques par injection SQL # SecFilter "delete[[:space:]]+from" # SecFilter "insert[[:space:]]+into" # SecFilter "select.+from" # Exiger les en-têtes HTTP_USER_AGENT et HTTP_HOST SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^$" # N'accepter que les encodages de requête que nous savons gérer # nous excluons les requêtes GET de cela car certains (automatisés) # clients fournissent "text/html" comme Content-Type SecFilterSelective REQUEST_METHOD "!^GET$" chain SecFilterSelective HTTP_Content-Type "!(^$|^application/x-www-form-urlencoded$|^multipart/form-data)" # Exiger que Content-Length soit fourni avec # chaque requête POST SecFilterSelective REQUEST_METHOD "^POST$" chain SecFilterSelective HTTP_Content-Length "^$" # N'accepter pas les encodages de transfert que nous savons ne pas gérer # (et vous n'en avez de toute façon pas besoin) SecFilterSelective HTTP_Transfer-Encoding "!^$" # Quelques règles courantes liées aux applications de # http://modsecrules.monkeydev.org/rules.php?safety=safe #Nuke Bookmarks XSS SecFilterSelective THE_REQUEST "/modules\.php\?name=Bookmarks\&file=(del_cat\&catname|del_mark\&markname|edit_cat\&catname|edit_cat\&catcomment|marks\&catname|uploadbookmarks\&category)=(<[[:space:]]*script|(http|https|ftp)\:/)" #Nuke Bookmarks Marks.php Vulnérabilité d'injection SQL SecFilterSelective THE_REQUEST "modules\.php\?name=Bookmarks\&file=marks\&catname=.*\&category=.*/\*\*/(union|select|delete|insert)" #Tentative générale XSS de PHPNuke #/modules.php?name=News&file=article&sid=1&optionbox= SecFilterSelective THE_REQUEST "/modules\.php\?*name=<[[:space:]]*script" # Tentative d'injection SQL de PHPNuke SecFilterSelective THE_REQUEST "/modules\.php\?*name=Search*instory=" #insertion sql de phpnuke SecFilterSelective THE_REQUEST "/modules\.php*name=Forums.*file=viewtopic*/forum=.*'/'" # WEB-PHP phpbb quick-reply.php tentative de commande arbitraire SecFilterSelective THE_REQUEST "/quick-reply\.php" chain SecFilter "phpbb_root_path=" #Mod calendrier de sujet pour phpBB Attaque de cross-site scripting SecFilterSelective THE_REQUEST "/calendar_scheduler\.php\?start=(<[[:space:]]*script|(http|https|ftp)\:/)" # phpMyAdmin : Sûr #phpMyAdmin Export.PHP Vulnérabilité de divulgation de fichier SecFilterSelective SCRIPT_FILENAME "export\.php$" chain SecFilterSelective ARG_what "\.\." #vln de chemin phpMyAdmin SecFilterSelective REQUEST_URI "/css/phpmyadmin\.css\.php\?GLOBALS\[cfg\]\[ThemePath\]=/etc" |

Vous pouvez conserver cette configuration, mais pour mieux comprendre ce que mod_security peut faire, vous devriez commenter la partie , redémarrer Apache et suivre le chapitre 2. Ensuite, vous pouvez créer votre propre ensemble de règles mod_security, ou simplement revenir à celui-ci.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.