93 lines
3.2 KiB
Markdown
93 lines
3.2 KiB
Markdown
+++
|
|
date = '2024-10-23T20:43:44-03:00'
|
|
title = 'Melhorando a segurança do seu servidor com o Fail2ban'
|
|
description = "Post no blog do Thanwer sobre como usar o Fail2ban"
|
|
tags = [
|
|
"webserver",
|
|
"GNU/Linux",
|
|
"Basics Series",
|
|
]
|
|
canonical = "posts/fail2ban-basics"
|
|
+++
|
|
|
|
[Fail2ban](https://github.com/fail2ban/fail2ban) é um software que escaneia arquivos de logs como o `/var/log/auth.log` e bane IPs com muitas falhas de login.
|
|
|
|
Isso é apenas uma camada de segurança e deve ser utilizada em conjunto com outras ferramentas como o iptables e melhorias na configuração do SSH.
|
|
|
|
Eu sempre configuro uma jail para SSH usando o fail2ban em meus servidoresGNU/Linux.
|
|
|
|
Hoje, vou mostrar como configurar uma jail simples para o SSH.
|
|
|
|
## Instalando o fail2ban
|
|
|
|
Primeiramente voce deve (obviamente) instar o pacote fail2ban.
|
|
|
|
```bash
|
|
apt install fail2ban # Para Ubuntu/Debian
|
|
yum install fail2ban # Para CentOS/RHEL
|
|
```
|
|
|
|
## Configurando o fail2ban
|
|
|
|
A configuração do fail2ban é muito simples, os arquivos estão todos localizados em: `/etc/fail2ban`
|
|
|
|
O `fail2ban.conf` contem a configuração default, é uma boa pratica não editar esse arquivo, mas sim criar uma cópia com o nome `fail2ban.local`, que sobrescreve o `fail2ban.conf`:
|
|
|
|
```bash
|
|
cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
|
|
```
|
|
|
|
O padrão deve nos atender, então vamos pular isso por enquanto.
|
|
|
|
Depois, temos o arquivo `jail.conf` , que é onde configuramos as nossas "jails" como o nome sugere.
|
|
|
|
Aqui vamos fazer algumas alterações, primeiro vamos criar um arquivo `jail.local` com o seguinte conteudo:
|
|
|
|
```
|
|
[DEFAULT]
|
|
bantime.multipliers = 5 15 30 60 300 720 1440 2880
|
|
bantime = 86400
|
|
findtime = 86400
|
|
maxretry = 2
|
|
ignoreip = 192.2.0.0/24, 2001:0DB8::/32
|
|
|
|
[sshd]
|
|
backend=systemd
|
|
enabled=true
|
|
mode=aggressive
|
|
action = iptables[name=SSH, port=22, protocol=tcp]
|
|
```
|
|
|
|
As configurações são autoexplicativas, na seção `[DEFAULT]` mudamos alguns parametros, como o tempo que devemos banis os atacantes, e definimos IPs confiaveis. Lembre-se de alterar os valores para os que fazem sentido para o seu ambiente, principalmente o `ignoreip`.
|
|
|
|
Invista seu tempo para estudar e melhorar esses parametros.
|
|
|
|
## Ativando e testando o fail2ban
|
|
|
|
Ative e inicie o serviço fail2ban:
|
|
```bash
|
|
systemctl enable --now fail2ban
|
|
```
|
|
|
|
Para testar as jails SSH, basta tentar o login com a senha incorreta por algumas vezes.
|
|
|
|
Voce pode ver o status com os seguintes comandos:
|
|
```bash
|
|
fail2ban-client status
|
|
fail2ban-client status sshd
|
|
```
|
|
|
|

|
|
|
|
Como voce pode ver, o serviço SSH em uma VPS em cloud é constantemente atacada, meu servidor já tem mais de 400 IPs banidos.
|
|
|
|
## Mais jails!
|
|
|
|
Hoje eu mostrei como proteger o seu serviço SSH em uma maquina GNU/Linux, mas não acabou, voce pode usar o fail2ban para qualquer serviço!
|
|
|
|
Voce pode até mesmo integrar a proteção do fail2ban com o [Cloudflare](https://github.com/nesrual/fail2ban-cloudflare!) se voce usa os serviços deles!
|
|
|
|
Eu sugiro que voce veja o diretório `/etc/fail2ban/filter.d`, que contem os filtros default para varios serviços populares, como Apache, Asterisk, serviços de servidor de e-mail, etc...
|
|
|
|
Tambem leia a [documentação oficial](https://github.com/fail2ban/fail2ban/wiki).
|