Como instalar Fail2ban no Rocky Linux e AlmaLinux
Escrito em Python, Fail2ban é um Sistema de Prevenção de Intrusões (IPS) gratuito e de código aberto que protege o servidor contra ataques de força bruta.
Após um determinado número de tentativas de senha incorretas, o endereço IP do cliente é proibido de acessar o sistema por um período determinado ou até que o administrador do sistema o desbloqueie. Dessa forma, o sistema fica protegido contra repetidos ataques de força bruta de um único host.
Fail2ban é altamente configurável e pode ser configurado para proteger uma infinidade de serviços, como SSH, vsftpd, Apache e Webmin.
Neste guia, nos concentramos em como você pode instalar e configurar o Fail2ban no Rocky Linux e no AlmaLinux.
Etapa 1: certifique-se de que o Firewalld esteja em execução
Por padrão, o Rocky vem com o Firewalld em execução. Entretanto, se este não for o caso no seu sistema, inicie o Firewalld executando:
sudo systemctl start firewalld
Em seguida, habilite-o para iniciar no momento da inicialização:
sudo systemctl enable firewalld
Em seguida, verifique o status do Firewalld
sudo systemctl status firewalld
Além disso, você pode confirmar todas as regras do Firewalld atualmente aplicadas usando o comando:
sudo firewall-cmd --list-all
Etapa 2: Instale EPEL no Rocky Linux
Como requisito para a instalação de fail2ban e outros pacotes necessários, você precisa instalar o repositório EPEL que fornece pacotes adicionais de alta qualidade para distribuições baseadas em RHEL.
sudo dnf install epel-release
Etapa 3: Instale Fail2ban no Rocky Linux
Com o EPEL instalado, prossiga e instale o fail2ban e o pacote fail2ban-firewalld.
sudo dnf install fail2ban fail2ban-firewalld
Isso instala o servidor fail2ban e o componente firewalld junto com outras dependências.
Com a instalação do fail2ban concluída, inicie o serviço fail2ban.
sudo systemctl start fail2ban
E habilite-o para iniciar no momento da inicialização.
sudo systemctl enable fail2ban
Você pode verificar o status do serviço fail2ban executando o comando:
sudo systemctl status fail2ban
A saída é uma confirmação de que o Fail2ban está funcionando como seria de esperar.
Etapa 4: Configurando Fail2ban no Rocky Linux
Continuando, precisamos configurar o fail2ban para que funcione conforme planejado. Idealmente, editaríamos o arquivo de configuração principal – /etc/fail2ban/jail.conf. No entanto, isso é desencorajado. Como solução alternativa, copiaremos o conteúdo do arquivo de configuração jail.conf para o arquivo jail.local.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Agora, abra o arquivo jail.local usando seu editor preferido.
sudo vim /etc/fail2ban/jail.local
Na seção [DEFAULT], certifique-se de ter as seguintes configurações conforme aparecem.
bantime = 1h
findtime = 1h
maxretry = 5
Vamos definir os atributos:
- A diretiva bantime especifica por quanto tempo um cliente será banido após tentativas de autenticação malsucedidas.
- A diretiva findtime é a duração ou período dentro do qual o fail2ban considerará ao considerar repetidas tentativas de senha incorreta.
- O parâmetro maxretry é o número máximo de tentativas de senha incorreta antes que o cliente remoto seja impedido de acessar o servidor. Aqui, o cliente será bloqueado após 5 falhas de autenticação.
Por padrão, fail2ban funciona com iptables. No entanto, isso foi descontinuado em favor do firewalld. Precisamos configurar o fail2ban para funcionar junto com o firewalld em vez do iptables.
Então, execute com o comando:
sudo mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
Para aplicar as alterações, reinicie o fail2ban:
sudo systemctl restart fail2ban
Etapa 5: Protegendo o serviço SSH com Fail2ban
Por padrão, o fail2ban não bloqueia nenhum host remoto até que você habilite a configuração jail para um serviço que deseja proteger. A configuração da prisão é especificada no caminho /etc/fail2ban/jail.d e substituirá a configuração especificada no arquivo jail.local.
Neste exemplo, criaremos um arquivo de configuração jail para proteger o serviço SSH. Portanto, crie o arquivo jail SSH.
sudo vim /etc/fail2ban/jail.d/sshd.local
Em seguida, cole as seguintes linhas:
[sshd]
enabled = true
Override the default global configuration
for specific jail sshd
bantime = 1d
maxretry = 3
Na configuração acima, um host remoto será proibido de acessar o sistema por 1 dia após 3 tentativas malsucedidas de login SSH. Salve as alterações e reinicie o serviço fail2ban.
sudo systemctl restart fail2ban
Em seguida, verifique o status da configuração da prisão usando o utilitário de linha de comando fail2ban-client.
sudo fail2ban-client status
Na saída, podemos ver que temos 1 jail configurada para um serviço chamado ‘sshd’.
Além disso, você pode confirmar o valor maxretry da prisão sshd usando a opção get.
sudo fail2ban-client get sshd maxretry
3
O valor impresso 3 deve corresponder ao que você especificou no arquivo sshd.local.
Etapa 6: Testando a configuração do Fail2ban
Depois de configurar o fail2ban e criar um arquivo de configuração jail para o serviço SSH, realizaremos um teste e simularemos 3 logins com falha, especificando uma senha incorreta para cada solicitação de senha.
Então vá para um sistema Linux remoto e tente fazer login usando a senha errada. Após 3 tentativas fracassadas, a conexão será interrompida e qualquer tentativa subsequente de reconectar será bloqueada até que a duração do banimento termine.
Para coletar insights sobre os sistemas clientes bloqueados, verifique o status da prisão.
sudo fail2ban-client status sshd
Para desbanir ou remover o cliente da prisão, execute o comando:
sudo fail2ban-client unban 192.168.2.102
Mais uma vez, verifique o status da prisão para garantir que o cliente não esteja incluído na lista de IP banidos.
sudo fail2ban-client status sshd
Como vimos, o Fail2ban é uma ferramenta muito útil para afastar intrusos que procuram invadir o seu sistema Linux. Ele funciona em conjunto com o Firewalld para banir sistemas clientes por um período especificado após um número específico de tentativas de login malsucedidas. Ao fazer isso, fornece uma camada extra de proteção para o seu servidor Linux.