Social Bot Scheduler

🛡️ Runtime Security Model — Social Bot Scheduler#

Esta guía documenta el modelo operativo y de seguridad aplicado al ecosistema de Social Bot Scheduler. Nuestro objetivo es mantener un equilibrio entre el valor didáctico de un laboratorio políglota y la robustez técnica necesaria para evitar riesgos accidentales.


📐 Filosofía de Seguridad#

El sistema se rige por tres pilares fundamentales:

  1. Funcionalidad Transparente: El laboratorio debe ser fácil de entender y desplegar.
  2. Hardening Incremental: Seguridad que escala desde el núcleo hacia los bordes.
  3. Local-First: Reducción drástica de la superficie de ataque mediante aislamiento de red.

🚦 Modos de Operación y Postura#

ModoComando de ActivaciónAlcance TécnicoPostura de Riesgo
Secure Defaultmake up-securen8n + Master Dashboard🛡️ Máxima (Local-only)
Demo Localmake upMatriz Completa + DBs🧪 Didáctica (Perfil full)
Observabilitymake up-observabilityStack CNCF (Prometheus/Grafana)📊 Diagnóstica
Edge Proxymake up-edgeCaddy (HTTPS + Basic Auth)🌐 Controlada

🛡️ Hardening de la Cadena de Suministro (Supply Chain)#

Precaucion

Mitigación Trivy (Marzo 2026): Tras el compromiso global de las etiquetas de aquasecurity/trivy-action, hemos implementado una política de Verificación Proactiva:

  1. Pins de Versión: Se han eliminado todas las referencias a versiones comprometidas (ej. 0.33.1).
  2. Etiquetas Seguras: El CI/CD utiliza exclusivamente v0.35.0 o superiores, validadas contra firmas oficiales.
  3. Auditoría de Imágenes: Todas las imágenes base (Alpine, Ubuntu, Microsoft) están ancladas a versiones específicas para evitar ataques de inyección en tiempo de construcción.

Medidas adicionales (v4.2.0)#

ControlImplementaciónProtege contra
Unicode bidi scanJob supply-chain-checks en CI (Python puro)CVE-2021-42574 "Trojan Source" — código malicioso camuflado con caracteres invisibles
Obfuscation scanMismo job — detecta eval(b64decode(...))Base64-encoded payloads ejecutados dinámicamente
Dependabot.github/dependabot.yml — 11 ecosistemasVersiones de dependencias con CVEs conocidos
Line endings.gitattributes*.sh eol=lfScripts con CRLF que fallan con bad interpreter dentro de contenedores Linux

🕸️ Aislamiento de Red y Puertos#

Por defecto, todos los servicios publican sus puertos exclusivamente en el interfaz de loopback (127.0.0.1), impidiendo el acceso desde otros dispositivos en la red local.

ServicioPuertoExposición Recomendada
n8n5678Loopback / Proxy Autenticado
Grafana3000Loopback
cAdvisor9091NUNCA EXPONER. Acceso al Socket Docker.
Gateways8081-8100Loopback

📂 Gestión de Secretos en Runtime#

El sistema orquesta más de 40 variables de entorno críticas que deben gestionarse mediante archivos .env (nunca persistidos en el repositorio):

Componentes Clave:#

  • Orquestación: N8N_ENCRYPTION_KEY, N8N_OWNER_PASSWORD.
  • Persistencia: CASE[01-20]_DB_PASSWORD.
  • Integración: INTEGRATION_API_KEY, GITHUB_TOKEN.
  • Edge: EDGE_BASIC_AUTH_HASH (Bcrypt).

⚙️ Guardrails de Validación Automática#

El script scripts/check_runtime_security.py actúa como un centinela que bloquea el CI si detecta:

  • ❌ Uso de etiquetas :latest en Compose o Dockerfiles.
  • ❌ Puertos publicados sin vinculación local explícita.
  • ❌ Secretos detectados en plano en la configuración del runtime.
  • ❌ Ausencia de perfiles de seguridad en componentes críticos.

El job supply-chain-checks (CI) bloquea el pipeline si detecta:

  • ❌ Caracteres Unicode bidireccionales en archivos de código fuente.
  • ❌ Patrones de ofuscación con eval + base64 en Python, JS, Ruby, PHP o Shell.

🌐 HTTP Security Headers (v4.2.0)#

Todos los servicios web del laboratorio sirven el conjunto completo de headers de seguridad:

HeaderValorProtege contra
X-Frame-OptionsSAMEORIGINClickjacking
X-Content-Type-OptionsnosniffMIME sniffing
Referrer-Policystrict-origin-when-cross-originFuga de información a terceros
Content-Security-Policydefault-src 'self'; ...XSS, inyección de recursos externos
Permissions-Policygeolocation=(), camera=(), ...Abuso de APIs del navegador
Strict-Transport-Securitymax-age=31536000Downgrade a HTTP (solo en edge HTTPS)

Implementación:

  • Apache (master-dashboard, dest-php, dest-symfony): apache/security-headers.conf montado en /etc/apache2/conf-enabled/ con mod_headers.
  • Caddy (perfil edge): bloque header {} en edge/start-caddy.sh.

Modelo de seguridad operativa v4.2 — Social Bot Scheduler