Sécuriser Apache avec mod security

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

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