Seguridad¶
Objetivo¶
Esta guía comprueba que una instalación conserva la postura de seguridad que fija el aprovisionamiento, y deja escrito lo que esa postura todavía no cubre.
La plataforma no está pensada para guardar datos de pacientes, pero nada impide que el personal suba archivos clínicos a Archivos, a Talk o al editor de documentos Euro-Office. Por eso cada cuenta, cada enlace compartido y cada respaldo se tratan como si los tuvieran: cada valor que la suite fija, o que deja en su valor por defecto, es una salvaguarda. Lo que un atacante busca es una cuenta del personal, un enlace público sin contraseña ni caducidad, un respaldo o un secreto expuesto, un acceso sin rastro y un transporte débil.
Lo que fija la suite¶
Medida |
Dónde |
Por qué |
|---|---|---|
Puertos solo en |
|
La instancia de desarrollo nunca queda expuesta en la red local. |
TLS en |
Instalador AIO |
El proxy inverso del instalador termina TLS. En una instalación por IP, la autoridad propia del instalador firma el certificado de la suite, que la ejecución semanal vuelve a firmar 30 días antes de que venza; la fase |
|
|
La plataforma rechaza un host no declarado. En Compose, la fase agrega |
|
Fase |
El formulario de inicio de sesión deja de ofrecer recordar la sesión, el servidor la descarta aunque se envíe, y la sesión del navegador termina con la ventana. Los clientes de escritorio y móviles de Nextcloud conservan sus tokens permanentes, que barre la retención de tokens. |
Tareas de fondo por |
Fase |
El barrido de tokens vencidos corre desde las tareas de fondo; sin |
|
Fase |
Las acciones de administración quedan registradas; los accesos a archivos y las comparticiones no se registran (la plataforma no lo trae de serie). |
|
Fase |
La exclusión del servidor público de búsqueda de Nextcloud queda declarada; con los valores por defecto la plataforma ya no lo consultaba, y la clave evita que eso dependa de un descuido. |
|
|
Ni siquiera el prefijo del hash de una contraseña nueva sale del servidor hacia |
|
|
La primera enviaría datos de uso cada 28 días desde el servidor, la vea quien la vea; la segunda empuja la publicidad del fabricante a la campana de notificaciones de cada cuenta. |
|
|
El panel del clima llama a una API externa desde el tablero de cada cuenta; IntraVox trae su telemetría activada por defecto. |
Sin firma de la tienda en aplicaciones propias y forks |
La publicación de cada aplicación |
Las publicaciones de la organización no llevan |
Tienda de aplicaciones cerrada |
|
Con la tienda abierta, |
Secretos |
|
|
Lo que la suite no fija¶
Estas medidas quedan en el valor por defecto de la imagen fijada, y cada una es un objetivo de revisión:
Autenticación de dos factores: ningún proveedor está habilitado y no se exige al personal ni a quienes administran.
Política de contraseñas: solo está fijado el chequeo de contraseñas filtradas, y está apagado; una contraseña conocida como filtrada ya no se rechaza. Largo, contraseñas comunes y caducidad quedan por defecto.
Compartición: nada fija contraseña ni caducidad de los enlaces públicos, ni límites a la compartición por correo.
Cifrado en reposo: el cifrado del lado del servidor no está habilitado.
Fuerza bruta: rige la limitación integrada de la plataforma, sin configuración propia.
TLS y cabeceras: nada en el repositorio fija versiones de TLS ni cabeceras de seguridad; quedan a cargo del proxy inverso del instalador.
La postura de producción —HSTS, correo saliente, exigencia de dos factores— queda diferida hasta que exista un host de destino (#75), y el modelo de amenazas no registra riesgos aceptados.
Requisitos¶
Un centro instalado con el instalador AIO y en marcha.
Una consola en el servidor, en la copia de gestion de
/opt/aps-conecta/gestion, con permisos sobre Docker.El
.envde esa copia conHTTP_PORT=443, el puerto público que leen las pruebas.
Pasos¶
Ejecutar la prueba de humo:
make smokeCinco de sus comprobaciones cubren esta postura: la 8, que el personal no ve las aplicaciones restringidas ni deshabilitadas; la 9, que el formulario de inicio de sesión no ofrece recordar la sesión; la 10, que ninguna aplicación parcheada conserva su firma; la 13, que
appstoreenabledvale0; y la 14, que la URL del editor coincide con la forma en que se llega a la instancia.Ejecutar la compuerta de divergencia:
bash scripts/divergence.sh --gate
La compuerta compara la instancia con su declaración —carpetas de grupo, secciones de bienvenida, grupos, aplicaciones, cuentas y la identidad del establecimiento en territorio y estadistica— y sale con código 1 ante cualquier nota. Una cuenta o un grupo vivo sin declarar es un acceso que nadie decidió en el archivo del establecimiento.
Verificación¶
La prueba de humo termina con una línea PASS: core stack healthy que enumera, entre otros hechos, la política de aplicaciones, la ausencia de recordar la sesión, la ausencia de firmas obsoletas y la tienda cerrada.
La compuerta de divergencia sale con código 0 y sin notas: la instancia coincide con su declaración, cuentas incluidas.
Problemas frecuentes¶
Síntoma |
Causa |
Remedio |
|---|---|---|
La comprobación 9 dice que el formulario ofrece recordar la sesión |
|
En la pila de desarrollo, |
La comprobación 10 encuentra una aplicación parcheada con su firma |
Una actualización de la aplicación fuera del aprovisionamiento ( |
Volver a aprovisionar: la fase |
Un documento no abre desde otro equipo y el editor informa un problema de token o de seguridad |
La URL del editor apunta a |
La comprobación 14 detecta las dos contradicciones; en Compose, |
La compuerta de divergencia informa una cuenta, un grupo o una carpeta de grupo sin declarar |
Alguien lo creó fuera del archivo del establecimiento |
Decidir: declararlo en |