1. O Desafio: Ameaças Automatizadas e Scanners Silenciosos
Aplicações expostas à internet sofrem constantes varreduras automatizadas: port scans, força bruta em endpoints SSH/HTTP, crawling malicioso em busca de arquivos .env ou painéis de administração expostos. Bloquear manualmente esses IPs gera sobrecarga operacional e lentidão na resposta.
2. Arquitetura do CrowdSec Hub & Camada LAPI
O CrowdSec foi estruturado de forma descentralizada na nossa infraestrutura:
- CrowdSec Agent (Parser Engine): Processa fluxos de logs de instâncias Nginx, Traefik, SSH e Syslog usando parsers YAML em alta velocidade.
- Local API (LAPI): Ponto central de decisão que recebe os alertas dos agentes, aplica a política de decisões (banimento temporário, captcha ou drop) e sincroniza a lista de bloqueios com os Bouncers.
- Bouncers (Remediation Components): Plugins integrados nos pontos de entrada (firewall nftables, Nginx Lua Bouncer e Cloudflare API) que barram o tráfego antes mesmo de consumir recursos da aplicação.
3. Criação de Cenários Customizados de Detecção
Para proteger portais internos e APIs corporativas contra raspagem indevida e abuso de rotas, criamos cenários baseados no algoritmo leaky bucket:
# /etc/crowdsec/scenarios/custom-api-abuse.yaml
type: leaky
name: custom/api-aggressive-probing
description: "Detecta requisicoes suspeitas em sequencia a rotas sensiveis"
filter: "evt.Meta.log_type == 'http_access-log' && evt.Parsed.request contains '/api/v1/auth/'"
leakspeed: "10s"
capacity: 5
groupby: "evt.Meta.source_ip"
blackhole: 1m
labels:
service: http
type: brute_force
remediation: true
---
# Decisão automatizada enviada ao LAPI
duration: 4h
scope: Ip
reason: "Tentativa reiterada de enumeracao de credenciais"
4. Integração com Bouncers e Orquestração Docker
A implantação via Docker Compose integrou a LAPI aos proxies reversos da rede interna:
# docker-compose.yml - CrowdSec Security Engine
services:
crowdsec:
image: crowdsecurity/crowdsec:latest
container_name: crowdsec_engine
environment:
- COLLECTIONS=crowdsecurity/linux crowdsecurity/nginx crowdsecurity/http-cve
- CUSTOM_HOSTNAME=crowdsec-hub
volumes:
- /var/log/nginx:/var/log/nginx:ro
- /var/log/auth.log:/var/log/auth.log:ro
- ./data:/var/lib/crowdsec/data
- ./config:/etc/crowdsec
restart: unless-stopped
networks:
- security_net
Impacto e Métricas Alcançadas
Com a ativação dos bouncers de borda, mais de 99% das tentativas de brute-force e scanning automatizado foram mitigadas em Camada 3/4, aliviando o consumo de CPU dos servidores de aplicação e zerando falsos positivos graças ao refinamento dos whitelists locais.