SafeLine: WAF autohospedado para proteger aplicaciones web
Firewall de aplicaciones web autohospedado con detección de ataques, limitación de tasa, anti-bot y protección dinámica de código
Vídeo tutorial en YouTube
Mira el vídeo completo sobre cómo instalar y usar SafeLine: WAF autohospedado para proteger aplicaciones web en el canal GENBYTE:
¿Qué es SafeLine: WAF autohospedado para proteger aplicaciones web?
SafeLine es un WAF (Web Application Firewall) autohospedado que actúa como proxy inverso para proteger aplicaciones web frente a ataques y exploits. Se despliega delante de la aplicación web, filtrando y monitorizando el tráfico HTTP/HTTPS entre la aplicación e Internet. Protege contra inyección SQL, XSS, inyección de código, inyección de comandos del sistema, CRLF, LDAP, XPath, RCE, XXE, SSRF, traversal de rutas, backdoors, fuerza bruta, flood HTTP, abuso de bots y otras amenazas. El proyecto está escrito en Go, licenciado bajo GPL-3.0 y cuenta con más de 22.000 estrellas en GitHub.
Características principales
Bloqueo de ataques web
Defensa contra inyección SQL, XSS, inyección de código, inyección de comandos del sistema, CRLF, XXE, SSRF, traversal de rutas, backdoors y otras vulnerabilidades comunes.
Limitación de tasa (Rate Limiting)
Protege contra ataques DoS, intentos de fuerza bruta, picos de tráfico y abusos mediante throttling de tráfico que supera límites definidos.
Desafío Anti-Bot
Desafíos CAPTCHA para diferenciar usuarios legítimos de bots y crawlers maliciosos, permitiendo el acceso a humanos y bloqueando automatizaciones.
Desafío de autenticación
Cuando se activa, los visitantes deben introducir una contraseña para acceder; de lo contrario son bloqueados.
Protección dinámica
Cifrado dinámico de código HTML y JavaScript en cada visita, ofuscando la lógica del lado del cliente frente a análisis automatizados.
Lista de control de acceso web (Web ACL)
Reglas basadas en IP, geolocalización, cabeceras y otros criterios para permitir o denegar tráfico antes de que llegue a la aplicación.
Requisitos del sistema
- Docker Engine
- Docker Compose (v2 o superior)
- Variables de entorno obligatorias: SUBNET_PREFIX, POSTGRES_PASSWORD, IMAGE_TAG, SAFELINE_DIR
- Arquitectura compatible con imágenes multiarch (amd64/arm64)
- Puertos libres: 9443 (gestión), 80/443 (tráfico HTTP/HTTPS si se usa network_mode: host en tengine)
Instalación con Docker Compose
Clonar repositorio y preparar entorno
Clona el repositorio oficial y sitúate en el directorio raíz donde se encuentra compose.yaml.
cd SafeLine
Configurar variables de entorno
Crea un archivo .env con las variables requeridas por compose.yaml. SUBNET_PREFIX define la subred interna (ej. 172.22.0), POSTGRES_PASSWORD la contraseña de PostgreSQL, IMAGE_TAG la etiqueta de imagen (ej. latest), SAFELINE_DIR el directorio de datos persistentes (ej. /opt/safeline).
SUBNET_PREFIX=172.22.0
POSTGRES_PASSWORD=tu_password_seguro
IMAGE_TAG=latest
SAFELINE_DIR=/opt/safeline
EOF
Levantar la pila con Docker Compose
Ejecuta docker compose up -d para iniciar todos los servicios: postgres, mgt (gestión), detect (motor de detección), tengine (proxy inverso), luigi (procesamiento de logs), fvm (gestión de versiones) y chaos (base de datos de amenazas).
Acceder al proyecto
Consola de gestión web
Accede a la interfaz de administración en https://<IP_SERVIDOR>:9443 (puerto configurable mediante MGT_PORT). El primer acceso requiere vinculación de cuenta mediante token de bootstrap generado en los logs del contenedor safeline-mgt.
Casos de uso
- Protección de aplicaciones web autohospedadas frente a OWASP Top 10
- Defensa de APIs y microservicios mediante proxy inverso con inspección de tráfico
- Mitigación de ataques de fuerza bruta en formularios de login y endpoints de autenticación
- Bloqueo de bots maliciosos y scrapers en sitios públicos
- Ofuscación de código frontend (HTML/JS) para dificultar ingeniería inversa
- Cumplimiento de requisitos de seguridad en entornos on-premise sin depender de WAF cloud
Configuración avanzada
Configuración de tokens gRPC y bootstrap
Variables MGT_GRPC_TOKEN, MGT_BOOTSTRAP_TOKEN y MGT_BOOTSTRAP_WINDOW permiten personalizar la seguridad del canal de control y la ventana de vinculación inicial de la cuenta admin.
MGT_BOOTSTRAP_TOKEN=token_bootstrap
MGT_BOOTSTRAP_WINDOW=30m
Integración con Kubernetes (Ingress-NGINX)
El proyecto provee un plugin para Ingress-NGINX que permite proteger tráfico de ingress en clústeres Kubernetes.
Plugin para Kong Gateway
Integración nativa con Kong API Gateway para proteger APIs y servicios gestionados por Kong.
Servidor MCP para gestión asistida por IA
SafeLine MCP Server permite gestión y control asistidos por IA mediante protocolo MCP.
Gestión y mantenimiento
Actualización de imágenes
Actualiza la variable IMAGE_TAG en .env y vuelve a levantar la pila para descargar nuevas versiones.
docker compose pull
docker compose up -d
Gestión de logs
Los contenedores mgt, luigi, fvm y chaos usan driver json-file con rotación (max-size 100m, max-file 5 o 10). Los logs de nginx y detector se almacenan en volúmenes bajo SAFELINE_DIR/logs.
# O inspeccionar archivos en /opt/safeline/logs/nginx
Healthchecks y reinicio automático
Todos los servicios tienen restart: always y healthchecks definidos (pg_isready para postgres, curl HTTPS para mgt). Docker reinicia contenedores fallidos automáticamente.
# Ver estado de salud: docker inspect –format='{{.State.Health.Status}}' safeline-mgt
Backup de base de datos
PostgreSQL almacena datos en volumen SAFELINE_DIR/resources/postgres/data. Realiza backups periódicos con pg_dump desde el contenedor.
Stack técnico
- Go (lenguaje principal)
- PostgreSQL 15.2 (base de datos)
- Tengine / Nginx (proxy inverso y terminación TLS)
- Docker / Docker Compose (orquestación)
- Arquitectura multi-contenedor: mgt, detect, tengine, luigi, fvm, chaos, postgres
Referencias oficiales
- Repositorio oficial GitHub: https://github.com/chaitin/SafeLine
- Documentación oficial (inglés): https://docs.waf.chaitin.com/en/GetStarted/Deploy
- Sitio web oficial: https://ly.safepoint.cloud/laA8asp
- Demo en vivo: https://demo.waf.chaitin.com:9443/
- Comunidad Discord: https://discord.gg/SVnZGzHFvn
- Licencia GPL-3.0: https://github.com/chaitin/SafeLine/blob/main/LICENSE.md
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
