Pesquisa de site

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.