Ir al contenido

Visión general de seguridad

El modelo de amenazas de Pier asume que:

  • El operador controla el servidor y el binario de Pier.
  • El operador quiere mantener los secretos a salvo incluso si el archivo SQLite se filtra.
  • El panel de control está en internet público, detrás del TLS de Traefik.
  • Cifrado en reposo — cada variable de entorno se cifra con AES-256-GCM antes de almacenarse. La clave proviene de PIER_SECRET (systemd la lee de /opt/pier/.env); si esa variable no está definida, Pier conserva y reutiliza un archivo .pier-secret en el directorio de datos. En cualquier caso, la clave reside por separado de la base de datos.
  • Sesiones opacas mediante cookies con contraseñas bcrypt — el inicio de sesión emite un ID de sesión aleatorio y opaco que se almacena en la tabla sessions de SQLite (no es un JWT), de modo que el cierre de sesión y la revocación lo invalidan en el lado del servidor. Las contraseñas se cifran con bcrypt. Sin dependencias de autenticación de terceros.
  • Autenticación de dos factores (TOTP) — 2FA opcional basada en TOTP con códigos de recuperación de un solo uso.
  • Endurecimiento de sesiones — las sesiones caducan tras un tiempo de inactividad (8 h por defecto) y una vida útil máxima absoluta (72 h), y pueden revocarse de forma individual o todas a la vez.
  • Sin reflejo de secretos — las respuestas de la API nunca devuelven variables de entorno descifradas, salvo a través de un endpoint explícito GET /env.
  • Detección de dependencias en el backend — la vista Canvas calcula las relaciones entre servicios en el servidor, de modo que el navegador nunca ve los valores de las variables de entorno.
  • Permisos.env y pier.db tienen chmod 600.
  • Copias de seguridad diarias — la base de datos y la clave se respaldan en data/backups/system/; se conservan 7 copias rotativas.
  • Abrir únicamente los puertos 80, 443 y 8443 en el firewall.
  • Usar una contraseña de administrador robusta en la configuración inicial.
  • Mantener el archivo /opt/pier/.env (y el respaldo .pier-secret en el directorio de datos, si existe) fuera de cualquier repositorio. Respáldalo por separado.
  • Rotar PIER_SECRET solo si la clave antigua se ve comprometida — la rotación requiere volver a cifrar todas las filas.
  • Considera ejecutar el panel de control detrás de una VPN en lugar de exponer el puerto 8443 públicamente. Pier admite esto (vincula el panel a 127.0.0.1 y accede a él mediante un túnel SSH o un enlace WireGuard/AmneziaWG).

Envía los detalles a la dirección que figura en /.well-known/security.txt. Respondemos en un plazo de 72 horas y publicamos agradecimientos con cada versión.