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:
- 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
- Instale o pacote Fail2Ban rodando o comando abaixo:
apt-get install fail2ban
- Se você quiser adicionar suporte a emails no serviço do Fail2Ban, insira o seguinte comando e pressione Enter:
apt-get install sendmail
- Verifique o status do Fail2Ban usando o seguinte comando:
sudo systemctl status fail2ban
CentOS:
Siga estes passos para instalar o Fail2Ban no CentOS:
- 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
- Assim que tiver terminado isso, insira o seguinte comando para instalar o Fail2Ban e pressione Enter:
sudo yum install fail2ban
- 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:
- 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
- Prossiga com a instalação do Fail2Ban usando o seguinte comando:
apt-get install fail2ban
- Se você quiser adicionar suporte a emails, instale o Sendmail rodando este comando:
apt-get install sendmail-bin sendmail
- Aqui está como conferir o status do Fail2Ban:
systemctl status fail2ban
Fedora
Siga estas instruções para instalar o Fail2Ban no Fedora:
- Insira o comando abaixo e pressione Enter para atualizar o repositório do seu sistema:
dnf update
- Instale o Fail2Ban usando este comando:
dnf install fail2ban
- Se você quiser instalar o Sendmail, digite o seguinte comando e pressione Enter:
dnf install sendmail - Rode os seguintes comandos para iniciar e habilitar o serviço do Fail2Ban:
systemctl start fail2ban
systemctl enable fail2ban
- 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:
- 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
- Digite o seguinte comando e pressione Enter para abrir o arquivo:
sudo nano /etc/fail2ban/fail2ban.local
- 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.
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.
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).
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.
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
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.
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.
Aprenda Mais Boas Práticas de Segurança para VPS
Tutorial lptables – VPS de Segurança do Ubuntu com o Firewall do Linux
Como Configurar VPN no Servidor Linux com OpenVPN – Passo a Passo
Como Configurar um Firewall no Ubuntu com UFW
Antivírus para Linux: como instalar ClamAV no CentOS
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.