O que é

O fail2ban é o coração da defesa do GW Server. Ele lê os logs, identifica padrões de ataque e bane os IPs automaticamente. O painel já vem com cerca de 50 jails personalizadas, criadas a partir de anos de logs reais de ataque analisados: regras muito bem definidas para cada tipo de ameaça conhecida.

Aba Fail2ban, com o estado da proteção global, as jails do servidor e os IPs banidos

As jails personalizadas

As jails protegem as áreas conhecidas como críticas. Elas detectam, entre outros:

  • Brute force no login do painel e no SSH
  • Tentativas de login no WordPress (ver Proteção do WordPress)
  • Scanners buscando .env, .git, backups e outros arquivos sensíveis
  • Atacantes persistentes: pegos com mais rigor
  • Flood em sites WordPress: um mesmo IP pedindo páginas demais em pouco tempo
  • Ataques específicos a Mautic, n8n e outras aplicações

Cada tipo de site ativa as jails próprias dele: um WordPress recebe jails de WordPress; um Mautic, de Mautic; e assim por diante. Você vê os IPs banidos e os padrões nos logs do site.

Onde ficam

  • Global (Configurações → Fail2ban): as jails do servidor e do painel, ativas desde a instalação. Aqui você vê os IPs banidos, desbloqueia um deles e ajusta a lista de liberados.
  • Por site (aba Segurança do site): as jails específicas do site, que você ativa individualmente ao instalar (ver Proteção do WordPress).

Um ataque real, visto por dentro

Um exemplo concreto (registrado em vídeo): uma instalação de Mautic recém-criada recebeu, em poucas horas, um bot varrendo o site: visível no rastreador de contatos do Mautic e nos logs. O IP procurava alvos clássicos: sitemap, .env, wp-config.php, wp-config.backup, .git, docker-compose, ou seja, falhas conhecidas de WordPress e de aplicações Docker, mesmo o alvo sendo um Mautic.

Duas lições disso:

  • A varredura é constante. Há centenas de bots vasculhando todos os sites o tempo todo. Não é pessoal: é ruído de internet. O que importa é ter as jails ativas para bani-los.
  • Regras cruzadas. Como os atacantes usam o mesmo repertório em qualquer alvo, o GW Server aplica também no Mautic (e em outras aplicações) as regras que protegem contra varreduras de WordPress e de Docker. Cada aplicação nova abre novas portas de ataque, e o sistema evolui a cada atualização justamente por isso: mais um motivo para manter o painel atualizado.

O Mautic ajuda aqui por acaso: ele registra as visitas de forma visual (no rastreador de contatos), o que torna um ataque fácil de enxergar. Mas o essencial está sempre nos logs: é deles que o fail2ban extrai os padrões para banir. Ver Geolocalização de leads para o rastreador do Mautic.

Quanto tempo dura o bloqueio

Depende do que o IP fez. A ideia é simples: errar uma senha não é o mesmo que procurar uma brecha.

O que o IP fez Bloqueio
Errou a senha no login do site o que você definir na aba Segurança do site, por padrão 1 hora
Pediu páginas que não existem em excesso, ou fechou conexões de forma suspeita 1 a 24 horas
Procurou brecha: arquivos .env e .git, backdoor em PHP, caminhos de outros sistemas, lista de usuários, endereço interno da nuvem 7 dias, e dobra a cada vez que ele volta, até 30 dias
Insistiu a ponto de levar 3 bloqueios em qualquer jail dentro de 7 dias mais 24 horas, agora cobrindo também a porta do painel

O bloqueio longo da terceira linha é a mudança mais recente. O motivo veio de medição em servidor real: a maior parte dos IPs bloqueados voltava depois que o bloqueio de 24 horas vencia, e um deles derrubou o desempenho de um site justamente numa dessas voltas. Como ninguém procura /.env por acidente, esse tipo de acesso passou a custar caro.

Login errado nunca entra nessa escalada. Você, seu cliente ou um visitante que erra a senha continua com o bloqueio curto de sempre. A escalada só vale para a varredura, que visitante nenhum faz sem querer.

Nenhum desses bloqueios fecha a porta SSH: ela fica de fora de propósito, coberta só pela jail própria do SSH. É assim que o dono do servidor nunca fica trancado para fora por completo: o SSH continua disponível para você se destravar. Ver CLI de emergência (gws-cli).

Liberando o seu IP

A lista de liberados (a whitelist) é a relação de IPs que o fail2ban nunca bane, aconteça o que acontecer.

Coloque o seu IP nessa lista. Sem isso, uma sequência de tentativas suas: errar a senha algumas vezes, testar uma URL, rodar uma ferramenta: pode fazer o fail2ban banir você do seu próprio servidor. O IP usado na instalação já entra sozinho.

  1. Descubra seu IP (busque “qual é o meu IP” ou acesse um site como meuip.com).
  2. Em Configurações → Fail2ban, adicione o IP à lista de liberados.

Se a sua internet é residencial, o IP costuma mudar de tempos em tempos. Se um dia o painel parar de responder só para você, é provável que o IP novo não esteja na lista: o desbloqueio abaixo resolve.

Desbloquear um IP

Se um IP legítimo foi banido (o seu, o de um cliente, o do escritório), informe o endereço na função de desbloqueio e ele é liberado na hora. Para não se repetir, acrescente também à lista de liberados.

Se o próprio IP banido é o que impede o acesso ao painel (ele bane as portas 80/443/22222, não a 22), o acesso por SSH continua de pé. Rode sudo gws-cli liberar no servidor: ele solta o ban e já adiciona o IP à lista de liberados num só comando, sem precisar abrir o painel. Ver CLI de emergência (gws-cli).

Firewall de portas

O painel tem um firewall clássico de portas, que libera automaticamente as principais: 22 (SSH), 80 e 443 (web) e 22222 (o acesso de emergência ao painel).

Se você usa SMTP, pode precisar liberar a porta 587 (ou a alternativa do seu provedor) no firewall. Adicione a regra, aplique e confirme. Ver E-mail e SMTP.

O firewall evita que aplicações fiquem escaneando portas abertas sem serviço. O cuidado principal é liberar exatamente as portas que você precisa, nem mais, nem menos.

Veja também