22
0
Fork 0

Ajout d'information sur ModSecurity et détails des directives apaches

This commit is contained in:
btatu 2020-10-22 11:43:32 +02:00
parent bf0bf20028
commit e8602b2a8f
1 changed files with 43 additions and 33 deletions

View File

@ -902,56 +902,75 @@ Voir <https://wiki.evolix.org/HowtoFail2Ban#apache-nginx>
### 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}
<IfModule mod_security2.c>
# 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 linformation
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 linformation 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 lobtention 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 didentifier 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 didentifier les règles problématiques et les désactiver avec `SecRuleRemoveById XXXX`, comme nous le faisont avec les règles 910*.
~~~
<Directory "/home/monsite/www/wp-admin">
@ -994,8 +1006,6 @@ faisont avec les règles 910*.
</Directory>
~~~
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