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.
Qué hace Pier
Sección titulada «Qué hace Pier»- 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-secreten 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
sessionsde 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 —
.envypier.dbtienenchmod 600. - Copias de seguridad diarias — la base de datos y la clave se respaldan en
data/backups/system/; se conservan 7 copias rotativas.
Qué debe hacer el operador
Sección titulada «Qué debe hacer el operador»- 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-secreten el directorio de datos, si existe) fuera de cualquier repositorio. Respáldalo por separado. - Rotar
PIER_SECRETsolo 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.1y accede a él mediante un túnel SSH o un enlace WireGuard/AmneziaWG).
Reportar vulnerabilidades
Sección titulada «Reportar vulnerabilidades»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.