Como instalar o Fail2Ban para proteger o SSH no CentOS / RHEL 8


Fail2ban é uma ferramenta gratuita, de código aberto e amplamente usada que verifica os arquivos de registro em busca de endereços IP que mostram sinais maliciosos, como muitas falhas de senha e muito mais, e os bane (atualiza as regras de firewall para rejeitar os endereços IP) . Por padrão, ele vem com filtros para vários serviços, incluindo sshd.

Neste artigo, vamos explicar como instalar e configurar fail2ban para proteger SSH e melhorar a segurança do servidor SSH contra ataques de força bruta no CentOS/RHEL 8.

Instalando Fail2ban no CentOS / RHEL 8

O pacote fail2ban não está nos repositórios oficiais, mas está disponível no repositório EPEL. Após efetuar login em seu sistema, acesse uma interface de linha de comando e, em seguida, ative o repositório EPEL em seu sistema, conforme mostrado.

# dnf install epel-release
OR
# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Posteriormente, instale o pacote Fail2ban executando o seguinte comando.

# dnf install fail2ban

Configurando Fail2ban para proteger SSH

Os arquivos de configuração fail2ban estão localizados no diretório/etc/fail2ban/e os filtros são armazenados no diretório /etc/fail2ban/filter.d/ (o arquivo de filtro para sshd é /etc/fail2ban/filter.d/sshd.conf) .

O arquivo de configuração global para o servidor fail2ban é /etc/fail2ban/jail.conf, entretanto, não é recomendado modificar este arquivo diretamente, pois provavelmente será sobrescrito ou melhorado no caso de uma atualização de pacote no futuro.

Como alternativa, é recomendado criar e adicionar suas configurações em um arquivo jail.local ou arquivos .conf separados no diretório /etc/fail2ban/jail.d/. Observe que os parâmetros de configuração definidos em jail.local sobrescreverão tudo o que estiver definido em jail.conf.

Para este artigo, criaremos um arquivo separado chamado jail.local no diretório/etc/fail2ban/conforme mostrado.

# vi /etc/fail2ban/jail.local

Assim que o arquivo for aberto, copie e cole a seguinte configuração nele. A seção [DEFAULT] contém opções globais e [sshd] contém parâmetros para a prisão sshd.

[DEFAULT] 
ignoreip = 192.168.56.2/24
bantime  = 21600
findtime  = 300
maxretry = 3
banaction = iptables-multiport
backend = systemd

[sshd] 
enabled = true

Vamos explicar resumidamente as opções na configuração acima:

  • ignoreip: specifies the list of IP addresses or hostnames not to ban.
  • bantime: specified the number of seconds that a host is banned for (i.e effective ban duration).
  • maxretry: specifies the number of failures before a host gets banned.
  • findtime: fail2ban will ban a host if it has generated “maxretry” during the last “findtime” seconds.
  • banaction: banning action.
  • backend: specifies the backend used to get log file modification.

A configuração acima, portanto, significa que se um IP falhou 3 vezes nos últimos 5 minutos, bani-o por 6 horas e ignore o endereço IP 192.168.56.2.

Em seguida, inicie e habilite o serviço fail2ban por enquanto e verifique se ele está funcionando usando o seguinte comando systemctl.

# systemctl start fail2ban
# systemctl enable fail2ban
# systemctl status fail2ban

Monitoramento de endereços IP com falha e banido usando fail2ban-client

Depois de configurar o fail2ban para proteger o sshd, você pode monitorar os endereços IP com falha e banidos usando o fail2ban-client. Para visualizar o status atual do servidor fail2ban, execute o seguinte comando.

# fail2ban-client status

Para monitorar a prisão sshd, execute.

# fail2ban-client status sshd

Para cancelar o banimento de um endereço IP em fail2ban (em todas as cadeias e banco de dados), execute o seguinte comando.

# fail2ban-client unban 192.168.56.1

Para obter mais informações sobre fail2ban, leia as seguintes páginas de manual.

# man jail.conf
# man fail2ban-client

Isso resume este guia! Se você tiver alguma pergunta ou opinião que deseja compartilhar sobre este tópico, não hesite em nos contactar através do formulário de feedback abaixo.