Proteja SSH com Fail2ban em Ubuntu 24.04: guia passo a passo
Como instalar e configurar Fail2ban no Ubuntu 24.04 para bloquear automaticamente ataques de força bruta contra SSH: prisão dedicada, teste de proibição e desbloquear um IP.
Qualquer um que gere um servidor Linux que pode ser acessado a partir da internet sabe: assim que a porta SSH é exposta, tentativas de acesso automatizado bot começam a chegar que combinações de usuário experiência e repetir senhas. É clássico.Ataque de força brutaUma senha robusta ou autenticação chave já reduz o risco, mas não impede que os bots continuem a bater, ocupando recursos e enchendo logs. A solução mais comum para conter o problema é chamadaFail2ban, e neste guia vemos como instalá-lo e configurá-lo passo a passoUbuntu 24.04 LTS (Nobre Numbat).
O que é o Fail2ban e como funciona
Fail2ban é um serviço (demônio) que analisa os arquivos de log do sistema em tempo real — no nosso caso aqueles relacionados ao acesso SSH — procurando padrões que indicam tentativas de login falhadas. Quando o mesmo endereço IP excede uma série de tentativas falhadas em um determinado intervalo de tempo, Fail2ban automaticamente intervém criando uma regra de firewall que bloqueia esse IP por um período estabelecido. Este mecanismo de monitorização e de bloqueio é chamado prisão(literalmente "prisão"): cada prisão é dedicada a um serviço específico (SSH, um servidor web, um servidor de e-mail, etc.) e tem suas próprias regras.
Em Ubuntu 24.04, Fail2ban está disponível como um pacote oficial no repositóriouniverso universo(versão 1.0.2 no momento em que escrevemos), então você não precisa adicionar repositórios externos: enquanto o repositório do universo estiver habilitado, o que acontece por padrão nas instalações padrão do Ubuntu Server e Desktop.
Pré-requisitos
- Um servidor Ubuntu 24. 04com acesso SSH e um usuário com privilégios
sudo. - Acesso à linha de comando, localmente ou via SSH (tenha cuidado para não fechar a sessão atual antes de verificar que as novas regras não o bloqueiam também: mais tarde veremos como evitá-lo).
- Opcional mas recomendado: aFirewall ativo(UFW é o incluído por padrão no Ubuntu), que Fail2ban usará como "braço armado" para aplicar os blocos.
1. Instalar Fail2ban
Atualizar a lista de pacotes e instalar Fail2ban com:
sudo apt update
sudo apt install fail2banNo final da instalação, o serviço já começa ativo com a configuração padrão, mas é bom verificar o status imediatamente:
sudo systemctl status fail2banSe o sistema ainda não estiver ativo, ative-o com:
sudo systemctl enable fail2ban2. Criar configuração personalizada (cadeia.local)
Fail2ban lê suas configurações de arquivos diferentes. A principal,/etc/fail2ban/jail.conf, é substituído para cada atualização do pacote: por esta razãonunca deve ser alterado diretamente. As personalizações devem ser escritas em um arquivo separado,jail.local, que Fail2ban lê depois e que ele sempre precede as configurações padrão. Crie o arquivo copiando o arquivo original como base:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.localSecção[DEFAULT], que se aplica a todas as prisões, salvo indicação em contrário, encontrar três parâmetros-chave que é útil entender antes de editá-los:
- Proibições: quanto tempo um IP permanece bloqueado uma vez que o limiar de tentativa é excedido (por exemplo.
10mdurante dez minutos,1hdurante uma hora). - encontrar tempo: a janela de tempo em que tentativas falhadas são contadas (por padrão 10 minutos).
- Maxretry: o número de tentativas falhadas permitidas antes do bloco (padrão 5).
Para uma cadeia SSH mais agressiva para bots, sem arriscar muitos falsos positivos para um usuário humano que errou a senha uma vez, valores comomaxretry = 4,findtime = 10mebantime = 1hSou um bom ponto de partida. Se seu IP fixo for conhecido, você também pode excluí-lo de controles adicionando-o à linhaignoreip(já presente na secção[DEFAULT]), separando-o de outros com um espaço: isso evita auto-excluí-lo por engano durante os testes.
3. Configurar a cadeia para SSH
Usando o arquivo você vai encontrar a seção dedicada ao SSH, que começa com[sshd]Certifique-se de que isto está definido:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 4
findtime = 10m
bantime = 1hO parâmetroenabled = trueé o que ativa a proteção para SSH: na configuração padrão muitas cadeias estão presentes, mas desabilitadas, apenas para deixar o administrador escolher quais serviços proteger. Se você moveu SSH em uma porta diferente de 22 (uma prática comum para reduzir o ruído de fundo dos bots), lembre-se de indicar no campoport.
Salve o arquivo e reinicie o serviço porque as alterações têm efeito:
sudo systemctl restart fail2ban4. Certifique-se de que a prisão está ativa
O comando principal para diálogo com o Fail2ban Está.fail2ban-client. Para ver a lista de prisões actualmente activas:
sudo fail2ban-client statusPara detalhes da cadeia SSH em particular — quantas tentativas falhadas ele registrou e quais IPs estão atualmente bloqueados:
sudo fail2ban-client status sshdTambém é útil manter um olho no diário dedicado, especialmente nos primeiros dias após a ativação, para entender como a prisão se comporta na prática:
sudo tail -f /var/log/fail2ban.log5. Teste o bloco
A maneira mais realista de testar a cadeia é tentar conectar-se ao SSH de outra máquina (ou de outro terminal) digitando voluntariamente uma senha errada várias vezes abaixo, até que você passe o limiarmaxretryPreparar. Após a última tentativa falhada, o IP do qual os links vieram deve aparecer como bandido na saída defail2ban-client status sshd, e mais tentativas de se conectar a partir desse mesmo endereço cairá no vazio até o final dobantime.
Alternativamente, se você preferir não arriscar bloquear sua sessão de trabalho por engano, você pode forçar manualmente uma proibição de teste em um IP de teste (como um endereço de sua rede local não utilizada):
sudo fail2ban-client set sshd banip 192.0.2.106. Desbloquear um IP
Pode acontecer que um IP legítimo seja proibido por engano, por exemplo depois de algumas tentativas de login falhadas por você. Para remover manualmente o bloco sem ter que esperar pela expiração dobantime, utilizado:
sudo fail2ban-client set sshd unbanip 192.0.2.10Substituindo, naturalmente, o endereço de exemplo com o verdadeiro para desbloquear. O comando tem efeito imediato: você não precisa reiniciar o serviço.
Mais alguns avisos
- Nunca desligue a sessão SSH atualantes de verificar se as novas regras funcionam: se possível, teste por um segundo terminal mantendo uma sessão autenticada aberta, para que você possa corrigir erros de configuração sem perder o acesso ao servidor.
- Integração com UFW: Se você usar UFW como um firewall, Fail2ban detecta-o automaticamente e se apoia nele para aplicar os blocos, sem precisar de configurações adicionais na maioria dos casos.
- Autenticação com a tecla SSH: Fail2ban reduz o impacto de ataques automatizados, mas continua sendo um nível de defesa adicional. Desativar login com senha para as únicas chaves SSH, sempre que possível, continua sendo a medida de segurança mais eficaz de sempre.
- Proibições crescentes: Para aqueles que querem um nível mais avançado de proteção, Fail2ban também suporta umProibiçõesque aumenta progressivamente para os PIs de recaída, através da opção
bantime.increment: um insight útil uma vez que a confiança com a configuração básica.
Com estas etapas você tem proteção básica, mas eficaz contra tentativas de acesso automatizado no SSH, sem ter que intervir manualmente sempre que um bot bate na porta do seu servidor.
Fontes oficiais
Partilhar
Qual é a sua reação?
Gosto
0
Não gosto
0
Adoro
0
Divertido
0
Irritado
0
Triste
0
Uau
0