# 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:** ```bash # 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:** ```bash 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:** ```bash 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:** ```bash # 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