# Como corrigir o bloqueio de login que não funciona no All in One Security

O AIOS não bloqueia login quando o recurso Login Lockdown do All in One Security esta desativado, com limite de tentativas alto demais, ou quando os ataques chegam por um formulário de login customizado que não passa pelo wp-login.php. Nesses casos o plugin registra as falhas mas nunca tranca o IP atacante.

## O que é o bloqueio de login do AIOS que não funciona?

O Login Lockdown do All in One Security (AIOS) e o recurso que conta as tentativas de login que falham por IP e tranca esse IP por um tempo quando ele passa do número máximo de tentativas dentro do período configurado. Quando a pessoa diz que o AIOS não bloqueia login, normalmente significa que esse contador não esta trancando ninguem: os ataques de forca bruta continuam tentando senhas no wp-login.php e nenhum IP entra na lista de bloqueio, mesmo após dezenas de falhas seguidas.

## Como identificar

- Você ve dezenas de tentativas de login falhas no log, mas nenhuma mensagem de 'Your IP address has been locked out' aparece e o atacante continua tentando.
- Em WP Security -> Brute Force -> Login Lockdown a lista 'Currently Locked Out IP Addresses' fica sempre vazia, mesmo após várias falhas seguidas do mesmo IP.
- Você erra a senha de proposito o número de vezes do limite e o AIOS deixa continuar tentando, sem trancar o seu próprio IP.
- Os e-mails de notificação de bloqueio nunca chegam, porque nenhum lockout esta sendo criado.
- O ataque de forca bruta chega por /wp-login.php ou por XML-RPC e o consumo de CPU sobe, mas a lista de IPs bloqueados do AIOS não registra nada.

**Antes de começar:** Antes de baixar o limite de tentativas, adicione o seu IP fixo de gestão na allowlist do AIOS, porque um Max Login Attempts baixo pode trancar você mesmo se errar a senha. Se ficar trancado fora do wp-admin, use FTP ou o gerenciador de arquivos da hospedagem para renomear a pasta do plugin (wp-content/plugins/all-in-one-wp-security-and-firewall) e recuperar o acesso, depois renomeie de volta. Faca backup do banco antes de rodar qualquer SQL na tabela de lockdown.

## Como prevenir

- Mantenha o Enable Login Lockdown Feature sempre marcado com um Max Login Attempts entre 3 e 5 e um Time Length of Lockout de pelo menos 60 minutos.
- Sempre que mudar o tema ou ativar um formulário de login customizado, refaca o teste de errar a senha para confirmar que o AIOS ainda tranca o IP.
- Deixe o /wp-login.php fora de qualquer regra de cache de página, para que o PHP do AIOS execute e conte cada tentativa.
- Mantenha o seu IP de gestão na allowlist e configure a detecção de IP real quando o site estiver atras de Cloudflare ou outro proxy.

Erros relacionados

