Skip to main content

Cuentas heredadas del broker MQTT

Registro de cuentas del broker que existen por razones históricas y hay que dar de baja. Si estás leyendo esto y alguna sigue viva, sigue vivo el trabajo pendiente.

mqttlow — TEMPORAL, DAR DE BAJA

Estado: activa en sd1 y en sd2. Pendiente de eliminación.

Qué es. Una cuenta del broker creada a mano en sd1, nunca a través del repo. La usa un dispositivo real en campo: ESP32_a12384. En una ventana de 7 días fue el único cliente que la usó.

Por qué es un problema. Su contraseña en claro no la tiene nadie. Solo existe como hash $7$ (PBKDF2-SHA512 de mosquitto), que no es reversible. passwords.old tampoco la tiene: ahí solo está mqttuser. Al no haber nacido del repo, ningún host nuevo la reproducía, y el modo de fallo es silencioso — el broker rechaza al dispositivo con not authorised y el ESP32 simplemente deja de reportar, sin error visible en ningún panel.

Cómo se migró a sd2 sin conocer la contraseña. Se copió el hash tal cual, no la contraseña. MOSQUITTO_EXTRA_USER_HASHES_B64 (en .env.secrets como GLOBAL_MOSQUITTO_EXTRA_USER_HASHES_B64) lleva líneas user:<hash> en base64, y infrastructure/mosquitto/bin/setup.sh las escribe literalmente en el fichero de contraseñas en cada arranque. Va en base64 porque el hash contiene $, que la interpolación de compose se come. El dispositivo autentica con la contraseña que ya tiene y no hace falta reflashearlo.

Qué falta para cerrarlo. Cuando el ESP32_a12384 se pueda intervenir:

  1. Reflashearlo con credenciales nacidas del repo (GLOBAL_MOSQUITTO_EXTRA_USERS, que sí lleva contraseña en claro y da de alta la cuenta en cada arranque).
  2. Quitar la entrada de GLOBAL_MOSQUITTO_EXTRA_USER_HASHES_B64.
  3. Borrar la cuenta del broker en ambos hosts: mosquitto_passwd -D <fichero> mqttlow.
  4. Borrar esta sección.

Nota sobre permisos. Mosquitto no tiene ACL configurada, así que la distinción entre mqttuser y mqttlow es hoy solo nominal: ambas cuentas tienen los mismos permisos. La cuenta "low" no está restringida a nada.

Cuentas legítimas

  • mqttuser — cuenta principal, nace de MOSQUITTO_USER / MOSQUITTO_PASS, generada por generate-env.sh. No requiere ninguna acción.