Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:linuxclient:home_verschluesselung]] 

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
anwenderwiki:linuxclient:home_verschluesselung [2022/02/04 21:35] – [Verschlüsselung eines home-Verzeichnisses mit ecrptfs] martin.resanwenderwiki:linuxclient:home_verschluesselung [2022/03/13 10:29] (aktuell) tobias
Zeile 3: Zeile 3:
 ====== Verschlüsselung des home-Verzeichnisses ====== ====== Verschlüsselung des home-Verzeichnisses ======
 Auf Lehrergeräten ist es sinnvoll zumindest das home-Verzeichnis zu verschlüsseln, da darin oft personenbezogene Daten abgelegt sind. Dazu gibt es verschiedene Varianten: Auf Lehrergeräten ist es sinnvoll zumindest das home-Verzeichnis zu verschlüsseln, da darin oft personenbezogene Daten abgelegt sind. Dazu gibt es verschiedene Varianten:
-  - **LUKS** - verschlüsselt nur ganze Partitionen, performant +  - **LUKS** - verschlüsselt nur ganze Partitionen oder das ganze System, performant, aber ungeeignet bei Geräten, die mehrere Benutzer haben 
-  - **ecryptfs** - verschlüsselt einzelne Verzeichnisse+  - **ecryptfs** - verschlüsselt Verzeichnisse oder Dateien einzeln
   - **systemd-homed** - für home-Verzeichnisse (in Entwicklung)   - **systemd-homed** - für home-Verzeichnisse (in Entwicklung)
 Zusätzlich zum home sollte auch die swap-Auslagerung (falls vorhanden) und das /tmp-Verzeichnis verschlüsselt werden. Zusätzlich zum home sollte auch die swap-Auslagerung (falls vorhanden) und das /tmp-Verzeichnis verschlüsselt werden.
  
 +
 +===== Alternative 1: Verschlüsselung eines home-Verzeichnisses mit ecrptfs =====
 +
 +Da das Betriebssystem Ubuntu und die home-Partition bei meiner Konfiguration (Sync mit LINBO) auch unverschlüsselte Daten enthalten, kam nur die Verschlüsselung ecryptfs in Frage.
 <note>Folgende Verfahren wurden an einem Ubuntu 22.04-System durchgeführt.</note> <note>Folgende Verfahren wurden an einem Ubuntu 22.04-System durchgeführt.</note>
-===== Verschlüsselung eines home-Verzeichnisses mit ecrptfs ===== + 
-Am einfachsten ist es die Verschlüsselung beim Neuanlegen eines Benutzers gleich mit zu installieren.+ 
 +Am einfachsten ist es die Verschlüsselung beim Neuanlegen eines Benutzers gleich mit zu  installieren. Bei Anmeldung an Ubuntu wird dann das Anmeldepasswort auch zum Entsprerren einer Passphrase verwendet und mit der Passphrase das home entschlüsselt.\\
 Verschlüsselung installieren: Verschlüsselung installieren:
-  sudo apt install ecryptfs-utils+  sudo apt install ecryptfs-utils cryptsetup
 Neuen Benutzer anlegen: Neuen Benutzer anlegen:
   sudo adduser –-encrypt-home testlehrer   sudo adduser –-encrypt-home testlehrer
 Nun die Benutzerverwaltung aufrufen und ggf. weitere Einstellungen zum Benutzer setzen.\\ Nun die Benutzerverwaltung aufrufen und ggf. weitere Einstellungen zum Benutzer setzen.\\
-**Problem bei ecryptfs**: Das home wird beim Abmelden nicht verschlossen, nur beim Herunterfahren. Deshalb in der Datei ''/etc/pam.d/common-session-noninteractive'' folgende Zeile auskommentieren: +**Problem bei ecryptfs**: Das home wird beim Abmelden nicht verschlossen, nur beim Herunterfahren. Deshalb in der Datei ''/etc/pam.d/common-session-noninteractive'' folgende Zeile mit "#" auskommentieren: 
-  # session optional pam_encryptfs.so unwrap+       ... 
 +       # session optional pam_encryptfs.so unwrap 
 +       ...
  
 +Die dabei erzeugte Passphrase "''wrapped-passphrase''" sollte man nun an einem sicheren Ort (z.B. USB-Stick) aufbewahren. Dazu die Passphrase unverschlüsselt extrahieren:
 +  ecryptfs-unwrap-passphrase .ecryptfs/wrapped-passphrase > /media/usbstick/mypassphrase.txt
 +<note important>Eine Passwortänderung darf nur innerhalb des Accounts erfolgen, nicht von außen, da sonst das Passwort der Passphrase nicht angepasst würde.</note>
  
  
 ===== Verschlüsselung des /tmp-Verzeichnisses mit ecrptfs ===== ===== Verschlüsselung des /tmp-Verzeichnisses mit ecrptfs =====
