Antes de começar um copy & paste, leia com atenção todos os pontos. Eles são fundamentais para o correto funcionamento do fail2ban. Caso contrário, copy & paste = você será bloqueado e não terá mais acesso a sua máquina. Avisado? Ok? Podemos continuar!

Instalação no Ubuntu 16.04 (funciona no 18.04 também)

Por padrão, o ubuntu 16.04 xenial ou superior, virá com o Fail2ban 0.9.x, caso seu ubuntu seja 14.04 ou 12.02, utilize o repositório do NeuroDebian que contém os pacotes mais atuais do fail2ban para Ubuntu (http://neuro.debian.net/install_pkg.html?p=fail2ban), basta escolher o sistema operacional e a fonte do repositório.

# Atualize o seu repositório apt


apt-get update

# Instale o fail2ban


apt-get install fail2ban

 

Instalação no CentOS 7

No caso do CentOS 7, já está disponível a versão 0.9.x a partir do repositório EPEL. Se você não tem o EPEL habilitado, siga os passos a seguir:


yum install epel-release

# Instale o fail2ban


yum install fail2ban

systemctl enable fail2ban

A partir de agora, o processo é o mesmo para CentOS e Ubuntu

# Verifique a versão do fail2ban


root@host01:~# fail2ban-server --version
Fail2Ban v0.9.3

Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors
Copyright of modifications held by their respective authors.
Licensed under the GNU General Public License v2 (GPL).

Written by Cyril Jaquier.
Many contributions by Yaroslav O. Halchenko.

# Criar o arquivo jail.local e inserir a primeira regra bloqueando tentativas de login via ssh

 

## Bloquear as tentativas de login com falhas via ssh


 [sshd]
 enabled = true 
 port = ssh 
 filter = sshd 
 logpath = /var/log/auth.log 
 maxretry = 3 
 bantime = 600 
 ignoreip = 127.0.0.1,200.199.88.7

Vamos a explicação do arquivo:

[sshd] – Nome da regra
enabled = true – Se a regra está habilitada (true) ou não (false)
port = ssh – Qual a porta ou serviço (no casso ou 22 ou ssh por exemplo. Se o seu serviço ssh está em outra porta como a 2022, mude de ssh para 2022 ficando ‘port = 2022’)
filter = sshd – Nome do filtro (o filtro devera estar em /etc/fail2ban/filter.d/ e seu nome deverá ser: “Nome do filtro”.conf – ficando como no nosso exemplo, /etc/fail2ban/filter.d/sshd.conf).
logpath = /var/log/auth.log – Caminho completo do arquivo de log onde o fail2ban irá monitorar as regras contida no arquivo de filtro.
maxretry = 3 – Quantidade máxima de tentativas antes de bloquear
bantime = 600 – Tempo que irá durar o bloqueio em segundos (600 = 10 minutos)
ignoreip = 127.0.0.1,200.199.88.7 – Lista de ips que não deverão ser bloqueados (whitelist/lista branca)

Reinicie o fail2ban


systemctl restart fail2ban

Para testar, vá para outra máquina e tente acessar via ssh com usuario/senha inválidos por 3 vezes.

Após isso, você poderá verificar no fail2ban e no iptables que o ip está bloqueado. Como visto a seguir.

o comando fail2ban-client statusmostra o status de todas os filtros. Você pode utilizar o comandofail2ban-client status sshd para listar somente as informações do filtro sshd.

ou pode utilizar o iptables para listar. No caso da lista do iptables, deverá ser combinado da seguinte forma:

iptables -L f2b-nome-da-regra no nosso caso o nome da regra é sshd, portanto será usado o comando:

iptables -L f2b-sshd e o resultado será:

 

 

Uma última dica! Para retirar um ip do bloqueio, utilize o comando abaixo:

fail2ban-client set “nome do filtro” unbanip “endereco ip”

por exemplo:

fail2ban-client set sshd unbanip 192.168.15.10

Agora que você já sabe o básico do fail2ban, leia o artigo Zimbra + Fail2Ban (um exemplo prático)