Como Configurar o Fail2Ban para Proteger seu Servidor Linux

Como Configurar o Fail2Ban para Proteger seu Servidor Linux

O Fail2Ban é possivelmente o melhor software para cuidar da segurança de um servidor Linux e protegê-lo contra ataques automatizados. Quando habilitado, ele oferece diversas regras customizáveis, permitindo banir endereços de origem que possam tentar obter acesso à sua máquina.

Neste artigo, vamos explicar o que é o Fail2Ban e em quais situações ele é útil. Também vamos mostrar como você pode instalar e configurar o Fail2Ban no CentOS e em outras distribuições do Linux.

Como Instalar o Fail2Ban

Para instalar o serviço do Fail2Ban, conecte-se com acesso root à sua VPS usando um cliente SSH como Terminal (macOS e Linux) ou PuTTY (Windows).

Ubuntu:

Aqui está como instalar o Fail2Ban no Ubuntu:

Aqui está como instalar o Fail2Ban no Ubuntu:

  1. Antes de instalar um novo pacote, recomendamos que você atualize o repositório o software do sistema. Rode o seguinte comando:
    apt-get update && apt-get upgrade
  2. Instale o pacote Fail2Ban rodando o comando abaixo:
    apt-get install fail2ban
  3. Se você quiser adicionar suporte a emails no serviço do Fail2Ban, insira o seguinte comando e pressione Enter:
    apt-get install sendmail
  4. Verifique o status do Fail2Ban usando o seguinte comando:
    sudo systemctl status fail2ban

CentOS:

Siga estes passos para instalar o Fail2Ban no CentOS:

  1. O Fail2Ban para o CentOS7 é incluído no repositório dos Pacotes Adicionais para Enterprise Linux (EPEL). Para baixá-lo, rode o comando abaixo:
    sudo yum install epel-release
  2. Assim que tiver terminado isso, insira o seguinte comando para instalar o Fail2Ban e pressione Enter:
    sudo yum install fail2ban
  3. Habilite o serviço e o inicie com os seguintes comandos:
    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban

Debian:

Aqui está como instalar o Fail2Ban no Debian:

  1. Digite o comando abaixo para atualize e fazer upgrade do seu repositório de sistema, e então pressione Enter:
    apt-get update && apt-get upgrade -y
  2. Prossiga com a instalação do Fail2Ban usando o seguinte comando:
    apt-get install fail2ban
  3. Se você quiser adicionar suporte a emails, instale o Sendmail rodando este comando:
    apt-get install sendmail-bin sendmail
  4. Aqui está como conferir o status do Fail2Ban:
    systemctl status fail2ban

Fedora

Siga estas instruções para instalar o Fail2Ban no Fedora:

  1. Insira o comando abaixo e pressione Enter para atualizar o repositório do seu sistema:
    dnf update
  2. Instale o Fail2Ban usando este comando:
    dnf install fail2ban
  3. Se você quiser instalar o Sendmail, digite o seguinte comando e pressione Enter:
    dnf install sendmail
  4. Rode os seguintes comandos para iniciar e habilitar o serviço do Fail2Ban:
    systemctl start fail2ban
    systemctl enable fail2ban
  5. Se você adicionou o Sendmail, rode os seguintes códigos para iniciá-lo e habilitá-lo:
    systemctl start sendmail
    systemctl enable sendmail

Como Configurar o Fail2Ban

Depois de instalar o Fail2Ban, considere configurá-lo. Nesta seção, vamos explorar como fazer isso usando os arquivos fail2ban.local e jail.local.

Como Editar as Configurações Padrões com o fail2ban.local (Opcional)

O arquivo fail2ban.conf abriga as configurações básicas do Fail2Ban. Ele contém as configurações globais e não deve ser modificado.

Se você quiser fazer quaisquer alterações, recomendamos criar um arquivo local. Faça uma cópia do fail2ban.conf e renomeie-o para fail2ban.local para sobrescrever o perfil de configuração padrão.

Confira abaixo como mudar o nome da cópia e definir as configurações do arquivo fail2ban.local:

  1. Renomeie o arquivo fail2ban.local rodando o comando abaixo. Tenha em mente que ele não vai produzir nenhuma resposta:
    cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
  2. Digite o seguinte comando e pressione Enter para abrir o arquivo:
    sudo nano /etc/fail2ban/fail2ban.local
  3. Agora você pode editar as definições dentro do arquivo.
    loglevel = INFO

Vamos conferir as opções e os valores que podem ser escolhidos.

Defina o log output level (nível de saída de registro) como:

  • CRITICAL (CRÍTICO) – condições de emergência que devem ser investigadas imediatamente.
  • ERROR (ERRO) – algo deu errado mas não é crítico.
  • WARNING (AVISO) – uma condição potencialmente prejudicial.
  • NOTICE (NOTIFICAÇÃO) – uma condição normal porém significativa.
  • INFO (INFORMAÇÃO) – mensagens informativas que podem ser ignoradas.
  • DEBUG (DEPURAÇÃO) – mensagens de nível de depuração
logtarget = STDERR

Registre as ações em um soquete de destino específico, que pode ser:

  • FILE (ARQUIVO) – determina um arquivo de soquete como saída.
  • SYSLOG – determina um arquivo de log baseado em mensagem como saída.
  • STDERR — determina um erro padrão como saída.
  • STDOUT — saída padrão.
syslogsocket = auto

Determine o arquivo de soquete syslog para auto ou file (Se você definiu o logtarget como SYSLOG).

socket = /var/run/fail2ban/fail2ban.sock

