Fail2ban

fail2ban-logo

Quem tem um (ou mais) servidor on-line e precisa de o administrar via SSH sem recurso a VPN nunca pode ficar muito descansado pois há sempre quem ande a rastrear IP em busca de servidores que aceitem SSH. E mais cedo ou mais tarde vão tentar entrar no seu… Bom,  há sempre maneira de minimizar um ataque BruteForce, de uma maneira fácil e rápida.

Fail2ban é um programa que funciona da seguinte maneira: filtra os logs do servidor em busca de logins falhados. De acordo com a configuração, ao fim de X tentativas falhadas o IP de origem fica bloqueado durante o tempo que quisermos. Parece fácil não é? Instalar e configurar ainda é mais fácil!

Esta aplicação pode ser instalada em quase todas as Distros e o método de configuração é semelhante, mas vou focar a instalação e configuração em Debian/Ubuntu.

Para instalar fazemos:
sudo apt-get install fail2ban

Para configurar fazemos:
sudo cp /etc/fail2ban/jail.conf  /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local
Aqui temos o ficheiro de configuração. Há vários campos que podem ser personalizados. Os principais são:
bantime – como o nome indica, é o tempo de bloqueio (em segundos) do IP que tentou entrar. Por defeito 600 (10 minutos)
maxretry – é o número de tentativas standard ao fim das quais o IP que tentou entrar é bloqueado. Aconselho 3

Bom, a partir deste momento, o Fail2ban está pronto a trabalhar. Mas uma coisa fantástica que este programa tem é que pode avisar-nos por email das tentativas  de BruteForce que o nosso servidor irá sofrer. Inclusive pode enviar dados pormenorizados. Como? O nosso servidor terá que de alguma maneira poder enviar email para fora. Um bom exemplo está aqui.
No ficheiro de configuração (jail.local) alteramos o campo destemail para o email de destino que pretendemos para receber os avisos.
Para recebermos os emails temos que ativar a opção, alterando o campo action = $(action_)s para action = $(action_mw)s. Para recebermos informação mais detalhada do ataque alteramos o campo action = $(action_mw)s para action = $(action_mwl)s.
Mais em baixo vamos encontrar os vários serviços pré-configurados, sendo o primeiro (e único ativo) o SSH. Podem ativar os outros mas só se tiverem a certeza do que estão a fazer!

E pronto! No fim, basta ativar o serviço:
sudo service fail2ban start (ou restart, caso já esteja ativo)

Há mais serviços que o nosso corajoso Fail2ban pode proteger,  sendo o limite a nossa imaginação. Há muita ajuda na Internet e no portal da comunidade.

Podem testar fazendo um “ataque” a partir de um ip externo à máquina. Não esqueçam que vão ficar bloqueados durante 10 minutos 😀
Boa sorte!