O código SecFilterEngine Off no arquivo htaccess não desliga mais o ModSecurity. Entenda por quê e veja o jeito certo de resolver bloqueios 403 e 406.
O ModSecurity é um firewall de aplicação web (WAF): ele analisa cada pedido que chega ao site e barra os que parecem ataque, como injeção de SQL, upload de script malicioso ou tentativa de ler arquivos do servidor. Às vezes ele bloqueia algo legítimo, como salvar um post com um trecho de código, e aí aparece um 403 Forbidden ou 406 Not Acceptable. É nessa hora que muita gente procura como desligá-lo.
Por que o SecFilterEngine Off não funciona mais
O código que circula na internet desde os anos 2000 é este:
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
As diretivas SecFilterEngine e SecFilterScanPOST são do ModSecurity 1, uma versão descontinuada há muitos anos. O que mudou desde então:
- ModSecurity 2 trocou os nomes (passou a ser
SecRuleEngine) e, por segurança, deixou de aceitar essas diretivas no.htaccess. ColocarSecRuleEngine Offno.htaccessde um Apache costuma gerar Erro 500 com a mensagem not allowed here. - ModSecurity 3 (libmodsecurity) não lê o
.htaccess. - LiteSpeed, o servidor web da nossa hospedagem, não aceita mais a sintaxe antiga
SecFilter…. A sintaxe nova no.htaccesssó vale se o administrador do servidor permitir, o que normalmente não acontece em hospedagem compartilhada.
Repare no <IfModule mod_security.c>: no Apache com ModSecurity 2 o módulo tem outro nome (mod_security2), então o bloco inteiro é pulado; no LiteSpeed, as diretivas antigas de dentro dele são ignoradas. Nos dois casos o site não dá erro, você acha que desligou o ModSecurity, mas ele continua ativo. É por isso que "não aconteceu nada".
Como saber se o bloqueio é do ModSecurity
- O erro aparece numa ação específica (salvar um post, enviar um formulário, fazer upload) e o resto do site funciona.
- A tela mostra 403 Forbidden, 406 Not Acceptable ou, mais raramente, 500.
- Muda conforme o conteúdo: o mesmo formulário passa com um texto simples e trava quando o texto tem código, SQL ou um endereço como
.htaccessou/etc/passwd.
Se o 403 aparece em todas as páginas, a causa provavelmente é outra (permissão de arquivo, regra no .htaccess ou bloqueio de IP).
Como resolver do jeito certo
1. Peça ao suporte a exceção da regra específica (recomendado)
Cada bloqueio do ModSecurity fica registrado no log do servidor com o número (ID) da regra que disparou. Com esse número, o suporte libera só aquela regra, só no seu domínio ou só no endereço afetado, e o resto da proteção continua ligado. Abra um chamado informando:
- O endereço exato que deu erro (por exemplo,
https://seudominio.com.br/wp-admin/post.php). - O dia e a hora aproximados do bloqueio.
- O seu IP no momento do erro. Você descobre em pophosting.com.br/meu-ip.
- O que você estava fazendo (salvando um post, enviando um formulário…) e um print da tela de erro.
2. Desligue o ModSecurity do domínio pelo cPanel, só para testar
Se a ferramenta estiver disponível no seu cPanel, ela serve para confirmar o diagnóstico:
- Abra o ModSecurity no cPanel. Fica na seção Security (Segurança).
- Desligue só o domínio afetado. Em vez de usar o botão que desativa todos os domínios, mude para Off apenas a chave do domínio com problema.
- Repita a ação que dava erro. Se funcionar, o bloqueio era mesmo do ModSecurity.
- Ligue de novo e peça a exceção ao suporte. Não deixe o domínio sem proteção como solução definitiva.
Problemas comuns
Desliguei o ModSecurity e o 403 continua
Então o bloqueio é outro. Confira as permissões das pastas (755) e arquivos (644), regras de Deny ou Require no .htaccess e se um plugin de segurança do site está bloqueando.
O site inteiro parou com Erro 500 depois de mexer no htaccess
Alguma diretiva do ModSecurity foi colocada fora de um <IfModule> ou com sintaxe não aceita. Remova as linhas que você adicionou e o site volta.
Não consigo acessar nem o site nem o cPanel
Isso já não é o ModSecurity, e sim o firewall do servidor bloqueando o seu IP depois de várias tentativas de login com erro. Libere o IP pela Área do Cliente.