mcp-nas manche 4: Bifrost VKs rotées (pièges port 3085 + nginx.conf + 9 workflows n8n)

This commit is contained in:
bolbol 2026-07-09 20:51:15 +00:00
parent a1f84721a9
commit 44ffd8b5a2
1 changed files with 4 additions and 3 deletions

View File

@ -3,7 +3,7 @@
**Tags** : infra, securite, mcp-nas, rce, docker-socket, secrets, rotation **Tags** : infra, securite, mcp-nas, rce, docker-socket, secrets, rotation
**Périmètre** : conteneur `linux-mcp-nas` (`mcp-nas.nd.i234.me`, port hôte 3042→8000, réseau Docker `n8n`). **Périmètre** : conteneur `linux-mcp-nas` (`mcp-nas.nd.i234.me`, port hôte 3042→8000, réseau Docker `n8n`).
**Complète** : `common/audit-securite-reseau-nas-20260703.md` (couche réseau/WAN). Ici = **couche applicative**. **Complète** : `common/audit-securite-reseau-nas-20260703.md` (couche réseau/WAN). Ici = **couche applicative**.
**Statut** (MàJ 2026-07-09 manche 4) : **P0 fermés** + durcissement manche 3 + **ROTATION des credentials fuités faite** (Portainer, Gitea bolbol, n8n, Baserow, 3 logins web Hermes, NyoraNotes, DSM/sudo, tokens Gitea). **Reste** : SMTP OVH (externe), Bifrost VKs (différé), nettoyage docs/skills agents, run non-root. Détail en bas. **Statut** (MàJ 2026-07-09 manche 4) : **P0 fermés** + durcissement manche 3 + **ROTATION des credentials fuités faite** (Portainer, Gitea bolbol, n8n, Baserow, 3 logins web Hermes, NyoraNotes, DSM/sudo, tokens Gitea). **Reste** : SMTP OVH (externe), nettoyage docs/skills agents restants, re-scoper 1 token Gitea, run non-root. Détail en bas.
## Verdict ## Verdict
@ -96,6 +96,7 @@ Le préfixe réutilisé couvrait **~11 familles** (pas 5) + fuite dans **context
- **3 logins web Hermes** : var interne `HERMES_PASSWORD` = `${HERMES_<i>_PASSWORD}` via le **compose RACINE** `hermes-platform/docker-compose.yml`. **Piège** : les conteneurs n'ont **aucun label compose**`compose up --force-recreate <workspace>` **cascade sur l'agent** (a mis agent-tt down). **Méthode fiable = `docker stop <c> && docker rm <c>` puis `docker compose up -d --no-deps <service>`** depuis le racine. - **3 logins web Hermes** : var interne `HERMES_PASSWORD` = `${HERMES_<i>_PASSWORD}` via le **compose RACINE** `hermes-platform/docker-compose.yml`. **Piège** : les conteneurs n'ont **aucun label compose**`compose up --force-recreate <workspace>` **cascade sur l'agent** (a mis agent-tt down). **Méthode fiable = `docker stop <c> && docker rm <c>` puis `docker compose up -d --no-deps <service>`** depuis le racine.
- **DSM/sudo Best0f** : `sudo /usr/syno/sbin/synouser --setpw Best0f <new>` (**chemin complet** requis, sinon `command not found`). `ssh` étant **par clé**, aucun lockout. Mdp hardcodé dans ~23 fichiers (dsm_auth.py liste de spray, ssh_dsm.py, dsm_check_*.py, context-hub/.env, docs) → tous mis à jour. - **DSM/sudo Best0f** : `sudo /usr/syno/sbin/synouser --setpw Best0f <new>` (**chemin complet** requis, sinon `command not found`). `ssh` étant **par clé**, aucun lockout. Mdp hardcodé dans ~23 fichiers (dsm_auth.py liste de spray, ssh_dsm.py, dsm_check_*.py, context-hub/.env, docs) → tous mis à jour.
- **Tokens Gitea** : 13 tokens bolbol (plusieurs `all`/`write:admin`). `GITEA_TOKEN_NYORA` fuité (`10ccc28dc`) roté → token scopé neuf ; **7 tokens révoqués** (`DELETE /api/v1/users/bolbol/tokens/<id>`). Scripts deploy migrés vers `GITEA_DEPLOY_TOKEN`. - **Tokens Gitea** : 13 tokens bolbol (plusieurs `all`/`write:admin`). `GITEA_TOKEN_NYORA` fuité (`10ccc28dc`) roté → token scopé neuf ; **7 tokens révoqués** (`DELETE /api/v1/users/bolbol/tokens/<id>`). Scripts deploy migrés vers `GITEA_DEPLOY_TOKEN`.
- **Scrub** : 648 secrets masqués dans 100 fichiers de log (sessions/cron/claude_contexte) via `sudo python3`. - **Bifrost VKs** (Nabil-Key + Yesmine-Key) : rotation dans `config.db` (`UPDATE governance_virtual_keys SET value=…` + `allow_all_keys=1`) + **restart bifrost**. **Piège port** : l'API bifrost est en **3085** (8080 interne), **3086 = proxy openresty** (renvoie 401 trompeur) → tester sur 3085. **Piège scan** : la VK vit aussi dans `redaction-pro/nginx.conf` (`.conf` raté par un scan `.env/.json/.yml`) et dans **9 workflows n8n en base** (`UPDATE workflow_entity SET nodes=replace(nodes::text,old,new)::jsonb` sur postgres n8n-DB `n8nuser`/`n8n`, puis restart n8n pour recharger le cache). Vérif : nouvelle VK → 200, ancienne → 401 `virtual_key_not_found`. Yesmine-Key = aucun consommateur infra (clé perso).
- **Scrub** : 673 secrets masqués dans 105 fichiers de log (sessions/cron/claude_contexte/data-logs/anciens .env) via `sudo python3`.
**Nouvelles valeurs** : PAS dans ce runbook — remises à Nabil (Bitwarden). **Reste** : SMTP OVH (externe), **Bifrost VKs** (différé : DB fragile + réimport workflow n8n), SSH_PASS_NYORA, re-scoper token `nyora-notes-claude-code`, nettoyer docs/skills, run non-root. **Nouvelles valeurs** : PAS dans ce runbook — remises à Nabil (Bitwarden). **Reste** : SMTP OVH (externe), SSH_PASS_NYORA, re-scoper token `nyora-notes-claude-code`, nettoyer docs/skills restants, run non-root.