Como instalar Fail2Ban para proteger SSH no CentOS/RHEL 8
Fail2ban é uma ferramenta de prevenção de intrusões gratuita, de código aberto e amplamente utilizada que verifica arquivos de log em busca de endereços IP que mostram sinais maliciosos, como muitas falhas de senha e muito mais, e os proíbe (atualiza o firewall regras para rejeitar os endereços IP). Por padrão, ele vem com filtros para vários serviços, incluindo sshd.
Leia também: Configuração inicial do servidor com CentOS/RHEL 8
Neste artigo, explicaremos como instalar e configurar o fail2ban para proteger o SSH e melhorar a segurança do servidor SSH contra ataques de força bruta em 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 fazer login em seu sistema, acesse uma interface de linha de comando e habilite 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
Depois, 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 em /etc/fail2ban/filter.d/. diretório (o arquivo de filtro para sshd é /etc/fail2ban/filter.d/sshd.conf).
O arquivo de configuração global do servidor fail2ban é /etc/fail2ban/jail.conf, porém, não é recomendado modificar este arquivo diretamente, pois provavelmente será sobrescrito ou melhorado no caso de um pacote atualizar no futuro.
Como alternativa, é recomendado criar e adicionar suas configurações em um arquivo jail.local ou em arquivos .conf
separados em /etc/fail2ban/jail. diretório d/. Observe que os parâmetros de configuração definidos em jail.local substituirã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 estiver 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 brevemente as opções na configuração acima:
- ignoreip: especifica a lista de endereços IP ou nomes de host que não devem ser banidos.
- bantime: especifica o número de segundos durante os quais um host é banido (ou seja, duração efetiva do banimento).
- maxretry: especifica o número de falhas antes que um host seja banido.
- findtime: fail2ban banirá um host se ele tiver gerado “maxretry” durante os últimos “findtime” segundos.
- banaction: ação de banimento.
- backend: especifica o backend usado para obter a modificação do arquivo de log.
A configuração acima, portanto, significa que se um IP falhou 3 vezes nos últimos 5 minutos, bani-lo por 6 horas e ignorar o Endereço IP 192.168.56.2.
Em seguida, inicie e ative o serviço fail2ban por enquanto e verifique se ele está instalado e funcionando usando o seguinte comando systemctl.
systemctl start fail2ban
systemctl enable fail2ban
systemctl status fail2ban
Monitoramento de endereço IP com falha e banido usando fail2ban-client
Depois de configurar fail2ban para proteger o sshd, você pode monitorar 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 no fail2ban (em todas as jails e banco de dados), execute o seguinte comando.
fail2ban-client unban 192.168.56.1
Para obter mais informações sobre fail2ban, leia as páginas de manual a seguir.
man jail.conf
man fail2ban-client
Isso resume este guia! Se você tiver alguma dúvida ou opinião que queira compartilhar sobre este tópico, não hesite em nos contatar através do formulário de feedback abaixo.