O que é um WAF?#
O termo WAF vem de Web Application Firewall – ou firewall de aplicação web.
Um firewall tradicional atua principalmente na camada de rede, filtrando pacotes com base em informações como IP de origem, IP de destino, porta de origem, porta de destino e protocolo (TCP/UDP/ICMP). Ou seja, ele garante que apenas conexões autorizadas cheguem ao servidor, mas não entende o conteúdo do tráfego.
Já o WAF vai além: ele é projetado especificamente para proteger aplicações web. Em vez de analisar só endereços e portas, o WAF inspeciona o conteúdo das requisições HTTP/HTTPS. Isso permite identificar e bloquear acessos maliciosos que passam despercebidos por um firewall comum.
Exemplos de ameaças que o WAF ajuda a mitigar#
- SQL Injection – quando comandos SQL maliciosos são enviados para manipular bancos de dados.
- Cross-Site Scripting (XSS) – injeção de scripts que podem roubar dados de usuários.
- Bots maliciosos – que tentam explorar falhas ou sobrecarregar a aplicação.
- Brute force – tentativas automáticas de adivinhar senhas e logins.
Resumindo#
- Firewall tradicional = foca em rede → controla quem pode se conectar (baseado em IP, portas e protocolos).
- WAF = foca em aplicação web → analisa o que está dentro da requisição e protege contra ataques direcionados ao funcionamento do site.
Em outras palavras, o WAF funciona como um escudo entre a internet e sua aplicação web, bloqueando ameaças antes que causem impacto.
O que é o CrowdSec?#
O CrowdSec é o WAF que usamos aqui na Gole.
Ele é uma solução open-source, colaborativa e moderna, que além de proteger sua aplicação em tempo real, também aprende com ataques sofridos em outros lugares do mundo.
Ou seja: quando um IP malicioso é detectado em um ambiente, toda a comunidade CrowdSec pode se beneficiar e bloquear esse mesmo IP.

Como o CrowdSec funciona?#
O funcionamento é simples de entender:
- Monitora os logs de serviços como Nginx, Traefik, SSH, aplicações web.
- Detecta comportamentos suspeitos (força bruta, scans, abusos).
- Bloqueia automaticamente os IPs maliciosos.
- Compartilha de forma anônima essas informações, fortalecendo a rede de proteção.
Principais Funcionalidades#
- Monitoramento em tempo real: captura logs de serviços como Nginx, Traefik, SSH, entre outros.
- Detecção de ataques e abusos: identifica brute force, scans e comportamentos anômalos.
- Bloqueio automático de IPs: aplica sanções locais ou remotas, protegendo suas aplicações.
Passo a Passo: Configurando o CrowdSec no Kubernetes#
1. Adicionar o repositório Helm e obter valores padrão#
helm repo add crowdsec https://crowdsecurity.github.io/helm-charts
helm repo update
helm show values crowdsec/crowdsec > crowdsec-default-values.yaml
2. Editar o arquivo crowdsec-default-values.yaml#
a) Configurar aquisição de logs (Traefik)#
agent:
acquisition:
- namespace: traefik
podName: traefik-*
program: traefik
b) Registro da instância (LAPI)#
lapi:
env:
- name: ENROLL_KEY
value: "SEU_ENROLL_KEY"
- name: ENROLL_INSTANCE_NAME
value: "meu-cluster-k8s"
- name: ENROLL_TAGS
value: "k8s linux producao"
c) Volumes persistentes#
persistentVolume:
data:
enabled: true
storageClassName: "you-storage-class-name"
size: 1Gi
config:
enabled: true
storageClassName: "you-storage-class-name"
size: 100Mi
3. Criar namespace#
kubectl create ns crowdsec
4. Instalar o CrowdSec#
helm install crowdsec crowdsec/crowdsec -n crowdsec -f crowdsec-default-values.yaml
5. Configurar bouncers (Traefik e Nginx)#
a) Criar API Key#
kubectl -n crowdsec exec -it crowdsec-lapi-* -- sh
cscli bouncers add traefik
b) Configurar middleware no Traefik#
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: bouncer
namespace: traefik
spec:
plugin:
bouncer:
CrowdsecLapiKey: <SUA_API_KEY>
crowdsecLapiHost: "crowdsec-service.crowdsec.svc.cluster.local"
crowdsecLapiPort: "8080"
crowdsecAppsecHost: "crowdsec-appsec-service.crowdsec.svc.cluster.local"
crowdsecAppsecPort: "7422"
crowdsecAppsecScheme: http
Enabled: true
logLevel: DEBUG
crowdsecMode: appsec
c) Configurar bouncer no Nginx#
controller:
extraInitContainers:
- name: init-clone-crowdsec-bouncer
image: crowdsecurity/lua-bouncer-plugin
env:
- name: API_URL
value: "http://crowdsec-service.crowdsec.svc.cluster.local:8080"
- name: API_KEY
value: "<API KEY>"
- name: BOUNCER_CONFIG
value: "/crowdsec/crowdsec-bouncer.conf"
6. Ativar o AppSec (WAF)#
appsec:
enabled: true
acquisitions:
- source: appsec
listen_addr: "0.0.0.0:7422"
path: /
appsec_config: crowdsecurity/crs-vpatch
labels:
type: appsec
env:
- name: COLLECTIONS
value: "crowdsecurity/appsec-wordpress"
Monitoramento Avançado com Grafana#
O console do CrowdSec possui um limite de 500 alertas, o que pode restringir a visualização de eventos em ambientes com tráfego intenso. Para um monitoramento completo e detalhado, criamos um dashboard no Grafana que permite observar bloqueios de IP, ataques e decisões de segurança em tempo real.
Este dashboard inclui:
- Block Total for Pods: Número de tentativas bloqueadas por pod, ajudando a identificar quais estão mais atacados.
- Attacks by Scenarios: Distribuição de ataques por cenários de detecção do CrowdSec, mostrando os tipos de ameaça mais frequentes.
- Total Ban by IP: Lista de IPs bloqueados, o cenário e o total de ocorrências, permitindo acompanhar fontes maliciosas.
- Decisions Log: Logs detalhados de decisões com timestamps e dados das requisições, garantindo total transparência das ações do CrowdSec.

Acesse o dashboard: Monitoramento CrowdSec no Grafana
Este recurso é essencial para equipes de segurança que precisam monitorar, analisar e responder rapidamente a ameaças na infraestrutura.
Conclusão#
Com essas configurações, o CrowdSec está integrado ao seu cluster Kubernetes, monitorando logs, registrando instâncias e protegendo suas aplicações com Traefik, Nginx e WAF AppSec.
Acesse o console: https://app.crowdsec.net/security-engines

