El término WAF proviene de Web Application Firewall – o firewall de aplicaciones web.
Mientras que un firewall tradicional protege la red en general, un WAF protege sitios y aplicaciones web, analizando las solicitudes entrantes y bloqueando accesos peligrosos.
Ayuda a defender contra ataques como:
En resumen, el WAF es un escudo entre internet y tu aplicación, protegiendo contra amenazas antes de que causen impacto.
CrowdSec es el WAF que usamos aquí en Gole.
Es una solución open-source, colaborativa y moderna que no solo protege tu aplicación en tiempo real, sino que también aprende de los ataques ocurridos en otras partes del mundo.
Es decir: cuando se detecta una IP maliciosa en un entorno, toda la comunidad CrowdSec puede beneficiarse y bloquear esa misma IP.
El funcionamiento es fácil 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: "TU_ENROLL_KEY"
- name: ENROLL_INSTANCE_NAME
value: "mi-cluster-k8s"
- name: ENROLL_TAGS
value: "k8s linux producción"
persistentVolume:
data:
enabled: true
storageClassName: "tu-storage-class-name"
size: 1Gi
config:
enabled: true
storageClassName: "tu-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: <TU_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"
Con estas configuraciones, CrowdSec está integrado en tu clúster de Kubernetes, monitoreando logs, registrando instancias y protegiendo tus aplicaciones con Traefik, Nginx y WAF AppSec.
Accede a la consola: https://app.crowdsec.net/security-engines