Marcio Cunha

Como bloquear ataques de força bruta SSH com Fail2ban no Linux

Aprenda a endurecer a segurança do seu servidor Linux contra invasões automatizadas configurando o Fail2ban para monitorar logs e bloquear IPs maliciosos via iptables.

Marcio Cunha•5 min
Também disponível em:EnglishEspañol
Resumo
  • Robôs maliciosos testam milhares de combinações de senhas por segundo contra servidores expostos na internet.
  • O Fail2ban atua como um porteiro automatizado que vigia os registros de acesso em tempo real.
  • O programa interage diretamente com o iptables, o firewall nativo do Linux, para isolar endereços IP suspeitos.
  • Ajustar o tempo de banimento e o limite de tentativas evita bloqueios acidentais de usuários legítimos.
  • Monitorar os arquivos de log regularmente garante que as regras de segurança continuem eficientes.

Por que servidores na internet sofrem ataques constantes de força bruta

Qualquer máquina conectada à internet com a porta de acesso remoto aberta sofre tentativas de invasão automatizadas poucas horas após ligar. Robôs maliciosos varrem a rede constantemente em busca de senhas fáceis, testando milhares de combinações por minuto. Na prática, isso significa que a segurança padrão baseada apenas em senhas digitadas por humanos já não é suficiente para manter dados protegidos. Entender como funcionam essas investidas é o primeiro passo para adotar uma postura defensiva eficiente no sistema operacional.

Para blindar o ambiente, precisamos ir além das configurações básicas e entender como o tráfego de rede interage com o sistema operacional. Antes de aplicar ferramentas dinâmicas, muitos administradores utilizam barreiras estáticas de tráfego, conforme explicamos no guia sobre como configurar regras de firewall UFW no Ubuntu Linux para restringir acessos indesejados. No entanto, firewalls tradicionais bloqueiam apenas portas fixas, sem a capacidade de reagir ao comportamento agressivo de um endereço IP específico que tenta adivinhar credenciais repetidas vezes.

Como o Fail2ban monitora logs e protege o acesso remoto

O Fail2ban é um software escrito em Python que atua como um vigilante incansável nos bastidores do servidor. Ele monitora continuamente os arquivos de registro do sistema, conhecidos como logs, onde o serviço de acesso remoto anota cada tentativa de login bem-sucedida ou falha. Quando um endereço IP acumula um número excessivo de erros em um intervalo curto de tempo, o programa entende que se trata de uma tentativa de intrusão e entra em ação imediatamente.

A mágica por trás dessa proteção dinâmica é a integração com o iptables, que é o sistema nativo do Linux responsável por filtrar o tráfego de rede. Quando o limite de falhas configurado é ultrapassado, o Fail2ban cria uma regra temporária no firewall para barrar qualquer pacote vindo daquele IP hostil. Essa abordagem reduz a carga sobre o serviço de acesso e impede que o invasor continue testando senhas. Em cenários mais complexos de tráfego volumoso, técnicas complementares, como as abordadas em como bloquear ataques DDoS na camada 4 com iptables e hashlimit, ajudam a manter a estabilidade da infraestrutura.

Instalação e configuração passo a passo do Fail2ban

Instalar e configurar essa ferramenta em distribuições baseadas em Debian ou Ubuntu é um processo direto, mas que exige atenção aos detalhes dos arquivos de configuração. Nunca altere diretamente o arquivo padrão fornecido pelo pacote, pois suas modificações seriam perdidas na próxima atualização do sistema. Em vez disso, criamos uma cópia personalizada para registrar nossas regras.

  1. Atualize os repositórios de pacotes do sistema com o comando
    sudo apt update
    para garantir que a versão mais recente seja instalada.
  2. Instale o pacote do Fail2ban executando o comando
    sudo apt install fail2ban -y
    no terminal do seu servidor.
  3. Crie uma cópia do arquivo de configuração principal para iniciar a personalização com o comando
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    com segurança.

Com o arquivo de configuração local criado, abra-o com seu editor de texto favorito para ajustar parâmetros fundamentais como o tempo de banimento e a quantidade permitida de tentativas erradas. O arquivo é dividido em blocos chamados de prisões, onde cada seção controla um serviço específico, como o acesso remoto seguro ou o servidor web.

Ajustando parâmetros vitais como tempo de banimento e tolerância

Ajustar os parâmetros de tempo e tolerância exige encontrar um equilíbrio delicado entre segurança rigorosa e usabilidade. Se você definir um limite de tentativas muito baixo com um tempo de banimento curto, o invasor apenas fará uma pausa antes de retomar os testes. Por outro lado, definir tolerâncias severas demais pode fazer com que um usuário legítimo que digite a senha errada duas vezes fique trancado fora do próprio servidor.

No arquivo de configuração, procure pelas diretrizes bantime, que define o tempo em segundos que o IP ficará bloqueado, findtime, que determina a janela de tempo na qual os erros são contados, e maxretry, que estabelece o número máximo de falhas permitidas. Configurar valores como dez minutos de banimento após cinco tentativas em um período de dez minutos costuma funcionar muito bem para a maioria dos ambientes corporativos e pessoais.

Validando o funcionamento e monitorando bloqueios em tempo real

Depois de aplicar as modificações e reiniciar o serviço para carregar as novas regras, é fundamental verificar se tudo está funcionando conforme o esperado. O Fail2ban mantém seus próprios registros detalhados sobre quais endereços foram detectados e punidos. Você pode consultar o status atual da proteção de acesso remoto executando comandos específicos no terminal para garantir que o sistema está vigiando ativamente.

Para conferir o painel de status da prisão dedicada ao acesso remoto, utilize o comando sudo fail2ban-client status sshd. Esse comando exibe claramente a quantidade de IPs atualmente banidos e a lista detalhada de endereços bloqueados. Acompanhar esses dados regularmente permite identificar padrões de ataque recorrentes e ajustar suas defesas de forma proativa sempre que necessário. Para aprofundar esses conceitos na prática em produção, confira também nossa análise técnica sobre Como testar o Super I/O da placa-mãe com multímetro na bancada.

Considerações finais sobre a segurança contínua do servidor

Endurecer a segurança de um servidor Linux é um processo contínuo que vai muito além de instalar uma única ferramenta e esquecê-la. O uso do Fail2ban aliado ao controle dinâmico de pacotes reduz drasticamente a superfície de ataque e desestimula a maioria dos scripts automatizados que rondam a rede. Mantenha seus pacotes atualizados, monitore os logs periodicamente e combine diferentes camadas de proteção para garantir a integridade absoluta da sua infraestrutura digital.