- [Como desbloquear usuários legítimos travados pelo Login Security do All in One Security](https://full.services/wp-fixer/corrigir-bloqueio-usuarios-aios/)
- [Como corrigir as regras de firewall que não aplicam no All in One Security](https://full.services/wp-fixer/corrigir-firewall-regras-aios/)
- [Como corrigir o 404 Lockout que bloqueia visitantes no All in One Security](https://full.services/wp-fixer/corrigir-404-lockout-aios/)

## Causa

- Enable Login Lockdown Feature desmarcado em WP Security -> Brute Force -> Login Lockdown, entao o AIOS so conta as falhas e nunca tranca o IP.
- Max Login Attempts configurado alto demais (por exemplo 20) combinado com um Login Retry Time Period curto, fazendo o bot desistir e trocar de IP antes de atingir o limite.
- O login do site não usa o wp-login.php padrão (formulário de login do tema, página My Account do WooCommerce ou login via AJAX), entao o gancho wp_authenticate do AIOS nem e chamado e a falha não e contada.
- Um plugin de cache ou o Cloudflare entregando o wp-login.php em cache para visitantes anonimos, servindo a página sem executar o PHP do AIOS que registra a tentativa.
- O AIOS enxergando o mesmo IP do proxy/CDN para todos os visitantes (REMOTE_ADDR errado atras de Cloudflare), entao as falhas de IPs diferentes se misturam e o contador por IP nunca fecha o limite de um atacante real.

## Como resolver

1. Ative o Login Lockdown e baixe o limite: abra a aba Login Lockdown, marque a opção que liga o recurso e defina um Max Login Attempts baixo com um Login Retry Time Period coerente, para que poucas falhas já tranquem o IP.

```
WP Security -> Brute Force -> Login Lockdown
Enable Login Lockdown Feature -> marcar
Max Login Attempts -> 3
Login Retry Time Period (min) -> 5
Time Length of Lockout (min) -> 60
```

2. Teste o bloqueio com o seu próprio IP: antes de confiar, erre a senha de proposito o número de vezes do limite numa aba anonima e confirme que o AIOS tranca o IP e o mostra na lista de bloqueados; lembre de deixar o seu IP de gestão na allowlist para não ficar trancado de verdade.

```
WP Security -> Brute Force -> Login Lockdown -> Currently Locked Out IP Addresses
WP Security -> Settings -> Allowlist (adicione o seu IP fixo)
```

3. Garanta que o login passa pelo wp-login.php: se o site usa formulário de login do tema, My Account do WooCommerce ou login por AJAX, o AIOS pode não interceptar a falha; force o uso da tela padrão do WordPress ou ative o CAPTCHA de login para que o plugin volte a contar as tentativas.

```
WP Security -> Brute Force -> Login Captcha -> Enable Captcha On Login Page
Conferir se o tema/WooCommerce não substitui /wp-login.php por uma página própria
```

4. Tire o wp-login.php do cache e corrija o IP real: exclua a página de login do cache para que o PHP do AIOS sempre rode, e ajuste a detecção de IP para ler o IP real do visitante quando o site esta atras de Cloudflare ou de outro proxy, senao todas as falhas chegam com o mesmo IP do CDN.

```
Excluir do cache: /wp-login.php
WP Security -> Settings -> Advanced Settings -> opção de detecção de IP do visitante
```

5. Reforce com renomear o login e bloquear XML-RPC: se o ataque vem por forca bruta direta, ative o recurso que esconde a página de login e bloqueie o XML-RPC, para reduzir a superficie além do lockdown por tentativas.

```
WP Security -> Brute Force -> Rename Login Page
WP Security -> Firewall -> Block access to XML-RPC
```


## Código

```sql
-- Diagnostico: o Login Lockdown do AIOS esta realmente bloqueando IPs?
-- Rode no phpMyAdmin / Adminer da hospedagem. Ajuste o prefixo 'wp_' se o
-- seu banco usar outro (ex.: wpab1_).

-- 1) Existe ALGUM lockout registrado? Se vier vazio, o AIOS nunca trancou ninguem:
SELECT id, failed_login_ip, lockdown_date, release_date, lock_reason
FROM wp_aiowps_login_lockdown
ORDER BY lockdown_date DESC
LIMIT 20;

-- 2) Quantas falhas de login o AIOS registrou por IP (mostra se ele AO MENOS conta):
SELECT login_attempt_ip, COUNT(*) AS falhas
FROM wp_aiowps_failed_logins
GROUP BY login_attempt_ip
ORDER BY falhas DESC
LIMIT 20;

-- Leitura: muitas linhas em failed_logins + tabela login_lockdown VAZIA =
-- o AIOS conta mas nao tranca -> Login Lockdown desligado ou limite alto demais.
```

## Perguntas frequentes

### Por que o AIOS conta as falhas mas não bloqueia o IP

Porque o Enable Login Lockdown Feature provavelmente esta desmarcado ou o Max Login Attempts esta alto demais. O AIOS registra a tentativa no log, mas so cria o bloqueio quando o número de falhas do mesmo IP passa do limite dentro do Login Retry Time Period. Ligue o recurso e baixe o limite para 3 a 5 tentativas.

### O ataque chega pela tela de login do meu tema. O AIOS bloqueia

Nem sempre. O Login Lockdown do AIOS conta falhas que passam pelo gancho de autenticacao do wp-login.php. Formulários de login do tema, a página My Account do WooCommerce ou login por AJAX podem não acionar esse gancho, entao a falha não e contada. Force o login padrão do WordPress ou ative o CAPTCHA de login.

### Tenho Cloudflare e o AIOS nunca tranca ninguem. Por que

Atras de um CDN ou proxy, o AIOS pode ler o IP do próprio Cloudflare para todos os visitantes em vez do IP real. Assim, falhas de atacantes diferentes se misturam num so IP e o contador por IP fica confuso. Ajuste a detecção de IP do visitante nas configurações avancadas para ler o IP real.

### Como testo se o bloqueio de login esta funcionando

Numa aba anonima, erre a senha de proposito o número de vezes do seu Max Login Attempts. O AIOS deve mostrar a mensagem de bloqueio e listar o IP em Currently Locked Out IP Addresses. Antes disso, coloque o seu IP fixo na allowlist para não ficar trancado de verdade durante o teste.

### O cache pode impedir o AIOS de bloquear o login

Sim. Se um plugin de cache ou o Cloudflare entrega o wp-login.php em cache para visitantes anonimos, a página aparece sem executar o PHP do AIOS que conta a tentativa. Exclua o /wp-login.php de qualquer regra de cache de página para que o lockdown volte a contar e bloquear.

### Qual e o limite ideal de tentativas de login

Para a maioria dos sites, um Max Login Attempts de 3 a 5 com Time Length of Lockout de 60 minutos já barra forca bruta sem incomodar usuários reais. Limites como 20 fazem o bot desistir e trocar de IP antes de ser trancado, e e por isso que muita gente acha que o AIOS não esta bloqueando.

### Fiquei trancado depois de baixar o limite. Como recupero o acesso

Use FTP ou o gerenciador de arquivos da hospedagem para renomear a pasta wp-content/plugins/all-in-one-wp-security-and-firewall, o que desativa o AIOS na forca e libera o login. Com o acesso de volta, renomeie a pasta de novo, adicione o seu IP na allowlist e ajuste o limite antes de reativar a proteção.

**Fonte:** [All in One Security — How do I use the brute force login attack prevention feature?](https://teamupdraft.com/documentation/all-in-one-security/faqs/how-to-use-cookie-based-brute-force-login-attack-prevention-feature/)
