la-alarma
v0.1.1
Published
Auditor de seguridad cruzado — escanea git, workflows de n8n, puertos del VPS y rotación de tokens en busca de secretos expuestos.
Maintainers
Readme
La Alarma 🔔
Auditor de seguridad cruzado para tu stack personal. En un solo comando escanea las superficies donde suelen aparecer secretos expuestos: el historial git de tus repos, tus workflows exportados de n8n, los puertos abiertos de tu VPS y la antigüedad de tus tokens.
No reemplaza a un scanner enterprise: es la alarma de casa para quien corre su propia infra — un VPS, unos cuantos repos, un n8n con credenciales — y quiere enterarse antes de que un token expuesto se convierta en un incidente.
Requisitos
- Node ≥ 20
- gitleaks en el PATH (el motor de escaneo de git):
# Windows
winget install --id Gitleaks.Gitleaks -e
# macOS
brew install gitleaks
# Linux: gestor de paquetes o https://github.com/gitleaks/gitleaks/releasesDespués de instalar gitleaks, reabrí la terminal para que se refresque el PATH. Si falta, La Alarma te lo dice con el comando exacto para tu sistema.
Instalación
npm install -g la-alarmaQuickstart
# 1. Configurá las secciones respondiendo preguntas (cero YAML a mano):
la-alarma init
# 2. Escaneo rápido: el historial git de la carpeta actual.
la-alarma
# 3. Barrido completo: los 4 módulos desde tu config.
la-alarma --todo⚠️
la-alarma inites interactivo: corrélo en una terminal real, no por pipe/script. Si le pasás las respuestas por stdin de una vez (printf ... | la-alarma init), readline descarta las líneas que llegan sin una pregunta pendiente y se pierden respuestas en silencio.
Los dos modos
| Comando | Qué escanea |
|---|---|
| la-alarma | Solo el git local de la carpeta actual (historial completo, con gitleaks). No necesita config ni red. Encadenable: la-alarma && git push. |
| la-alarma --todo | Los 4 módulos según config/alarma.config.yaml: github (carpeta actual + repos extra), n8n (workflows exportados), vps (puertos expuestos por SSH + estado de ufw), tokens (antigüedad de rotación). |
Módulo sin configurar → se reporta "omitido (no configurado)" y no afecta el resultado. Módulo que falla → se reporta como error sin tumbar el resto del barrido.
Cómo leer el reporte
- 🔴 Crítico — un secreto expuesto, un puerto abierto que no debería, un token vencido o sin fecha. Exit code 1.
- 🟡 Aviso — un token que está por vencer (solo el módulo de tokens distingue este nivel). Exit code 1.
- 🟢 Limpio / omitido — sin hallazgos, o módulo salteado con su razón. Si todo está así, exit code 0.
El exit code hace a La Alarma encadenable en scripts y hooks: 0 = seguí, 1 = frená y mirá.
La Alarma nunca imprime el valor de un secreto — reporta dónde está y de qué tipo es, nunca el contenido.
Configuración
la-alarma init escribe estos archivos (y tu .gitignore debería excluirlos — llevan datos de tu infra):
config/alarma.config.yaml— qué escanea--todo: repos extra, carpeta de workflows de n8n, target SSH del VPS, ruta del registro de tokens. Verconfig/alarma.config.example.yaml.config/tokens.yaml— registro semi-manual de rotación: solo nombre y fecha de última rotación, nunca el valor del token. Verconfig/tokens.example.yaml.
El módulo VPS requiere acceso SSH por llave al target configurado (user@host), y corre ss -tlnp + ufw status verbose de solo lectura.
Diseño
El razonamiento detrás de las decisiones (por qué gitleaks como motor, por qué ss es la fuente de verdad y no las reglas de ufw, por qué el registro de tokens es semi-manual) está en DESIGN.md.
