Introducerade systemd-homed för att hantera bärbara hemkataloger

Lennart Poettering lämnats (PDF) på All Systems Go 2019-konferensen, en ny komponent i systemhanteraren - systemd-homed, som syftar till att göra användarhemkataloger bärbara och åtskilda från systeminställningar. Huvudtanken med projektet är att skapa självförsörjande miljöer för användardata som kan överföras mellan olika system utan att behöva oroa sig för identifieringssynkronisering och konfidentialitet.

Hemkatalogmiljön kommer i form av en monterad bildfil, vars data är krypterad. Användaruppgifter är knutna till hemkatalogen snarare än systeminställningar - istället för /etc/passwd och /etc/shadow profil i JSON-format, lagrad i ~/.identity-katalogen. Profilen innehåller de parametrar som är nödvändiga för användarens arbete, inklusive information om namn, lösenordshash, krypteringsnycklar, kvoter och tilldelade resurser. Profilen kan certifieras med en digital signatur lagrad på en extern Yubikey-token.

Parametrar kan också inkludera ytterligare information som SSH-nycklar, biometrisk autentiseringsdata, bild, e-post, adress, tidszon, språk, process och minnesgränser, ytterligare monteringsflaggor (nodev, noexec, nosuid), information om använda användarens IMAP/SMTP-servrar , information om att aktivera föräldrakontroll, alternativ för säkerhetskopiering osv. Ett API tillhandahålls för att fråga och analysera parametrar Varlink.

UID/GID-tilldelning och bearbetning sker dynamiskt på varje lokalt system som hemkatalogen är ansluten till. Med det föreslagna systemet kan användaren behålla sin hemkatalog med sig, till exempel på en flash-enhet, och få en arbetsmiljö på vilken dator som helst utan att uttryckligen skapa ett konto på den (närvaron av en fil med bilden av hemkatalogen leder till syntes av användaren).

Det föreslås att delsystemet LUKS2 används för datakryptering, men systemd-homed tillåter även användning av andra backends, till exempel för okrypterade kataloger, Btrfs, Fscrypt och CIFS nätverkspartitioner. För att hantera bärbara kataloger föreslås homectl-verktyget, som låter dig skapa och aktivera bilder av hemkataloger, samt ändra deras storlek och ställa in ett lösenord.

På systemnivå säkerställs arbetet av följande komponenter:

  • systemd-homed.service - hanterar hemkatalogen och bäddar in JSON-poster direkt i hemkatalogbilder;
  • pam_systemd - bearbetar parametrar från JSON-profilen när användaren loggar in och tillämpar dem i samband med den aktiverade sessionen (utför autentisering, konfigurerar miljövariabler, etc.);
  • systemd-logind.service - behandlar parametrar från JSON-profilen när användaren loggar in, tillämpar olika resurshanteringsinställningar och sätter gränser;
  • nss-systemd - NSS-modul för glibc, syntetiserar klassiska NSS-poster baserat på en JSON-profil, vilket ger bakåtkompatibilitet med UNIX användarbearbetnings-API (/etc/password);
  • PID 1 - skapar dynamiskt användare (syntetiserat i analogi med användningen av DynamicUser-direktivet i enheter) och gör dem synliga för resten av systemet;
  • systemd-userdbd.service - översätter UNIX/glibc NSS-konton till JSON-poster och tillhandahåller ett enhetligt Varlink-API för att fråga och iterera över poster.

Fördelarna med det föreslagna systemet inkluderar möjligheten att hantera användare vid montering av /etc-katalogen i skrivskyddat läge, frånvaron av behovet av att synkronisera identifierare (UID/GID) mellan system, användaroberoende från en specifik dator, blockering av användardata under viloläge, användning av kryptering och moderna autentiseringsmetoder. Systemd-homed planeras att inkluderas i systemd mainstream i release 244 eller 245.

Exempel på JSON-användarprofil:

"autoLogin" : sant,
"bindande" : {
«15e19cd24e004b949ddaac60c74aa165» : {
"fileSystemType" : "ext4"
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
"gid": 60232,
"homeDirectory" : "/hem/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" : false,
"lastChangeUSec" : 1565951024279735,
"medlem i" : [
"hjul"
],
"privilegierad" : {
"hashedPassword" : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"signatur" : [
{
"data" : "LU/HeVrPZSzi3M3J...==",
"key" : "——BEGIN OFFENTLIG NYCKEL——\nMCowBQADK2VwAy…=\n——SLUT OFFENTLIG NYCKEL——\n"
}
],
"användarnamn" : "test",
"status" : {
«15e19cf24e004b949dfaac60c74aa165» : {
"goodAuthenticationCounter": 16,
"lastGoodAuthenticationUSec" : 1566309343044322,
"rateLimitBeginUSec" : 1566309342341723,
"rateLimitCount" : 1,
"state" : "inaktiv",
"service" : "io.systemd.Home",
"diskstorlek" : 161218667776,
"diskCeiling": 191371729408,
"diskFloor": 5242780,
"signedLocally" : sant
}
}

Källa: opennet.ru

Lägg en kommentar