Desativar modsecurity para um diretório específico

11

Como você desativa o modsecurity apenas para um diretório específico. Estou recebendo erros no phpMyAdmin que são causados ​​por disparos de modsecurity com base em regras. Eu tenho os seguintes arquivos configurados:

# /etc/httpd/modsecurity.d/modsecurity_crs_15_customrules.conf
<LocationMatch "^/phpMA/">
    SecRuleEngine Off
</LocationMatch>

# /etc/httpd/modsecurity.d/modsecurity_crs_60.custom.conf
<LocationMatch '^/phpMA/*'>
    SecRuleRemoveById 950004
    SecRuleRemoveById 950005
    SecRuleRemoveById 950006
    SecRuleRemoveById 960010
    SecRuleRemoveById 960012
</LocationMatch>

Pelo que pude encontrar, o primeiro arquivo deve desativá-lo, mas ele ainda desarma, então tentei adicionar os IDs de regra que estão disparando no arquivo 60, mas ainda reclama.

Estou executando os seguintes pacotes no CentOS 5.3:

  • mod_security-2.5.0-jason.2
  • httpd-2.2.8-jason.3
  • mod-php5-apache2-zend-ce-5.2.10-65
dragonmantank
fonte
A resposta aprovada não é segura. Consulte: serverfault.com/a/766395/345813
SherloxFR

Respostas:

17

SecRuleEngine Off deve funcionar. Você tentou colocar o SecRuleEngine no diretório:

<Directory /var/www/site/phpMA>
SecRuleEngine Off
</Directory>

em vez de LocationMatch?

hdanniel
fonte
1
Tentei adicionar isso para o arquivo 15 e ainda obter os mesmos erros sendo pego em modsecurity_audit.log
dragonmantank
Os arquivos modsecurity_crs_15_customrules.conf e modsecurity_crs_60.custom.conf estão incluídos (não comentados) no seu /etc/httpd/conf.d/mod_security.conf?
hdanniel
facepalm Não, eles não estavam. Isso cuidou disso.
dragonmantank
3

Em alguns servidores e hosts da web, é possível desativar o ModSecurity via .htaccess, mas apenas em sua totalidade (não regras individuais).

Para limitar isso a URLs específicos, você pode especificar uma regex na <If>instrução abaixo ...

### DISABLE mod_security firewall
### Some rules are currently too strict and are blocking legitimate users
### We only disable it for URLs that contain the regex below
### The regex below should be placed between "m#" and "#" 
### (this syntax is required when the string contains forward slashes)
<IfModule mod_security.c>
  <If "%{REQUEST_URI} =~ m#/admin/#">
    SecFilterEngine Off
    SecFilterScanPOST Off
  </If>
</IfModule>
Simon East
fonte
2

Nunca desative todas as regras !! Isso pode causar sérios problemas de segurança!

Você precisa verificar o arquivo de log do modsecurity com

tail -f /var/log/apache2/modsec_audit.log

e exclua cada regra, uma por uma, reproduzindo os erros na interface phpmyadmin.

Em seguida, adicione:

<Directory /path/to/phpmyadmin>
    <IfModule security2_module>
        SecRuleRemoveByTag "WEB_ATTACK/SQL_INJECTION"
        {And other rules you need to disable ...}
    </IfModule>
</Directory>

para /etc/apache2/mods-enabled/modsecurity.conf

A tag que você precisa remover estará no arquivo de log como este . Para obter uma descrição completa da remoção de regras para uma pasta específica, consulte o wiki do projeto no Github .

SherloxFR
fonte