Pesquisa de site

Como usar Fail2ban para proteger seu servidor Linux


Melhorar a segurança do seu servidor deve ser uma das suas principais prioridades quando se trata de gerenciar um servidor Linux. Ao revisar os logs do servidor, muitas vezes você encontrará diferentes tentativas de login de força bruta, inundações da web, busca de exploração e muitos outros.

Com um software de prevenção de intrusões como o fail2ban, você pode examinar os logs do servidor e adicionar regras extras de iptables para bloquear endereços IP problemáticos.

Leia também: Como instalar Fail2Ban para proteger SSH no CentOS/RHEL 8

Este tutorial mostrará como instalar o fail2ban e definir a configuração básica para proteger seu sistema Linux contra ataques de força bruta.

Requisitos

Fail2ban é escrito em python e o único requisito é ter o python instalado:

  • O branch Fail2ban 0.9.x requer Python >=2.6 ou Python >=3.2
  • A ramificação Fail2ban 0.8.x requer Python>=2.4
  • Acesso root ao seu sistema
  • Opcionalmente, iptables ou showewall e sendmail

Como instalar Fail2Ban em sistemas Linux

A instalação do fail2ban é relativamente fácil:

Instale Fail2Ban no CentOS/RHEL

Primeiro, atualize seus pacotes, habilite o repositório Epel e instale fail2ban conforme mostrado.

yum update
yum install epel-release
yum install fail2ban

Instale Fail2Ban no Debian/Ubuntu

Primeiro, atualize seus pacotes e instale fail2ban conforme mostrado.

apt-get update && apt-get upgrade -y
apt-get install fail2ban

Opcionalmente, se desejar ativar o suporte de email (para notificações por email), você pode instalar o sendmail.

yum install sendmail                   [On CentOS/RHEL]
apt-get install sendmail-bin sendmail  [On Debian/Ubuntu]

Para ativar fail2ban e sendmail use os seguintes comandos:

systemctl start fail2ban
systemctl enable fail2ban
systemctl start sendmail
systemctl enable sendmail

Como configurar Fail2ban em sistemas Linux

Por padrão, fail2ban usa os arquivos .conf localizados em /etc/fail2ban/ que são lidos primeiro. No entanto, eles podem ser substituídos por arquivos .local localizados no mesmo diretório.

Assim, o arquivo .local não precisa incluir todas as configurações do arquivo .conf, mas apenas aquelas que você deseja substituir. As alterações devem ser feitas nos arquivos .local, não no .conf. Isso evitará a substituição de alterações ao atualizar o pacote fail2ban.

Para os fins deste tutorial, copiaremos o arquivo fail2ban.conf existente para fail2ban.local.

cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

Agora você pode fazer as alterações no arquivo .local usando seu editor de texto favorito. Os valores que você pode editar são:

  • loglevel – este é o nível de detalhe a ser registrado. As opções possíveis são:

    • CRÍTICO
    • ERRO
    • AVISO
    • PERCEBER
    • INFORMAÇÕES
    • DEPURAR
  • logtarget – registra as ações em um arquivo específico. O valor padrão é /var/log/fail2ban.log. Você pode, no entanto, alterar isso para:

    • STDOUT – gera quaisquer dados
    • STDERR – exibe quaisquer erros
    • SYSLOG – registro baseado em mensagens
    • Arquivo – saída para um arquivo
  • socket – diretório no qual o arquivo de soquete será colocado.
  • pidfile – localização do pidfile.

Configurar Fail2ban jail.local

Um dos arquivos mais importantes do fail2ban é o jail.conf que define suas jails. É aqui que você define os serviços para os quais o fail2ban deve ser habilitado.

Como mencionamos anteriormente, os arquivos .conf podem ser alterados durante as atualizações, portanto, você deve criar um arquivo jail.local onde poderá aplicar suas modificações.

Outra maneira de fazer isso é simplesmente copiar o arquivo .conf com:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Caso você esteja usando CentOS ou Fedora, você precisará alterar o backend em jail.local de “auto ” para “systemd ”.

Se você estiver usando Ubuntu/Debian, não há necessidade de fazer esta modificação, mesmo que eles também usem systemd.

