Files
system-docs/04_SEGURIDAD/modelo-amenazas.md
ARCHITECT 6d15abcb1a docs(v5): Complete system documentation
Comprehensive documentation for TZZR system v5 including:

- 00_VISION: Glossary and foundational philosophy
- 01_ARQUITECTURA: System overview and server specs
- 02_MODELO_DATOS: Entity definitions and data planes (T0, MST, BCK)
- 03_COMPONENTES: Agent docs (CLARA, MARGARET, FELDMAN, GRACE)
- 04_SEGURIDAD: Threat model and secrets management
- 05_OPERACIONES: Infrastructure and backup/recovery
- 06_INTEGRACIONES: GPU services (RunPod status: blocked)
- 99_ANEXOS: Repository inventory (24 repos)

Key findings documented:
- CRITICAL: UFW inactive on CORP/HST
- CRITICAL: PostgreSQL 5432 exposed
- CRITICAL: .env files with 644 permissions
- RunPod workers not starting (code ready in R2)
- Infisical designated as single source of secrets (D-001)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-24 17:58:03 +00:00

4.3 KiB

Modelo de Amenazas TZZR

Versión: 5.0 Fecha: 2024-12-24


Resumen Ejecutivo

El sistema TZZR tiene una base de seguridad sólida (SSH keys, PostgreSQL SSL, tokens de autenticación) pero presenta exposiciones críticas que requieren atención inmediata.


Hallazgos Críticos

CRÍTICO-001: CORP/HST sin Firewall

Descripción: UFW inactivo en servidores CORP y HST. Impacto: Todos los puertos expuestos a Internet. Evidencia: ufw status devuelve "inactive".

Mitigación:

# CORP
ufw default deny incoming
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

# HST
ufw default deny incoming
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

CRÍTICO-002: PostgreSQL 5432 Expuesto

Descripción: PostgreSQL en ARCHITECT escucha en 0.0.0.0:5432. Impacto: Accesible desde cualquier IP (aunque requiere autenticación).

Mitigación:

# /etc/postgresql/16/main/postgresql.conf
listen_addresses = '127.0.0.1,172.17.0.1'

CRÍTICO-003: Archivos .env Legibles

Descripción: Archivos .env con permisos 644 (legibles por todos). Impacto: Credenciales accesibles a cualquier usuario del sistema.

Mitigación:

chmod 600 /opt/clara/.env
chmod 600 /opt/alfred/.env
chmod 600 /opt/margaret/.env
chmod 600 /opt/mason/.env

Hallazgos Altos

ALTO-001: fail2ban No Configurado

Descripción: fail2ban failed en DECK, inactive en CORP. Impacto: SSH bruteforce sin mitigación automática. Evidencia: Ataques activos desde 165.232.81.204, 188.166.115.48.

Mitigación:

apt install fail2ban
systemctl enable fail2ban
# jail: sshd, maxretry=3, bantime=1h

ALTO-002: Triple Gestión de Secretos

Descripción: Credenciales en Infisical, tablas creds_*, y archivos .env. Impacto: No hay fuente única de verdad, riesgo de desincronización.

Mitigación:

  • Migrar todas las credenciales a Infisical
  • Eliminar .env hardcodeados
  • creds_* solo para referencia

ALTO-003: Servicios sin TLS Interno

Descripción: CLARA, MARGARET, MASON, FELDMAN en HTTP plano. Impacto: Tráfico interno sin cifrar.

Mitigación:

  • Configurar mTLS entre servicios
  • Usar Caddy como reverse proxy con TLS

Hallazgos Medios

MEDIO-001: No hay Backup PostgreSQL

Descripción: Solo Gitea tiene backup en R2, PostgreSQL sin backup. Impacto: Pérdida de datos en caso de fallo.

Mitigación:

# Cron diario
pg_dump architect | gzip | aws s3 cp - s3://architect/backups/architect_$(date +%F).sql.gz

MEDIO-002: SENTINEL No Desplegado

Descripción: Sistema de auditoría planificado pero no implementado. Impacto: Sin visibilidad de anomalías.

Mitigación: Implementar SENTINEL LIGHT mode básico.

MEDIO-003: No hay Rotación de Secretos

Descripción: Sin política de rotación de credenciales. Impacto: Credenciales comprometidas persisten indefinidamente.

Mitigación:

  • API keys: 90 días
  • DB passwords: 180 días
  • SSH keys: 365 días

Controles Existentes

Control Estado Notas
SSH Keys Activo Permisos 600 correctos
PostgreSQL SSL Activo SCRAM-SHA-256
H_INSTANCIA Auth Activo CLARA/MARGARET
Gitea Tokens Activo Lectura/Escritura separados
DECK UFW Activo Política deny incoming

Matriz de Riesgos

ID Riesgo Probabilidad Impacto Prioridad
CRÍTICO-001 Firewall desactivado Alta Alto Semana 1
CRÍTICO-002 PostgreSQL expuesto Media Alto Semana 1
CRÍTICO-003 .env legibles Alta Alto Semana 1
ALTO-001 Sin fail2ban Alta Medio Semana 1
ALTO-002 Secretos duplicados Media Medio Mes 1
ALTO-003 Sin TLS interno Baja Medio Mes 1
MEDIO-001 Sin backup PG Baja Alto Mes 1
MEDIO-002 Sin SENTINEL Baja Medio Mes 2
MEDIO-003 Sin rotación Baja Medio Mes 2

Plan de Remediación

Semana 1 (Urgente)

  • Activar UFW en CORP y HST
  • chmod 600 en todos los .env
  • Instalar fail2ban
  • PostgreSQL bind 127.0.0.1

Mes 1 (Alta)

  • Migrar secretos a Infisical
  • TLS interno
  • Backup PostgreSQL automatizado

Mes 2 (Media)

  • SENTINEL LIGHT mode
  • Política de rotación
  • Monitoreo de certificados