Defina o arquivo de soquete para se comunicar com o daemon. A localização padrão é /var/run/fail2ban/fail2ban.sock.

opção socket no fail2ban
pidfile = /var/run/fail2ban/fail2ban.pid

Configure o arquivo PID para armazenar o ID do processo no servidor Fail2Ban. A localização padrão é /var/run/fail2ban/fail2ban.pid.

Como Definir o Arquivo de Configuração jail.local

O Fail2Ban possui outro arquivo de configuração chamado jail.conf, que inclui jails — filtros com ações. Contudo, os usuários não devem modificar este arquivo diretamente, pois ele contém o conjunto de regras básicas para o software.

Ao invés disso, faça uma cópia do arquivo original e dê a ele o nome de jail.local. Fazendo isso, você poderá customizar e configurar filtros e ações, incluindo ignoreip, bantime, findtime, maxretry e backend.

ignoreip

Este recurso requer que você especifique endereços de IP confiáveis, hosts DNS ou máscaras CIDR que o Fail2Ban deve ignorar. Este parâmetro permite todo o tráfego vindo das fontes especificadas. Você pode adicionar múltiplos endereços e separá-los com um espaço.

trecho da opção ignoreip

bantime

Este parâmetro define o tempo depois do qual um cliente será banido após uma tentativa falha de autenticação. O tempo de banimento é medido em segundos e o número padrão é 600 (10 minutos).

trecho do parametro bantime

findtime

Esta configuração determinar o período para tentativas falhas de login. Se a autenticação de um host falha um certo número de vezes (baseado na configuração maxretry) durante determinado período, o seu endereço de IP será banido.

parametro findtime no fail2ban

maxretry

O maxretry funciona junto do findtime — ele determina o número máximo de tentativas de login mal-sucedidas dentro de uma janela de tempo pré-definida. O valor padrão é 5

parametro maxretry

backend

Este recurso permite que você especifique a configuração de backend para a modificação de arquivos. O valor padrão é auto, mas se você usar o CentOS ou o Fedora, ele precisa ser systemd.

Confira os recursos disponíveis, dentre os quais você pode escolher:

  • pynotify – monitora as mudanças do sistema de arquivos em tempo real e requer a instalação de um monitor de alteração de arquivo.
  • gamin – o mesmo que o pynotify, mas exige uma ferramenta Gamin.
  • polling – usa um algoritmo de pesquisa que não requer bibliotecas externas.
  • systemd – usa a biblioteca python systemd para acessar o diário do systemd.
  • auto – vai usar os valors anteriores nesta ordem: pynotify, gamin e polling.
parametro backend no fail2ban

Você também pode definir configurações adicionais no arquivo jail.local, incluindo definições de SSH e iptables. As opções disponíveis incluem:

  • banaction – define qual a ação padrão para usar quando o limite do maxretry é atingido. Se você usar o firewalld, defina o valor para firewallcmd-ipset. Contudo, se você configurou o UFW como o seu firewell, mude o valor para ufw.
  • banaction_allports – permite que você rotule e bloqueie endereços de IP em todas as portas. Se você usa o firewalld, defina o valor para firewallcmd-ipset.
  • port – o valor deve ser correspondente ao definido anteriormente. Se você usa a porta padrão, mude o valor para o padrão do serviço. Se você usa uma pota não tradicional, coloque o seu número aqui.
  • filter – o nome do arquivo localizado em /etc/fail2ban/filter.d contém a informação do failregex usada para para analisar arquivos de log.

Conclusão

O Fail2Ban é um software de análise de logs que ajuda a proteger servidores web baseados em Linux de ciberataques.

Este artigo demonstrou como instalar o Fail2Ban em sistemas operacionais populares, como CentOS, Ubuntu, Debian e Fedora. Também explicamos como editar o fail2ban.local e o jail.local, os arquivos de configuração do software.

Esperamos que este artigo tenha ajudado você a configurar o Fail2Ban no seu servidor Linux. Se você tiver quaisquer dúvidas ou sugestões, deixe-as na seção de comentários abaixo.

Eu Preciso do Fail2Ban?

Sim, é uma parte essencial da infraestrutura de segurança do seu servidor. O Fail2Ban vai ajudar a manter sua máquina segura de ciberataques que tentem mexer com suas credenciais de login.

O Fail2Ban Funciona com UFW?

O UFW é uma camada de segurança adicional para proteger seu VPS de ataques de port-scanning. Apesar do Fail2Ban usar iptables como o sistema padrão de firewall, você pode customizar o software e habilitar o UFW no seu lugar.

O Fail2Ban evita ataques DDoS?

Um ataque DDoS é uma tentativa maliciosa de interromper a operação de um servidor ou serviço ao enchê-los de solicitações falsas. Usando o arquivo de configuração jail do Fail2Ban, você pode criar regras customizadas para detectar solicitações excessivas e bloquear suas fontes.

O Fail2Ban Funciona Assim que eu Instalar?

O Fail2Ban fica ativo e rodando assim que você habilitá-lo. Os usuários não precisam modificar sua configuração, já que o software oferece uma proteção razoável por padrão.

Author
O autor

Carlos E.

Carlos Estrella é formado em jornalismo pela UFSC e tem as funções de redator, tradutor e SEO na Hostinger Brasil. Já trabalhou com jornalismo de games e tecnologia e hoje aplica essa experiência escrevendo posts e tutoriais no blog da Hostinger. Suas paixões incluem games, dar rolês com a namorada e amigos e ler artigos aleatórios da Wikipédia de madrugada.