Como corrigir as regras de firewall que não aplicam no All in One Security
O que é firewall do AIOS que não funciona?
O firewall do All in One Security tem duas camadas. A camada moderna roda como PHP através do arquivo aios-bootstrap.php, carregado antes do WordPress por uma diretiva auto_prepend_file gravada no .htaccess (Apache) ou no .user.ini (PHP-FPM). A camada legada grava regras diretamente no .htaccess, entre os marcadores que começam com BEGIN All In One WP Security. Bloqueio de país, proteção contra força bruta por cookie e bloqueio de bots dependem dessas regras estarem ativas a cada requisição. Quando o servidor não executa o bootstrap ou ignora o .htaccess, o painel mostra o firewall como ligado, mas nenhuma regra é aplicada de fato.
Como identificar
- No painel, AIOS -> Firewall mostra as proteções marcadas como ativas, mas IPs e países bloqueados continuam acessando o site normalmente.
- O painel exibe o aviso ‘The firewall is not currently set up’ ou ‘AIOS could not write to the configuration file’, indicando que o bootstrap não foi instalado.
- O bloqueio de país (geoblocking) não barra visitantes da região configurada e o teste com VPN passa direto.
- Em servidor Nginx, nenhuma regra do firewall surte efeito, porque o Nginx não lê arquivos .htaccess.
- A linha auto_prepend_file referente ao aios-bootstrap.php está ausente no .htaccess ou no .user.ini, ou aponta para um caminho que não existe.
Como prevenir
- Depois de configurar o firewall, sempre teste o bloqueio na prática (com VPN ou outro IP), nunca confie só no status do painel.
- Em Nginx e LiteSpeed, registre a diretiva auto_prepend_file diretamente na configuração do PHP, já que o .htaccess não é lido nessas pilhas.
- Mantenha a pasta wp-content/uploads/aios/firewall-rules com permissão de escrita para o usuário do servidor web, para o AIOS conseguir regravar o bootstrap a cada atualização.
- Atrás de proxy ou CDN, configure o AIOS para ler o IP real do visitante (cabeçalho encaminhado), senão as regras bloqueiam o IP errado.
- Após qualquer atualização de servidor ou troca de plugin de cache, confira se a linha do auto_prepend_file continua presente no .htaccess ou no .user.ini.
Causa
- O site roda em Nginx (ou OpenLiteSpeed sem compatibilidade .htaccess), que ignora o .htaccess onde o AIOS grava a diretiva do firewall e as regras legadas.
- A diretiva auto_prepend_file que aponta para wp-content/uploads/aios/firewall-rules/aios-bootstrap.php foi removida do .htaccess ou do .user.ini por outro plugin de cache ou por uma atualização de servidor.
- A pasta wp-content/uploads/aios/firewall-rules não tem permissão de escrita (precisa de 0755 na pasta e 0644 nos arquivos), então o AIOS não consegue gerar nem atualizar o aios-bootstrap.php.
- O PHP-FPM está configurado para ignorar arquivos .user.ini locais (user_ini.filename vazio), impedindo o carregamento do bootstrap nessa pilha.
- Um plugin de cache em nível de página (como WP Super Cache ou um CDN de página inteira) serve HTML estático antes do PHP rodar, então o firewall PHP nunca é executado para o visitante.
- O site está atrás de um proxy ou CDN e o AIOS lê o IP errado (o IP do proxy em vez do IP real do visitante), de modo que as regras de bloqueio nunca casam com o visitante certo.
Como resolver
- Confirme o tipo de servidor: Antes de tudo, descubra se o site roda em Apache ou Nginx, porque a correção muda completamente. No painel do WordPress, vá em Ferramentas -> Saúde do site -> Informações e procure a seção de servidor, ou rode o comando abaixo via terminal. Se for Nginx puro, o firewall por .htaccess nunca vai aplicar e você precisa do passo 5.
wp eval 'echo $_SERVER["SERVER_SOFTWARE"];' curl -sI https://seudominio.com.br | grep -i server - Verifique se o bootstrap do firewall foi gravado: O firewall moderno do AIOS só funciona se o arquivo de bootstrap existir e for carregado antes do WordPress. Confira se o arquivo está no lugar e se a diretiva que o carrega está presente no .htaccess ou no .user.ini. Se o arquivo não existir, o AIOS não conseguiu escrevê-lo.
ls -la wp-content/uploads/aios/firewall-rules/aios-bootstrap.php grep -n 'auto_prepend_file' .htaccess grep -n 'auto_prepend_file' .user.ini - Corrija as permissões da pasta do firewall: Se o arquivo de bootstrap não existe ou não atualiza, quase sempre é permissão. Ajuste a pasta para permitir escrita do AIOS e depois reinstale o firewall pelo painel. Aplique as permissões abaixo via FTP ou terminal.
chmod 0755 wp-content/uploads/aios/firewall-rules chmod 0644 wp-content/uploads/aios/firewall-rules/settings.php - Reinstale o firewall pelo painel: Com as permissões corretas, force o AIOS a regravar o bootstrap e as regras. No menu do plugin, abra a área de firewall e use a opção de reinstalar ou reativar as regras. Em seguida, salve a configuração para que o plugin reescreva a diretiva no .htaccess e no .user.ini.
WP Security -> Firewall -> PHP Rules -> Reinstall / Re-activate - Em Nginx, carregue o bootstrap pelo php.ini ou pool do PHP-FPM: Como o Nginx ignora o .htaccess, a diretiva que carrega o firewall precisa ir para a configuração do PHP. Adicione o auto_prepend_file no php.ini ou no arquivo de pool do PHP-FPM apontando para o caminho real do bootstrap, e reinicie o serviço. Ajuste o caminho absoluto para o seu site.
auto_prepend_file = /var/www/seusite/wp-content/uploads/aios/firewall-rules/aios-bootstrap.php sudo systemctl restart php8.2-fpm sudo systemctl reload nginx - Teste o bloqueio e recupere o acesso se travar: Valide o firewall criando uma regra temporária (por exemplo, bloqueio de um país) e testando com VPN. Se você mesmo for bloqueado e ficar sem acesso ao painel, adicione a constante de emergência ao wp-config.php para desligar a prevenção por cookie e recuperar o login, conforme a documentação oficial. Coloque a linha antes do comentário That is all, stop editing do arquivo.
define('AIOS_DISABLE_COOKIE_BRUTE_FORCE_PREVENTION', true);
# BEGIN All In One WP Security
# Carrega o firewall PHP do AIOS antes do WordPress
<IfModule mod_php.c>
php_value auto_prepend_file '/var/www/seusite/wp-content/uploads/aios/firewall-rules/aios-bootstrap.php'
</IfModule>
# Variante para PHP-FPM via .user.ini (mesma pasta do site):
# auto_prepend_file = /var/www/seusite/wp-content/uploads/aios/firewall-rules/aios-bootstrap.php
# END All In One WP Security














