censar: tres nombres equivocados que llegaban al plan, y los 7 «binario desconocido» eran permisos

El censo nombraba los servicios por `comm`, que viene del kernel. De ahí salieron tres errores de
CLASIFICACIÓN — y no son cosméticos: ese nombre es el que el plan mete en `--in /etc/init.d/<n>` y el
que va de `label` en la tarjeta de arje.

· `comm` está capado a 15 caracteres: `willay-crosscheck` llegaba como `willay-crossche` y con ese
  nombre no casaba contra su declaración ⇒ figuraba como `no-declarado` TENIENDO su tarjeta en la
  semilla de arje. La línea de comando trae el nombre entero.
· `supervise-daemon` no es un servicio, es un ENVOLTORIO. Los cinco de gioser se fundían en una
  entrada `supervise-daemo`; y del otro lado `dbus`, `metalog`, `dhcpcd`, `squid` y `shuma-daemon`
  salían como `declarado-muerto` ESTANDO VIVOS — el mismo agujero que este censo existe para tapar,
  entrando por la otra puerta. El nombre real es su argv[1] y el comando real es el último token
  antes del `--` suelto (comprobado contra los cinco).
· `head -15` con ppid==1 era un resto de tubería reparentado, contado como servicio. Va a
  `descartados`, que se imprimen: un huérfano es un hallazgo, no basura.

**Y los 7 «no se pudo leer su binario» eran dos cosas distintas.** Muchos demonios reescriben su
`argv[0]` (`sshd: /usr/bin/sshd [listener]`, `php-fpm: master process (…)`), así que la línea de
comando no dice cuál es el binario — `/proc/<pid>/exe` sí, y necesita ser dueño o root. Medido:

    uid 1001 : desconocido 7 · paquete-ajeno 13 · receta-takana 6 · suelto 13
    root     : desconocido 0 · paquete-ajeno 20 · receta-takana 5 · suelto 14

Ahora el censo DICE cuál de las dos pasó: «repetilo con sudo» y «averigualo a mano» son trabajos muy
distintos, y confundirlos manda a alguien a investigar un permiso.

Desenvolver al supervisor arregló además dos datos que salían falsos: el `exec` de `squid` era
`/usr/bin/supervise-daemon` (⇒ figuraba provisto por el paquete `openrc`), y el `cmdline` guardado
era el del SUPERVISOR — una tarjeta hecha con eso arrancaría `supervise-daemon` dentro de arje, que
ya supervisa. Y se rescata el `--user`: `shuma-daemon` corre como `sergio`, dato que la tarjeta de
arje no puede guardar (no tiene campo de usuario), así que ahora se avisa EN LA REVISIÓN — sin eso a
la vista, un servicio que acá corre sin privilegios termina de root en el destino.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RomoxEGZUhaT4pob1QSX5x
This commit is contained in:
Sergio
2026-09-11 22:56:47 +00:00
co-authored by Claude Opus 5
parent 2201fac08e
commit 2fa89ce3fa
3 changed files with 178 additions and 15 deletions
+36
View File
@@ -313,6 +313,42 @@ porque `hostname` dice `momento`:
declarado-muerto 85 fosil-sin-dns 13
```
#### Tres nombres equivocados, y los tres llegaban al plan
El censo nombraba los servicios por `comm`, que viene del kernel. De ahí salieron tres errores de
clasificación —no cosméticos: ese nombre es el que el plan mete en `--in /etc/init.d/<nombre>` y el
que va de `label` en la tarjeta de arje.
- **`comm` está capado a 15 caracteres.** `willay-crosscheck` llegaba como `willay-crossche`, y con
ese nombre no casaba contra su declaración ⇒ figuraba como **`no-declarado`** teniendo su tarjeta
en la semilla de arje. La línea de comando trae el nombre entero.
- **`supervise-daemon` no es un servicio, es un envoltorio.** Los cinco de gioser se fundían en UNA
entrada llamada `supervise-daemo`; y del otro lado, `dbus`, `metalog`, `dhcpcd`, `squid` y
`shuma-daemon` salían como **`declarado-muerto` estando vivos** — el mismo agujero que el censo
existe para tapar, entrando por la otra puerta. El nombre real es su `argv[1]`; el **comando** real
es el último token antes del `--` suelto.
- **`head -15` con `ppid==1`** era un resto de tubería reparentado, contado como servicio
`no-declarado`. Va a `descartados`, que se imprimen: un huérfano es un hallazgo, no basura.
#### «No se pudo leer su binario» eran dos cosas distintas
7 de 38 servicios salían `desconocido`. La causa no era una: muchos demonios **reescriben su
`argv[0]`** (`sshd: /usr/bin/sshd [listener]`, `php-fpm: master process (…)`), así que la línea de
comando no dice cuál es el binario — pero `/proc/<pid>/exe` sí, y necesita ser dueño o root. Con el
censo corriendo como root, los 7 se resuelven:
```
uid 1001 : desconocido 7 · paquete-ajeno 13 · receta-takana 6 · suelto 13
root : desconocido 0 · paquete-ajeno 20 · receta-takana 5 · suelto 14
```
Así que el censo ahora **dice cuál de las dos cosas pasó**: «repetilo con sudo» y «averigualo a mano»
son trabajos muy distintos, y confundirlos manda a alguien a investigar un permiso.
Y desenvolver al supervisor destapó un dato que se estaba perdiendo: `shuma-daemon` corre con
`--user sergio`. La tarjeta de arje **no tiene campo de usuario**, así que sin eso a la vista un
servicio que acá corre sin privilegios termina de root en el destino. Ahora sale en la revisión.
#### El HTTP toca al origen; el DNS no
Sondear los dominios desde la propia máquina disparó su `fail2ban` y la dejó incomunicada — por eso