Fail2Ban Ubuntu

Aprenda a como instalar o Fail2Ban em uma maquina Ubuntu, de forma simples e bem rápida para facilitar ainda mais!

O Fail2Ban é um serviço para sistemas operacionais baseados em Linux que a partir da informação de quantidade de tentativas de conexões o envio de pacotes tal provedor dos mesmos poderá ou não ser banido de se comunicar com seu servidor.

Nota: assim como qualquer outro aplicativo de mitigação anti-ddos o fail2ban pode apresentar falsos negativos ou positivos, sendo da obrigação do responsavel pela maquina e instalação do mesmo manualmente corrigir tais erros.

Comandos para instalação

Segue abaixo os comandos que devem ser digitados como administrador no console do linux. (Utilizar sudo su inicialmente)

apt-get update

apt-get install fail2ban -y

service fail2ban start

service fail2ban restart

service fail2ban status

Configurando o fail2ban

Agora que o Fail2ban está instalado e funcionando, podemos definir regras personalizadas para quais serviços ele protege e como lidar com violações.

Primeiro, crie um arquivo de configuração para Fail2ban. Este arquivo não existe por padrão, mas o Fail2ban procurará por este arquivo e lerá o conteúdo se ele existir:

sudo nano /etc/fail2ban/jail.local

Agora vamos abrir o arquivo de configuração para edição. Utilize preferencialmente o editor de textos nano mas se preferir pode usar vi ou qualquer outro.

Execute o seguinte comando para abrir o arquivo para edição:

  • vi /etc/fail2ban/jail.local

Cole o conteúdo a seguir e salve o arquivo:

[DEFAULT] ignoreip = 127.0.0.1/8 ::1
bantime = 3600
findtime = 600
maxretry = 5
[sshd] enabled = true

Vamos rever as opções que acabamos de definir. Primeiro, estamos dizendo ao Fail2ban para ignorar endereços IP 127.0.0.1 e ::1. Estes são os endereços IPv4 e IPv6 para host local, respectivamente. Para as linhas restantes, é importante entender que fail2ban lê tempo como segundos no arquivo de configuração. Estas regras proibirão endereços IP por uma hora {bantime = 3600}, se cometerem 5 erros {maxretria = 5}, dentro de 10 minutos {findtime = 600}. Finalmente, permitimos a prisão para sshd. Sinta-se livre para ajustar esses números ao seu gosto, mas por favor considere o seguinte:

Definir um tempo de proibição de -1 resultará em uma proibição permanente desse endereço IP. Você pode precisar entrar em contato com o suporte da Liquid Web se você acidentalmente bloquear-se do seu próprio servidor. Considere essas opções com cuidado!
Agora que criamos uma configuração para usar, reinicie o Fail2ban para que nossas novas regras sejam lidas e utilizadas:

service fail2ban restart

service fail2ban status
Se fail2ban não começar com sucesso depois de criar seu arquivo de configuração, é possível que você tenha um erro de digitação no arquivo de configuração /etc/fail2ban/jail.local. Verifique o conteúdo do arquivo e tente novamente!

Uso do Fail2ban

Neste momento, você instalou com sucesso e configurou o Fail2ban, parabéns! Para o restante deste tutorial, mostraremos como usar o programa e como gerenciar blocos IP.

Execute o seguinte comando para verificar o status do Fail2ban:

fail2ban-client status

A saída de exemplo mostra o número de prisões configuradas no momento. Agora só criamos uma prisão para sshd:

Status
|- Number of jail:    1
`- Jail list:    sshd

Você também pode pesquisar o status detalhado das prisões individuais. Este comando verificará o status da prisão sshd que acabamos de configurar:

fail2ban-client status sshd

A saída de exemplo mostra que não há IPs bloqueados, parece bom!

Status for the jail: sshd
|- Filter
|  |- Currently failed:    0
|  |- Total failed:    0
|  `- File list:                 /var/log/auth.log
`- Actions
|- Currently banned:    0
|- Total banned:    0
`- Banned IP list:

Agora, por exemplo, eu vou falhar cinco tentativas de SSH para o meu servidor. Após a quinta tentativa fracassada, meu IP deve ser automaticamente bloqueado! A seguir, mostra a saída da minha estação de trabalho quando tento fazer SSH para o servidor após a quinta tentativa fracassada:

ssh [email protected]
ssh: connect to host 192.168.0.101 port 22: Connection refused

A mensagem “conexão recusada” indica que o firewall do servidor está nos bloqueando.

De volta ao servidor, vamos novamente verificar o status da prisão SSH executando:

fail2ban-client status sshd

A saída mostra que meu IP foi realmente bloqueado! Olhando para o status, podemos ver que o endereço IP da minha estação de trabalho foi adicionado à “lista IP banido“.

Status for the jail: sshd
|- Filter
|  |- Currently failed:    1
|  |- Total failed:    1
|  `- File list:                 /var/log/auth.log
`- Actions
|- Currently banned:    1
|- Total banned:    1
`- Banned IP list:    192.168.0.102

Finalmente, vamos demonstrar como remover um IP banido. Isso é útil se você tiver clientes que acidentalmente se bloqueiam de tentativas de senha incorretas. A sintaxe para este comando é a seguinte:

fail2ban-client set <JAIL NAME> unbanip <IP ADDRESS>

Por exemplo, este comando irá deslistar 192.168.0.102 da cadeia sshd.

fail2ban-client  set sshd unbanip 192.168.0.102

Vamos verificar novamente nosso trabalho e certificar-se de que meu endereço IP foi desbloqueado com sucesso:

fail2ban-client status sshd

Status for the jail: sshd
|- Filter
|  |- Currently failed:    1
|  |- Total failed:    6
|  `- File list:                 /var/log/auth.log
`- Actions
|- Currently banned:    0
|- Total banned:    1
`- Banned IP list:



Isso encerra tudo para este tutorial! Nós só discutimos proteger sshd neste tutorial, mas fail2ban pode ser usado para ajudar a proteger todos os tipos de outros serviços, como httpd. Nós encorajamos você a fazer mais algumas leituras e ver do que ele é capaz! Lembre-se que, embora o Fail2ban seja incrível, ele não é um substituto para um forte conjunto de regras de firewall. Quando configurado corretamente, no entanto, o Fail2ban é uma ótima ferramenta para ajudar a endurecer ainda mais a segurança do servidor. Divirta-se e feliz bloqueio de IP!