18
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 ### ModSecurity
L'utilisation de [ModSecurity](http://www.modsecurity.org) permet 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/`
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) 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.
qui est un ensemble de règles ModSecurity couvrant un large spectre d'attaques possibles.
Il y aura besoin de ces deux paquets:
~~~ ~~~
# apt install libapache2-mod-security2 modsecurity-crs # apt install libapache2-mod-security2 modsecurity-crs
~~~ ~~~
Nous faisons une configuration minimale via Nous faisons une configuration minimale via `/etc/apache2/conf-available/modsecurity.conf` :
`/etc/apache2/conf-available/modsecurity.conf` :
~~~{.apache} ~~~{.apache}
<IfModule mod_security2.c> <IfModule mod_security2.c>
# enable mod_security # Activation du moteur gérant les règles CRS
SecRuleEngine On SecRuleEngine On
# access to request bodies
## Les demandes produit par le client
# Activation de l'analyse du contenu
SecRequestBodyAccess On SecRequestBodyAccess On
# Taille limite du contenu en octets
#SecRequestBodyLimit 134217728 #SecRequestBodyLimit 134217728
# Taille maximale du contenu en mémoire et déplacé sur le disque si besoin
#SecRequestBodyInMemoryLimit 131072 #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 SecResponseBodyAccess Off
# Taille maximale du contenu en mémoire et déplacé sur le disque si besoin
#SecResponseBodyLimit 524288 #SecResponseBodyLimit 524288
# Autoriser les réponses de ces types
SecResponseBodyMimeType (null) text/html text/plain text/xml SecResponseBodyMimeType (null) text/html text/plain text/xml
# Changer l'entête HTTP "Server: Apache"
#SecServerSignature "Apache/2.2.0 (Fedora)" #SecServerSignature "Apache/2.2.0 (Fedora)"
# Emplacement des fichiers suspicieux envoyé au serveur
SecUploadDir /tmp SecUploadDir /tmp
# Conserver les fichiers interceptés
SecUploadKeepFiles Off 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" SecDefaultAction "log,auditlog,deny,status:406,phase:2"
# Activer le réglage fin du moteur
SecAuditEngine Off SecAuditEngine Off
# Définis quels codes HTTP doivent être enregistrés dans les logs
#SecAuditLogRelevantStatus "^[45]" #SecAuditLogRelevantStatus "^[45]"
# use only one log file # Utiliser un seul fichier de log
SecAuditLogType Serial SecAuditLogType Serial
# audit log file # Emplacement du fichier de log
SecAuditLog /var/log/apache2/modsec_audit.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" SecAuditLogParts "ABIFHZ"
# Définis l'argument utilisé pour séparer les URL encodés
#SecArgumentSeparator "&" #SecArgumentSeparator "&"
# Définis le format du cookie
SecCookieFormat 0 SecCookieFormat 0
# Emplacement du fichier de debug
SecDebugLog /var/log/apache2/modsec_debug.log SecDebugLog /var/log/apache2/modsec_debug.log
# On définit pas de log
SecDebugLogLevel 0 SecDebugLogLevel 0
SecDataDir /tmp
SecTmpDir /tmp
######### #########
# RULES # RULES
######### #########
@ -967,24 +986,17 @@ SecRuleRemoveById "930000"
~~~ ~~~
Nous désactivons le log d'audit par défaut, puisque linformation À propos [des directives Apache](https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual-(v2.x))
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 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 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)
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. pour faciliter lobtention de statistiques du audit log.
On peut aussi ajuster certains paramètres de ModSecurity Core Rule On peut ajuster certains paramètres de ModSecurity Core Rule Set en personalisant le fichier `/etc/modsecurity/crs/crs-setup.conf`.
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.
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 On pourra désactiver modsecurity dans des vhosts ou sur des dossiers en particulier en jouant avec la directive `SecRuleEngine Off`.
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*.
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"> <Directory "/home/monsite/www/wp-admin">
@ -994,8 +1006,6 @@ faisont avec les règles 910*.
</Directory> </Directory>
~~~ ~~~
Le Wiki À propos de [ces directives](https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual)
## Awstats ## Awstats
[AWStats](http://www.awstats.org/) est un outil pour générer des [AWStats](http://www.awstats.org/) est un outil pour générer des