Se você administra um servidor Web Apache em sistemas operacionais Linux e precisa de alguma segurança (nada é totalmente seguro hoje em dia), pode instalar o módulo de segurança chamado Modsecurity disponível para o Apache. (Tem um tutorial bem legal de como instalar o modsecurity no apache).

O problema é que ao carregar as regras de segurança disponíveis, pode ser que elas quebrem o funcionamento correto do seu site. No meu caso ocorreu com o WordPress. As regras contra SQL Injection não deixavam o WordPress funcionar corretamente e tive que desativa-las.

Para detectar os erros sempre veja o log do Apache no diretório /var/log/apache2/modsec_audit.log pois lá vai encontrar o identificador da regra do modsecurity que quebrou o seu site poderá fazer algo para contornar essa regra.

Para remover uma regra que você sabe a identificação basta acrescentar as seguintes linhas ao seu /etc/apache2/apache2.conf

Neste caso estamos desativando a regra com identificador 981172 na pasta /var/www



SecRuleRemoveByID 981172

Removendo esta regra, meu WordPress voltou a funcionar normalmente porém a área de administração ainda tinha problemas de formatação, aparecia toda a página de forma atrapalhada. Voltei ao log do apache para ver que algumas regras de sql injection ainda impediam o acesso à área do administrador wp-admin. Como apenas eu preciso acessar esta área, ao invés de afrouxar a segurança removendo regras eu resolvi fazer um whitelist no meu IP de acesso. Ou seja, o modsecurity não ia se aplicar ao meu IP da minha casa. Para fazer isso editei o arquivo /etc/modsecurity.conf e acrescentei a seguinte linha:

obs: Note que você deve substituir os IPs após a palavra ipMatch pelos seus endereços (se tiver mais de um), e também no final do comando alterar o id para o identificador que quiser (pode deixar o 99999 se este número for bom pra você.


SecRule REMOTE_ADDR "@ipMatch 200.100.99.99,10.23.4.0/24" "phase:1,nolog,allow,ctl:ruleEngine=Off,id:'99999'"

Reinicie o apache para fazer valer a nova regra.

sudo service apache2 restart