Sécuriser Apache avec mod security
1 Introduction
Voilà ce que je cherchais depuis un moment ! Un mod spécialement fait pour la sécurité d'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, ...)
J'ai trouvé cette petite Doc fort sympatique, mais comme la plus part des docs, il manque des choses. Ce n'est pas grand chose mais je le rajoute quand même.
2 Installation
Si votre distrib Debian n'a pas les packages, téléchargez les sur le site http://www.debian.org puis :
dpkg -i libapache2-mod-security* mod-security-common*
Ensuite un petit lien symbolique pour activer le mod :
ln -s /etc/apache2/mods-available/mod-security.load /etc/apache2/mods-enabled/
Puis un restart pour loader tout ça :
/etc/init.d/apache2 restart
3 Configuration
Il ne reste plus qu'à lire File:Mod security.pdf.
Et pour finir, voici ma configuration :
# Security discoverd with Nikto TraceEnable "off" # More Security <IfModule mod_security.c> # Turn the filtering engine On or Off SecFilterEngine On # Server Signature SecServerSignature "Microsoft-IIS/5.0" # Make sure that URL encoding is valid SecFilterCheckURLEncoding On # Unicode encoding check SecFilterCheckUnicodeEncoding Off # Only allow bytes from this range SecFilterForceByteRange 0 255 # Only log suspicious requests SecAuditEngine RelevantOnly # The name of the audit log file SecAuditLog /var/log/apache2/audit_log # Debug level set to a minimum SecFilterDebugLog /var/log/apache2/modsec_debug_log SecFilterDebugLevel 0 # Should mod_security inspect POST payloads SecFilterScanPOST On # By default log and deny suspicious requests # with HTTP status 500 SecFilterDefaultAction "deny,log,status:500" # Require HTTP_USER_AGENT and HTTP_HOST in all requests SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^$" # Weaker XSS protection but allows common HTML tags SecFilter "<[[:space:]]*script" # Prevent XSS atacks (HTML/Javascript injection) #SecFilter "<(.|n)+>" # Very crude filters to prevent SQL injection attacks SecFilter "delete[[:space:]]+from" SecFilter "insert[[:space:]]+into" # Remplacer elect par select a la ligne ce dessous SecFilter "elect.+from" SecFilter "drop[[:space:]]table" # Protecting from XSS attacks through the PHP session cookie SecFilterSelective ARG_PHPSESSID "!^[0-9a-z]*$" SecFilterSelective COOKIE_PHPSESSID "!^[0-9a-z]*$" </IfModule>
4 Ressources
Documentation Mod Security Debian Etch
Sécurité avancée du serveur web Apache : mod_security et mod_dosevasive