O arquivo jail ativará o SSH por padrão para Debian e Ubuntu, mas não no CentOS. Se desejar habilitá-lo, basta alterar a seguinte linha em /etc/fail2ban/jail.local:

[sshd]
enabled = true
Tempos de banimento e novas tentativas

Você pode configurar a circunstância após a qual um endereço IP será bloqueado. Para isso, fail2ban usa bantime, findtime e maxretry.

  • bantime – este é o número de segundos que um endereço IP permanecerá banido (padrão 10 min).
  • findtime – a quantidade de tempo entre as tentativas de login, antes que o host seja banido. (padrão 10 min). Em outras palavras, se fail2ban estiver configurado para bloquear um endereço IP após 3 tentativas de login malsucedidas, essas 3 tentativas deverão ser feitas dentro do período de busca (10 minutos).
  • maxretry – número de tentativas a serem feitas antes que um banimento seja aplicado. (padrão 3).
Endereço IP da lista de permissões

Claro, você desejará colocar certos endereços IP na lista de permissões. Para configurar esses endereços IP, abra /etc/fail2ban/jail.local com seu editor de texto favorito e remova o comentário da seguinte linha:

ignoreip = 127.0.0.1/8  ::1

Então, você pode colocar os endereços IP que deseja que sejam ignorados. Os endereços IP devem ser separados por espaço ou vírgula.

Alertas de E-mail

Se desejar receber alertas por e-mail sobre o evento, você terá que definir as seguintes configurações em /etc/fail2ban/jail.local:

  • estemail – endereço de e-mail, onde você receberá a notificação.
  • Nome do remetente – o remetente que você verá ao receber a mensagem.
  • remetente – endereço de e-mail do qual o fail2ban enviará os e-mails.

O mta (agente de transferência de e-mail) padrão é definido como sendmail.

Para receber notificações por e-mail, você também precisará alterar a configuração de “ação” de:

Action = %(action_)s

Para um destes:

action = %(action_mw)s
action = %(action_mwl)s
  • %(action_mw)s – banirá o host e enviará um e-mail com um relatório whois.
  • %(action_mwl)s – banirá o host, fornecerá informações whois e todas as informações relevantes do arquivo de log.

Configuração adicional do Fail2ban Jail

Até agora vimos as opções básicas de configuração. Se desejar configurar uma jail você precisará habilitá-la no arquivo jail.local. A sintaxe é bem simples:

[jail_to_enable]
. . .
enabled = true

Onde você deve substituir jail_to_enable pela prisão real, por exemplo, “sshd ”. No arquivo jail.local, os seguintes valores serão predefinidos para o serviço ssh:

[sshd]

port = ssh
logpath = %(sshd_log)s

Você pode ativar o filtro que ajudará a identificar se uma linha no log falhou. O valor do filtro é na verdade uma referência a um arquivo com o nome do serviço seguido por .conf. Por exemplo: /etc/fail2ban/filter.d/sshd.conf.

A sintaxe é:

filter = service

Por exemplo:

filter = sshd

Você pode revisar os filtros existentes no seguinte diretório: /etc/fail2ban/filter.d/.

Usar cliente fail2ban

Fail2ban vem com um cliente que pode ser usado para revisar e alterar a configuração atual. Por oferecer muitas opções, você pode consultar seu manual com:

man fail2ban-client 

Aqui você verá alguns dos comandos básicos que você pode usar. Para revisar o status atual do fail2ban ou de uma prisão específica, você pode usar:

fail2ban-client status

O resultado será semelhante a este:

Para prisão individual, você pode executar:

fail2ban-client status sshd

Na captura de tela abaixo, você verá que falhei propositalmente em vários logins para que o fail2ban possa bloquear o endereço IP do qual eu estava tentando me conectar:

Conclusão

Fail2ban é um sistema de prevenção de intrusões excelente e bem documentado, que fornece segurança extra ao seu sistema Linux. Leva algum tempo para se acostumar com sua configuração e sintaxe, mas depois de se familiarizar com ele, você se sentirá à vontade para alterar e estender suas regras.