Introdusert systemd-homed for å administrere bærbare hjemmekataloger

Lennart Poettering innsendt (PDF) på All Systems Go 2019-konferansen, en ny komponent i systembehandlersystemet - systemd-homed, rettet mot å gjøre brukerhjemmekataloger bærbare og atskilt fra systeminnstillinger. Hovedideen med prosjektet er å skape selvforsynte miljøer for brukerdata som kan overføres mellom ulike systemer uten å bekymre seg for identifikatorsynkronisering og konfidensialitet.

Hjemmekatalogmiljøet kommer i form av en montert bildefil, hvor dataene er kryptert. Brukerlegitimasjon er knyttet til hjemmekatalogen i stedet for systeminnstillinger - i stedet for /etc/passwd og /etc/shadow profil i JSON-format, lagret i ~/.identity-katalogen. Profilen inneholder parametrene som er nødvendige for brukerens arbeid, inkludert informasjon om navn, passordhash, krypteringsnøkler, kvoter og tildelte ressurser. Profilen kan sertifiseres med en digital signatur lagret på et eksternt Yubikey-token.

Parametre kan også inkludere tilleggsinformasjon som SSH-nøkler, biometriske autentiseringsdata, bilde, e-post, adresse, tidssone, språk, prosess og minnegrenser, ekstra monteringsflagg (nodev, noexec, nosuid), informasjon om brukte bruker-IMAP/SMTP-servere , informasjon om aktivering av foreldrekontroll, sikkerhetskopieringsalternativer osv. En API er gitt for å be om og analysere parametere Varlink.

UID/GID-tilordning og -behandling gjøres dynamisk på hvert lokale system som hjemmekatalogen er koblet til. Ved å bruke det foreslåtte systemet kan brukeren holde hjemmekatalogen hos seg, for eksempel på en Flash-stasjon, og få et arbeidsmiljø på hvilken som helst datamaskin uten eksplisitt å opprette en konto på den (tilstedeværelsen av en fil med bildet av hjemmekatalogen fører til syntese av brukeren).

Det foreslås å bruke delsystemet LUKS2 for datakryptering, men systemd-homed tillater også bruk av andre backends, for eksempel for ukrypterte kataloger, Btrfs, Fscrypt og CIFS nettverkspartisjoner. For å administrere bærbare kataloger, foreslås homectl-verktøyet, som lar deg lage og aktivere bilder av hjemmekataloger, samt endre størrelsen og angi et passord.

På systemnivå er arbeidet sikret av følgende komponenter:

  • systemd-homed.service - administrerer hjemmekatalogen og bygger inn JSON-poster direkte i hjemmekatalogbilder;
  • pam_systemd - behandler parametere fra JSON-profilen når brukeren logger på og bruker dem i sammenheng med den aktiverte økten (utfører autentisering, konfigurerer miljøvariabler, etc.);
  • systemd-logind.service - behandler parametere fra JSON-profilen når brukeren logger på, bruker ulike ressursadministrasjonsinnstillinger og setter grenser;
  • nss-systemd - NSS-modul for glibc, syntetiserer klassiske NSS-poster basert på en JSON-profil, og gir bakoverkompatibilitet med UNIX-brukerbehandlings-API (/etc/password);
  • PID 1 - oppretter brukere dynamisk (syntetisert analogt med bruken av DynamicUser-direktivet i enheter) og gjør dem synlige for resten av systemet;
  • systemd-userdbd.service - oversetter UNIX/glibc NSS-kontoer til JSON-poster og gir en enhetlig Varlink API for spørring og iterering over poster.

Fordelene med det foreslåtte systemet inkluderer muligheten til å administrere brukere når du monterer /etc-katalogen i skrivebeskyttet modus, fraværet av behovet for å synkronisere identifikatorer (UID/GID) mellom systemer, brukeruavhengighet fra en spesifikk datamaskin, blokkering av brukerdata i hvilemodus, bruk av kryptering og moderne autentiseringsmetoder. Systemd-homed er planlagt inkludert i systemd mainstream i utgivelse 244 eller 245.

Eksempel på JSON-brukerprofil:

"autoLogin" : sant,
"binding" : {
«15e19cd24e004b949ddaac60c74aa165» : {
"fileSystemType" : "ext4"
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
"gid": 60232,
"homeDirectory" : "/hjem/test",
"imagePath" : "/home/test.home",
"luksCipher" : "aes",
"luksCipherMode" : "xts-plain64",
«luksUUID» : «e63581ba-79fa-4226-b9de-1888393f7573»,
"luksVolumeKeySize" : 32,
«partitionUUID» : «41f9ce04-c927-4b74-a981-c669f93eb4dc»,
"storage" : "luks",
"uid" : 60233
}
},
"disposition" : "vanlig",
"enforcePasswordPolicy" : usant,
"lastChangeUSec" : 1565951024279735,
"medlem av" : [
"hjul"
],
"privilegert" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"signatur" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "——BEGIN OFFENTLIG NØKKEL——\nMCowBQADK2VwAy...=\n——SLUT OFFENTLIG NØKKEL——\n"
}
],
"brukernavn" : "test",
"status" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"state" : "inaktiv",
"service" : "io.systemd.Home",
"diskstørrelse" : 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signertLokalt" : sant
}
}

Kilde: opennet.ru

Legg til en kommentar