O termo WAF vem de Web Application Firewall – ou firewall de aplicação web.
Enquanto um firewall tradicional protege a rede de forma geral, o WAF protege sites e aplicações web, analisando as requisições que chegam e bloqueando acessos perigosos.
Ele ajuda a defender contra ataques como:
Em resumo, o WAF é um escudo entre a internet e sua aplicação, protegendo contra ameaças antes que causem impacto.
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.
O funcionamento é simples de entender:
helm repo add crowdsec https://crowdsecurity.github.io/helm-charts
helm repo update
helm show values crowdsec/crowdsec > crowdsec-default-values.yaml
crowdsec-default-values.yaml
agent:
acquisition:
- namespace: traefik
podName: traefik-*
program: traefik
lapi:
env:
- name: ENROLL_KEY
value: "SEU_ENROLL_KEY"
- name: ENROLL_INSTANCE_NAME
value: "meu-cluster-k8s"
- name: ENROLL_TAGS
value: "k8s linux producao"
persistentVolume:
data:
enabled: true
storageClassName: "you-storage-class-name"
size: 1Gi
config:
enabled: true
storageClassName: "you-storage-class-name"
size: 100Mi
kubectl create ns crowdsec
helm install crowdsec crowdsec/crowdsec -n crowdsec -f crowdsec-default-values.yaml
kubectl -n crowdsec exec -it crowdsec-lapi-* -- sh
cscli bouncers add 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
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"
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"
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