feat(episode): TRAZA_estado-de-seguridad-servidor-memoria-m_S20260831.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: AEGIS | Type: troubleshooting
Summary: EPISODIO 1 — brasaluz.com: 🛡️ Estado de seguridad — servidor MEMORIA (medición S
This commit is contained in:
parent
aaa2fcd066
commit
d96b473c2c
1 changed files with 40 additions and 0 deletions
|
|
@ -0,0 +1,40 @@
|
|||
---
|
||||
episode_id: "90abb3f1-48dc-4974-b102-fb053b4b1976"
|
||||
puente_flat: "TRAZA_estado-de-seguridad-servidor-memoria-m_S20260831.R1_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
|
||||
session_code: "S20260831.SID57AA1B256D8E"
|
||||
acto_dialogico: "informar"
|
||||
actor_flujo: "multi_actor"
|
||||
criticidad_aegis: "low"
|
||||
skill_dominante: "AEGIS"
|
||||
fase_proyecto: "operations"
|
||||
tipo_semantico: "troubleshooting"
|
||||
summary_one_line: "EPISODIO 1 — brasaluz.com: 🛡️ Estado de seguridad — servidor MEMORIA (medición S2026083"
|
||||
source_type: "claude_code"
|
||||
trust_boundary: "internal"
|
||||
created_at: "2026-09-01T02:07:18.708452+00:00"
|
||||
relectura_tagged: false
|
||||
forgejo_commit_sha: "pending"
|
||||
---
|
||||
|
||||
`continua` — recibido. El workflow adversarial corre en background (te aviso al terminar). Mientras verifica, te doy la **foto medida ya utilizable** — todo es salida real de comandos de hoy, nada de memoria.
|
||||
|
||||
## 🛡️ Estado de seguridad — servidor MEMORIA (medición S20260831, pre-refutación)
|
||||
|
||||
Evidencia cruda: [evidencia_seguridad_servidor_S20260831.txt](../../../../../Users/ADMINI~1/AppData/Local/Temp/claude/C--Users-Administrador-Downloads-CLAUDE-ANTROPIC-ember-claude-code/57aa1b25-6d8e-4c7e-9788-278fd29f14ac/scratchpad/evidencia_seguridad_servidor_S20260831.txt)
|
||||
|
||||
### Lo que está BIEN hecho (no es un servidor descuidado)
|
||||
- **SSH endurecido de verdad:** puerto 47822, sin login root, sin password (solo llave pública), `maxauthtries 3`, `allowusers johnember`, sin X11 ni TCP-forwarding. Los logs solo muestran accesos legítimos tuyos.
|
||||
- **Casi todo en `127.0.0.1`:** de ~64 contenedores, a internet solo salen 80/443 (Caddy), 47822 (SSH) y 51820 (WireGuard). Todo lo demás (Postgres, Qdrant, Neo4j, Redis, LiteLLM, ember-mcp…) escucha en loopback.
|
||||
- **Defensa activa:** fail2ban con 5 cárceles + crowdsec + bouncer (0 decisiones activas = tranquilo).
|
||||
- **Docker sano:** ningún contenedor `privileged`, sin socket TCP de dockerd, y el `docker.sock` solo lo toca el **socket-proxy** en modo lectura. Authelia protege la mayoría de los paneles (portainer, dozzle, uptime-kuma, temporal, etc.).
|
||||
- **Secretos:** los `.env` están en `600`, ninguno world-readable. `unattended-upgrades` activo.
|
||||
|
||||
### Gaps reales (severidad preliminar — el workflow los está refutando/ajustando)
|
||||
| # | Hallazgo | Sev. prelim. | Blast radius del arreglo |
|
||||
|---|----------|:---:|:---:|
|
||||
| 1 | **OS sin parchear:** 58 paquetes upgradables + **reboot pendiente** + **105 días de uptime**. Kernel nuevo instalado sin bootear; containerd 2.2.2→2.3.4, docker-ce 29.3.0→29.7.2 pendientes. `unattended-upgrades` NO cubre repo Docker ni el reboot. | 🟠 HIGH | 🔴 Alto (reboot prod) |
|
||||
| 2 | **Sin firewall default-deny de host** (INPUT=ACCEPT, ufw no instalado, Hetzner sin cloud-firewall). La protección de ingreso ES "todo en loopback" + 1 regla iptables. Frágil: si algún día un contenedor publica `0.0.0.0:X`, Docker salta el filtro INPUT y queda expuesto. | 🟠 HIGH | 🔴 Alto (riesgo lockout) |
|
||||
| 3 | **`warden-mcp` escucha en `*:3005`** (todas las interfaces) — proceso node de host, adyacente a Vaultwarden (secretos), protegido por **una sola** línea iptables. Debería bindear a `127.0.0.1`. | 🟡 MEDIUM | 🟢 Bajo |
|
||||
| 4 | **Concentración de privilegio:** `sudo` sin contraseña + `johnember` en grupo `docker` (= root-equivalente). Comprometer tu llave SSH = root inmediato. | 🟡 MEDIUM | 🟡 Medio |
|
||||
| 5 | **Internet-facing solo con app-auth:** `context.brasaluz.com` (context-docs) **sin auth ni access_log**; `llm.brasaluz.com` (LiteLLM, gateway con master-key) y `lumbre` (ember-mcp) expuestos apoyados solo en su auth propia. | 🟡 MEDIUM | 🟢 Bajo (Caddy) |
|
||||
| 6 | Muchos contenedores como **root** (litellm explícito, qdrant 0:0, +decenas con User vacío); sesiones tmux abiertas desde junio. | ⚪ LOW | 🟢 Bajo |
|
||||
Loading…
Reference in a new issue