From e8602b2a8f28ebae9d808f8cb1c9b4fda7cc2bd7 Mon Sep 17 00:00:00 2001 From: btatu Date: Thu, 22 Oct 2020 11:43:32 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20d'information=20sur=20ModSecurity=20et?= =?UTF-8?q?=20d=C3=A9tails=20des=20directives=20apaches?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HowtoApache.md | 76 ++++++++++++++++++++++++++++---------------------- 1 file changed, 43 insertions(+), 33 deletions(-) diff --git a/HowtoApache.md b/HowtoApache.md index 46509eb7..02d55aa2 100644 --- a/HowtoApache.md +++ b/HowtoApache.md @@ -902,56 +902,75 @@ Voir ### ModSecurity -L'utilisation de [ModSecurity](http://www.modsecurity.org) permet -de bloquer certaines requêtes HTTP (attaques XSS connues, etc.) au -niveau d'Apache. On l'installe avec le [OWASP ModSecurity Core Rule Set](https://coreruleset.org/) (CRS) -qui est un ensemble de règles ModSecurity couvrant un large spectre d'attaques possibles. +L'utilisation du moteur [ModSecurity](http://www.modsecurity.org) permet de bloquer certaines requêtes HTTP (injections SQL, attaques XSS connues, etc.) au niveau d'Apache. On l'installe avec le [OWASP ModSecurity Core Rule Set](https://coreruleset.org/) (CRS) qui est un ensemble de règles couvrant un large spectre d'attaques possibles. Elles sont définit dans le dossier `/usr/share/modsecurity-crs/rules/` + +Le comportement par défaut est de générer de faux positifs pour ajuster les réglages en fonction du niveau de sécurité que l'on veut appliquer à l'application. il inspecte le contenu des demandes clients ET les réponses serveurs à la recherche de signes d'attaques car il a pour rôle de Pare-feu applicatif. + +Il y aura besoin de ces deux paquets: ~~~ # apt install libapache2-mod-security2 modsecurity-crs ~~~ -Nous faisons une configuration minimale via -`/etc/apache2/conf-available/modsecurity.conf` : +Nous faisons une configuration minimale via `/etc/apache2/conf-available/modsecurity.conf` : ~~~{.apache} -# enable mod_security +# Activation du moteur gérant les règles CRS SecRuleEngine On -# access to request bodies + +## Les demandes produit par le client +# Activation de l'analyse du contenu SecRequestBodyAccess On +# Taille limite du contenu en octets #SecRequestBodyLimit 134217728 +# Taille maximale du contenu en mémoire et déplacé sur le disque si besoin #SecRequestBodyInMemoryLimit 131072 -# access to response bodies +# Emplacement sur le disque de données temporaires +SecTmpDir /tmp + +## Les réponses produite par le serveur +# Activation de l'analyse du contenu SecResponseBodyAccess Off +# Taille maximale du contenu en mémoire et déplacé sur le disque si besoin #SecResponseBodyLimit 524288 +# Autoriser les réponses de ces types SecResponseBodyMimeType (null) text/html text/plain text/xml + +# Changer l'entête HTTP "Server: Apache" #SecServerSignature "Apache/2.2.0 (Fedora)" +# Emplacement des fichiers suspicieux envoyé au serveur SecUploadDir /tmp +# Conserver les fichiers interceptés SecUploadKeepFiles Off +# Emplacement des données persistantes (données d'adresse IP, données de sessions, etc) +SecDataDir /tmp -# default action +# Action par défaut SecDefaultAction "log,auditlog,deny,status:406,phase:2" +# Activer le réglage fin du moteur SecAuditEngine Off +# Définis quels codes HTTP doivent être enregistrés dans les logs #SecAuditLogRelevantStatus "^[45]" -# use only one log file +# Utiliser un seul fichier de log SecAuditLogType Serial -# audit log file +# Emplacement du fichier de log SecAuditLog /var/log/apache2/modsec_audit.log -# what is logged +# Définis les types de métadonnées qui seront conservés SecAuditLogParts "ABIFHZ" +# Définis l'argument utilisé pour séparer les URL encodés #SecArgumentSeparator "&" +# Définis le format du cookie SecCookieFormat 0 +# Emplacement du fichier de debug SecDebugLog /var/log/apache2/modsec_debug.log +# On définit pas de log SecDebugLogLevel 0 -SecDataDir /tmp -SecTmpDir /tmp - ######### # RULES ######### @@ -967,24 +986,17 @@ SecRuleRemoveById "930000" ~~~ -Nous désactivons le log d'audit par défaut, puisque l’information -enregistrée dans le log d'erreur Apache est suffisante pour connaître -la raison d'un bloquage. Par contre, il est utile de le réactiver (avec `SecAuditEngine RelevantOnly`) lorsque -vous faites un audit des règles applicables a un serveur ou lors de la rédaction -de nouvelles règles. Dans ce cas, il existe des [outils](https://github.com/Apache-Labor/labor/blob/master/bin/.apache-modsec.alias) +À propos [des directives Apache](https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-(v2.x)) + +Nous désactivons le log d'audit par défaut, puisque l’information enregistrée dans le log d'erreur Apache est suffisante pour connaître la raison d'un bloquage. Par contre, il est utile de le réactiver (avec `SecAuditEngine RelevantOnly`) lorsque +vous faites un audit des règles applicables a un serveur ou lors de la rédaction de nouvelles règles. Dans ce cas, il existe des [outils](https://github.com/Apache-Labor/labor/blob/master/bin/.apache-modsec.alias) pour faciliter l’obtention de statistiques du audit log. -On peut aussi ajuster certains paramètres de ModSecurity Core Rule -Set en modifiant le fichier `/etc/modsecurity/crs/crs-setup.conf`. -C'est notamment ici qu'il faudra ajuster si on utilise d'autres -méthodes HTTP (comme PATCH, PUT, DELETE...) qui sont bloquées par défaut. +On peut ajuster certains paramètres de ModSecurity Core Rule Set en personalisant le fichier `/etc/modsecurity/crs/crs-setup.conf`. +C'est notamment ici qu'il faudra ajuster si on utilise d'autres méthodes HTTP (comme PATCH, PUT, DELETE...) qui sont bloquées par défaut. -On pourra désactiver modsecurity dans des vhosts ou sur des dossiers -en particulier en jouant avec la directive `SecRuleEngine Off`. -Ceci peut être utile en cas de problèmes, mais il est toujours mieux -de faire un léger audit afin d’identifier les règles problématiques -et les désactiver avec `SecRuleRemoveById XXXX`, comme nous le -faisont avec les règles 910*. +On pourra désactiver modsecurity dans des vhosts ou sur des dossiers en particulier en jouant avec la directive `SecRuleEngine Off`. +Ceci peut être utile en cas de problèmes, mais il est toujours mieux de faire un léger audit afin d’identifier les règles problématiques et les désactiver avec `SecRuleRemoveById XXXX`, comme nous le faisont avec les règles 910*. ~~~ @@ -994,8 +1006,6 @@ faisont avec les règles 910*. ~~~ -Le Wiki À propos de [ces directives](https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual) - ## Awstats [AWStats](http://www.awstats.org/) est un outil pour générer des