-Verschlüsselung installieren: +Alle Befehle als root ausführen. Zuerst die Verschlüsselungs-Pakete installieren: 
-  apt install ecryptfs-utils+  apt install ecryptfs-utils cryptsetup
  
 Meist gibt es neben ''/tmp'' auch das Verzeichnis ''/var/tmp'', die man mit einem Link zusammenführt: Meist gibt es neben ''/tmp'' auch das Verzeichnis ''/var/tmp'', die man mit einem Link zusammenführt:
Zeile 34: Zeile 44:
   # mkfs.ext4 -O ^has_journal /dev/loop20   # mkfs.ext4 -O ^has_journal /dev/loop20
 In der Datei ''/etc/crypttab'' eine Zeile hinzufügen:  In der Datei ''/etc/crypttab'' eine Zeile hinzufügen: 
-  crypttmp /.crypttmp /dev/urandom tmp,size=256, hash=sha256,cipher=aes-cbc-essiv:sha256+       crypttmp /.crypttmp /dev/urandom tmp,size=256, hash=sha256,cipher=aes-cbc-essiv:sha256
 In der Datei ''/etc/fstab'' eine Zeile hinzufügen: In der Datei ''/etc/fstab'' eine Zeile hinzufügen:
-  /dev/mapper/crypttmp /tmp ext4 defaults 0 2+       /dev/mapper/crypttmp /tmp ext4 defaults 0 2
 Mapping starten und Verzeichnis leeren: Mapping starten und Verzeichnis leeren:
   # cryptdisks_start crypttmp   # cryptdisks_start crypttmp
   # rm -Rf /tmp/*   # rm -Rf /tmp/*
