Ambas as ferramentas leem registos e bloqueiam endereços, e à primeira vista o CrowdSec é um Fail2ban com código mais recente. A diferença é mais substancial, e não está na idade do código mas na origem da decisão de bloquear.

A arquitetura

O Fail2ban é um único processo que lê registos, conta correspondências de expressões regulares e chama um comando da firewall. Cada decisão é tomada na sua máquina com os seus contadores. Nada é enviado para lado nenhum, não há dependências e a configuração são ficheiros de texto.

O CrowdSec está dividido em dois, e essa é a coisa principal a perceber antes de o instalar. O agente em si limita-se a detetar: analisa registos, aplica cenários e escreve decisões na sua própria base. As decisões são aplicadas por um programa à parte, o bouncer. Sem bouncer instalado, o CrowdSec corre, mostra alertas, mantém uma lista de decisões e não bloqueia nada.

É a desilusão mais frequente no primeiro contacto: a ferramenta está instalada, os ataques veem-se, e o tráfego circula exatamente como antes.

sudo apt install crowdsec
sudo apt install crowdsec-firewall-bouncer-iptables
sudo cscli bouncers list

Este último comando tem de mostrar pelo menos uma entrada registada. Uma lista vazia significa que não há bloqueio.

A segunda diferença: a reputação partilhada

O Fail2ban só conhece o que aconteceu consigo. Um endereço que ontem atacava cem servidores alheios está limpo aos seus olhos até bater à sua porta, e as suas primeiras cinco tentativas são gratuitas.

O CrowdSec envia os sinais das suas deteções para uma rede comum e recebe de lá uma lista de endereços vistos noutros. Efeito prático: uma parte apreciável das tentativas é cortada antes da primeira. Isso importa sobretudo contra ataques distribuídos — milhares de endereços com uma tentativa cada — em que os contadores locais são impotentes por definição.

E eis o que convém saber de antemão: a troca é nos dois sentidos. Do seu servidor saem os endereços dos atacantes e os tipos de cenários disparados. Funcionar de forma totalmente local é possível — sem inscrição na consola na nuvem — mas então a lista comum também deixa de estar disponível para si e a vantagem principal desaparece. É uma decisão consciente, não um pormenor de configuração.

Os comandos do dia a dia

sudo cscli metrics
sudo cscli alerts list
sudo cscli decisions list
sudo cscli decisions delete --ip 203.0.113.25

O metrics responde à pergunta de se os registos estão sequer a ser lidos: se o número de linhas analisadas for zero, a coleção para o seu servidor web não está instalada ou o caminho do registo está errado. É o segundo caso mais frequente de «está instalado e não faz nada».

sudo cscli collections list
sudo cscli collections install crowdsecurity/nginx

Os recursos

O CrowdSec está escrito em Go e guarda o seu estado numa base. O consumo de memória é da ordem da centena de megabytes, mais o bouncer. Num servidor de um gigabyte nota-se; a partir de dois já não. O Fail2ban é mais leve, e faz menos.

Vale a pena ter ambos

Não se estorvam: um escreve as suas regras na firewall, o outro as dele, e bloquear duas vezes o mesmo endereço não prejudica nada. Uma repartição sensata é esta.

O CrowdSec fica com o trabalho de massa: as tentativas contra SSH, a varredura do servidor web, os endereços maus conhecidos da lista comum. O Fail2ban fica onde tem um registo próprio com formato próprio, para o qual escrever uma expressão regular é mais simples do que escrever um cenário: uma aplicação feita em casa, um serviço raro, um formulário de acesso particular.

Se for preciso escolher um, o critério é este: num servidor com um sítio constantemente sondado, o CrowdSec dá mais graças à lista comum. Num servidor acessível só a si por SSH com chaves, a diferença é pequena: ali a maior parte do trabalho já foi feita ao desligar as palavras-passe.

Um limite comum

Nenhum dos dois protege de uma vulnerabilidade numa aplicação. Ambos trabalham com a frequência de pedidos e a reputação de um endereço, e um pedido que aproveita um buraco de uma extensão à primeira tentativa a partir de um endereço limpo passará por ambos. Esse é o trabalho de outras ferramentas: um WAF ao nível dos pedidos e atualizações a tempo. Bloquear endereços tira o ruído de fundo, não a causa.

O valor prático de um e de outro depende de alguém olhar para o resultado. Um número crescente de decisões, um cenário disparado pela primeira vez, uma mudança dos países de onde vêm as tentativas: eis a informação para que a ferramenta foi instalada. Como fica numa página mostra-o a demonstração abaixo.