Se introdujo systemd-homed para administrar directorios personales portátiles

Lennart Poettering presentado ((PDF)) en la conferencia All Systems Go 2019, un nuevo componente del administrador del sistema systemd - systemd-homed, destinado a hacer que los directorios personales de los usuarios sean portátiles y separados de la configuración del sistema. La idea principal del proyecto es crear entornos autosuficientes para los datos de los usuarios que puedan transferirse entre diferentes sistemas sin preocuparse por la sincronización de identificadores y la confidencialidad.

El entorno del directorio de inicio se presenta en forma de un archivo de imagen montado, cuyos datos están cifrados. Las credenciales de usuario están vinculadas al directorio de inicio en lugar de a la configuración del sistema, en lugar de /etc/passwd y /etc/shadow. perfil en formato JSON, almacenado en el directorio ~/.identity. El perfil contiene los parámetros necesarios para el trabajo del usuario, incluida información sobre el nombre, el hash de la contraseña, las claves de cifrado, las cuotas y los recursos asignados. El perfil se puede certificar con una firma digital almacenada en un token externo de Yubikey.

Los parámetros también pueden incluir información adicional como claves SSH, datos de autenticación biométrica, imagen, correo electrónico, dirección, zona horaria, idioma, límites de proceso y memoria, indicadores de montaje adicionales (nodev, noexec, nosuid), información sobre los servidores IMAP/SMTP del usuario utilizados. , información sobre cómo habilitar controles parentales, opciones de copia de seguridad, etc. Se proporciona una API para solicitar y analizar parámetros. Varlink.

La asignación y el procesamiento de UID/GID se realizan dinámicamente en cada sistema local al que está conectado el directorio de inicio. Con el sistema propuesto, el usuario puede mantener consigo su directorio de inicio, por ejemplo en una unidad flash, y obtener un entorno de trabajo en cualquier computadora sin crear explícitamente una cuenta en ella (la presencia de un archivo con la imagen del directorio de inicio conduce a la síntesis del usuario).

Se propone utilizar el subsistema LUKS2 para el cifrado de datos, pero systemd-homed también permite el uso de otros backends, por ejemplo, para directorios no cifrados, particiones de red Btrfs, Fscrypt y CIFS. Para administrar directorios portátiles, se propone la utilidad homectl, que le permite crear y activar imágenes de directorios de inicio, así como cambiar su tamaño y establecer una contraseña.

A nivel del sistema, el trabajo está garantizado por los siguientes componentes:

  • systemd-homed.service: administra el directorio de inicio e incrusta registros JSON directamente en las imágenes del directorio de inicio;
  • pam_systemd: procesa parámetros del perfil JSON cuando el usuario inicia sesión y los aplica en el contexto de la sesión activada (realiza autenticación, configura variables de entorno, etc.);
  • systemd-logind.service: procesa parámetros del perfil JSON cuando el usuario inicia sesión, aplica varias configuraciones de administración de recursos y establece límites;
  • nss-systemd: módulo NSS para glibc, sintetiza registros NSS clásicos basados ​​en un perfil JSON, proporcionando compatibilidad con versiones anteriores de la API de procesamiento de usuarios de UNIX (/etc/contraseña);
  • PID 1: crea usuarios dinámicamente (sintetizados por analogía con el uso de la directiva DynamicUser en unidades) y los hace visibles para el resto del sistema;
  • systemd-userdbd.service: traduce cuentas UNIX/glibc NSS en registros JSON y proporciona una API Varlink unificada para consultar e iterar sobre registros.

Las ventajas del sistema propuesto incluyen la capacidad de administrar usuarios al montar el directorio /etc en modo de solo lectura, la ausencia de la necesidad de sincronizar identificadores (UID/GID) entre sistemas, la independencia del usuario de una computadora específica y el bloqueo de datos del usuario. durante el modo de suspensión, el uso de cifrado y métodos de autenticación modernos. Está previsto que Systemd-homed se incluya en la corriente principal de systemd en la versión 244 o 245.

Ejemplo de perfil de usuario JSON:

"autoLogin": verdadero,
"vinculante" : {
«15e19cd24e004b949ddaac60c74aa165» : {
"tipo de sistema de archivos": "ext4"
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
"gid": 60232,
"directorioInicio": "/inicio/prueba",
"imagePath": "/home/test.home",
"luksCipher": "aes",
"luksCipherMode": "xts-plain64",
«luksUUID» : «e63581ba-79fa-4226-b9de-1888393f7573»,
"luksVolumeKeySize": 32,
«partitionUUID» : «41f9ce04-c927-4b74-a981-c669f93eb4dc»,
"almacenamiento": "luks",
"uid": 60233
}
},
"disposición": "regular",
"enforcePasswordPolicy": falso,
"último cambio USec": 1565951024279735,
"miembro de" : [
"rueda"
],
"privilegiado": {
"Contraseña hash": [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"firma" : [
{
"datos": "LU/HeVrPZSzi3M3J...==",
"key" : "——COMENZAR CLAVE PÚBLICA——\nMCowBQADK2VwAy…=\n——TERMINAR CLAVE PÚBLICA——\n"
}
],
"nombre de usuario": "prueba",
"estado" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec": 1566309343044322,
"rateLimitBeginUSec": 1566309342341723,
"rateLimitCount": 1,
"estado": "inactivo",
"servicio": "io.systemd.Home",
"Tamaño del disco": 161218667776,
"techo del disco": 191371729408,
"piso del disco": 5242780,
"firmado localmente": verdadero
}
}

Fuente: opennet.ru

Añadir un comentario