-Beim Booten wird jedesmal ein neues ''/tmp''-Verzeichnis angelegt, formatiert und mit einer (neuen) zufälligen Passphrase (/dev/urandom) verschlüsselt.+Beim Booten wird jedesmal ein neues ''/tmp''-Verzeichnis angelegt, formatiert und mit einer (neuen) zufälligen Passphrase (/dev/urandom) verschlüsselt.\\ 
 +**Problem:** Das ''/tmp''-Verzeichnis hat hier eine maximale Größe von 300 MB - beim einem großen Update des Systems brach dieses bei mir ab, da der update-Prozess in ''/tmp'' nicht genügend Speicherplatz für alle neuen Pakete hatte. Ggf. die Größe der Container-Datei verändern. 
 + 
 +==== Links (Stand Feb'2022) ==== 
 +https://wiki.ubuntuusers.de/ecryptfs/Einrichten/ \\ 
 +https://gist.github.com/intrd/46c7d087a08386b17da47e69bf5cab54 \\ 
 +https://wiki.ubuntuusers.de/LUKS/ \\ 
 +https://curius.de/2016/01/das-verhalten-entscheidet-ueber-die-wahl-der-verschluesselungsmethode/ 
 + 
 +===== Alternative 2: Verschlüsselung des Home und tmp mit LUKS ===== 
 + 
 +In meiner Variante wird das Unterverzeichnis eines Benutzers mit frei wählbarem Benutzernamen, z.B. `tobias` auf einer eigenen Partition verschlüsselt. Ebenso wird tmp als eigene Partition verschlüsselt. 
 + 
 +Ich partitioniere daher den Client so: 
 +<code> 
 +/dev/nvme0n1p1 260MB EFI (/boot) 
 +/dev/nvme0n1p2 16MB reserved MS 
 +/dev/nvme0n1p3 15 GB LINBO-Cache 
 +/dev/nvme0n1p4 35 GB Ubuntuclient (inkl. home für linuxadmin & alex) 
 +/dev/nvme0n1p5 1 GB  /tmp 
 +/dev/nvme0n1p6 ca. 180 GB (Rest)  home-crypt 
 +</code> 
 + 
 + 
 +  * lokaler Vor-Installations-Benutzer ''alex'' (1066) wird angelegt - unverschlüsselt mit Passwort ''Muster!'', er bekommt sudo-Rechte für das turnkey-skript und die Linuxadmin-Umgebung 
 + 
 +  # groupadd -g 1066 alex 
 +  # useradd -d /home/alex -k /home/linuxadmin -s /bin/bash -m -u 1066 -N -g 1066 alex 
 +  # echo 'alex:Muster!' | chpasswd 
 + 
 +  * ''/var/tmp'' wird auf ''/tmp'' verlinkt und beim Boot automatisch immer neu verschlüsselt 
 + 
 +  mv /var/tmp/* /tmp/ 
 +  mv /var/tmp/.??* /tmp/ 
 +  rmdir /var/tmp/ 
 +  ln -s /tmp /var/tmp 
 +  echo "tmp  /dev/nvme0n1p5 /dev/urandom tmp,cipher=aes-xts-plain64,size=256" >> /etc/crypttab 
 +  echo "/dev/mapper/tmp /tmp ext4 defaults 0 2" >> /etc/fstab 
 + 
 +  * das turnkey-Skript auf dem Desktop von Alexander, das per sudo folgende Aktionen durchführt: 
 +    * Abfrage von Benutzername und Passwort für das neue Konto (uid/gid: 1067) 
 +    * Abfrage, ob ein Administrationsschlüssel hinterlegt werden sollte (''/admin.key''
 +    * Benutzer- und Gruppe werden angelegt: $newuser mit $newpw 
 + 
 +  # groupadd -g 1067 $newuser 
 +  # useradd -m -d /home/${newuser} -s /bin/bash -N -g 1067 -G $othergroups -k /home/linuxadmin $newuser  
 +  # echo '$newuser:$newpw' | chpasswd 
 + 
 +  * Containerverschlüsselung der Homepartition erstellt 
 + 
 +  # cryptsetup luksFormat --use-random -c aes-xts-plain64 -s 512 -h sha512 -y /dev/nvme0n1p6  
 +     
 +  WARNUNG! 
 +  ======== 
 +  Hiermit werden die Daten auf »/dev/nvme0n1p6« unwiderruflich überschrieben. 
 +   
 +  Sind Sie sicher? (Tippen Sie 'yes' in Großbuchstaben): YES 
 +  Geben Sie die Passphrase für »/dev/nvme0n1p6« ein: <starkes Passwort> 
 +  Passphrase bestätigen: <starkes Passwort> 
 + 
 +  * Eventuell Administrationsschlüssel hinterlegen: 
 + 
 +  #  printf $newpw | cryptsetup luksAddKey /dev/nvme0n1p6 /admin.key 
 +  
 +  * Container öffnen und formatieren 
 + 
 +  # printf $newpw | cryptsetup luksOpen /dev/nvme0n1p6 cryptohome 
 +  # mkfs.ext4 /dev/mapper/cryptohome 
 + 
 +  * sudo-Rechte bei Wunsch vergeben 
 +  * Deaktivierung von Konto "alex", Löschen des Adminkeys auf dem Gerät: ''/admin.key'' 
 +  * Damit das Home-Verzeichnis bei der Anmeldung auch geöffnet und als /home/$newuser gemountet wird, verwende ich momentan (noch) pam_mount nach folgender Vorlage: Der Vorlagennutzer "wilhelm", der durch $newuser ersetzt werden sollte:   
 + 
 +<code> 
 + 
 +<?xml version="1.0" encoding="utf-8" ?> 
 +<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd"> 
 +<pam_mount> 
 +  <debug enable="0" /> 
 +  <volume user="wilhelm" fstype="crypt" path="/dev/nvme0n1p6" mountpoint="/home/wilhelm" options="crypto_name=cryptohome,allow_discard,fstype=ext4"> 
 +    <user>                                                                                                                                                     
 +      wilhelm                                                                                                                                                  
 +    </user> 
 +  </volume> 
 + 
 +    <mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" /> 
 +    <mntoptions require="nosuid,nodev" /> 
 +   <logout wait="1000" hup="0" term="1" kill="1" /> 
 +    <mkmountpoint enable="1" remove="true" /> 
 +</pam_mount> 
 + 
 +</code> 
 + 
 +==== Skriptvorschlag ==== 
 + 
 + 
 +==== Links (Stand: März 2022) ==== 
 +  * Siehe Diskussion und Skriptvorschlag hier: https://ask.linuxmuster.net/t/dienstgeraete-verschluesselung-des-home/8477/21?u=tobias 
 +  * https://wiki.archlinux.org/title/Dm-crypt/Encrypting_a_non-root_file_system 
 +  * https://unix.stackexchange.com/questions/119805/how-can-i-get-a-hash-of-the-luks-master-key?rq=1 
 +  * https://wiki.archlinux.org/title/Dm-crypt/Mounting_at_login (für eine Alternative zu pam_mount) 
 +  * https://wiki.archlinux.org/title/Pam_mount (für pam_mount)
 [[anwenderwiki:linuxclient:home_verschluesselung]] anwenderwiki/linuxclient/home_verschluesselung.1644006930.txt.gz · Zuletzt geändert: 2022/02/04 21:35 von martin.res