Nut­zer­ver­zeich­nis unter Linux mit LUKS verschlüsseln

Statt einer kom­plet­ten Par­ti­ti­on kön­nen auch ein­zel­ne Ver­zeich­nis­se mit LUKS ver­schlüs­sel wer­den. Das ver­schlüs­sel­te home-Ver­zeich­nis eines Nut­zers kann beim Anmel­den mit pam-mount auch auto­ma­tisch mit sei­nem Pass­wort ent­schlüs­selt ein­ge­bun­den werden.

Anle­gen von Nut­zer und Verzeichnis

Die­se Pro­ze­dur wur­de auf Debi­an 12 (book­worm) durch­ge­führt, soll­te aber auf allen Debi­an-basier­ten Linux-Vari­an­ten (wie z.B. Ubun­tu oder Mint) eben­so funktionieren.

  1. Back­up der Nut­zer­da­ten durchführen!
  2. Soft­ware­pa­ke­te zum Ver­schlüs­seln und Moun­ten beim Anmel­den instal­lie­ren
    sudo apt install cryptsetup libpam-mount
  3. Nut­zer, sein home-Ver­zeich­nis und Zei­ger­da­tei anle­gen
    sudo useradd testuser
    sudo mkdir /home/testuser
    sudo chown testuser:testuser /home/testuser

    sudo touch /home/testuser/___unencrypted___
  4. Datei in der gewünsch­ten Grö­ße des home-Ver­zeich­nis­ses anle­gen (hier 5GB)
    sudo dd if=/dev/zero of=/home/testuser.luks bs=1M count=5120
  5. Ver­schlüs­se­lung star­ten und Datei­sys­tem anle­gen
    sudo cryptsetup luksFormat /home/testuser.luks
    sudo cryptsetup open /home/testuser.luks crypt_home_testuser
    sudo mkfs.ext4 /dev/mapper/crypt_home_testuser

    sudo chown testuser:testuser /home/testuser.luks
  6. Datei­sys­tem moun­ten, Zei­ger­da­tei anle­gen, wie­der unmoun­ten und schlie­ßen
    sudo mount /dev/mapper/crypt_home_testuser /home/testuser
    sudo touch /home/testuser/___encrypted___
    sudo umount /home/testuser
    sudo cryptsetup close crypt_home_testuser

  7. Auto­ma­ti­sches moun­ten mit pam_mount
    In /etc/security/pam_mount.conf.xml am Ende des <pam_mount>-Abschnit­tes fol­gen­den block ein­fü­gen:
    <volume user="testuser" path="/home/testuser-luks" mountpoint="/home/testuser" options="defaults" />

Zei­ger­da­tei­en

Die Zei­ger­da­tei­en sor­gen dafür, dass man direkt sieht, ob das rich­ti­ge Ver­zeich­nis gemoun­tet ist. Als Nut­zer „tes­tuser” sieht man die Zei­ger­da­tei für das ver­schlüs­sel­te Verzeichnis:

$ ls ~
lost+found  ___encrypted___
$ 

Jeder ande­re Nut­zer sieht nur den unver­schlüs­sel­ten (lee­ren) Mount-Point:

$ ls /home/testuser
___unencrypted___
$

Unmoun­ten beim Logout

Klei­ner Wer­muts­trop­fen: nach dem Aus­log­gen aus einem gra­phi­schen Desk­top wie z.B. Gno­me sor­gen eini­ge wei­ter­lau­fen­de dae­mons dafür, dass das Nut­zer­ver­zeich­nis unver­schlüs­selt gemoun­tet bleibt. Bei mir hat es gehol­fen, in der pam_­mount-Kon­fi­gu­ra­ti­ons­da­tei die Zeile

<logout wait="0" hup="no" term="no" kill="no" />

zu ändern in 

<logout wait="100" hup="yes" term="yes" kill="yes" />

Vor­aus­set­zung dafür ist, dass das Tool ofl (list open files) aus dem Paket hxtools instal­liert ist. Dann prüft pam_mount beim aus­log­gen auf offe­ne Datei­en, war­tet ggfs. für die kon­fi­gu­rier­te Zeit (ms) und been­det dann nöti­gen­falls die jewei­li­gen blo­ckie­ren­den Pro­zes­se mit den ent­spre­chen­den Signalen.

Bestehen­des Ver­zeich­nis verschlüsseln

  1. Nut­zer aus­log­gen
    z.B. mit ofl prü­fen, dass kei­ne Datei­en sei­nes /home-Ver­zeich­nis­ses offen sind
    ofl /home/existinguser
  2. /home-Ver­zeich­nis des Nut­zers ver­schie­ben
    sudo mv /home/existinguser /home/existinguser.tmp
  3. Die Pro­ze­dur „Anle­gen von Nut­zer und Ver­zeich­nis” durch­füh­ren
    aber das Anle­gen des Nut­zers überspringen
  4. Daten aus dem .tmp-Ver­zeich­nis in das neue Ver­zeich­nis kopie­ren
    (wäh­rend das neue, ver­schlüs­sel­te Nut­zer­ver­zeich­nis noch gemoun­tet ist)
    sudo rsync -aAXv /home/existinguser.tmp/ /home/existinguser/
    sudo chown -R existinguser:existinguser /home/existinguser
  5. Erfolg prü­fen und auf­räu­men
    Als existinguser anmel­den und anhand der Zei­ger­da­tei prü­fen, dass das ver­schlüs­sel­te Ver­zeich­nis gemoun­tet ist und alle Datei­en voll­stän­dig vor­han­den sind. Nach­dem man sich noch­mals ver­si­chert hat, dass ein aktu­el­les Back­up vor­han­den ist, kann das unver­schlüs­sel­te Ver­zeich­nis /home/existinguser.tmp ent­fernt werden.

Nut­zer­ver­zeich­nis vergrößern

  1. Das Ver­zeich­nis darf nicht aktiv oder gemoun­tet sein
  2. Datei­sys­tem auf aus­rei­chend frei­en Spei­cher prü­fen (z.B. mit df -h)
  3. Mit trun­ca­te die ver­schlüs­sel­te Datei ver­grö­ßern (hier um wei­te­re 5GB)
    sudo truncate -s +5G /home/testuser.luks
  4. LUKS und Datei­sys­tem an die neue Grö­ße anpas­sen las­sen
    sudo cryptsetup open /home/testuser.luks crypt_home_testuser
    sudo cryptsetup resize crypt_home_testuser
    sudo resize2fs /dev/mapper/crypt_home_testuser
    sudo cryptsetup close crypt_home_testuser

Quel­le: https://​your​de​vice​.ch/​l​i​n​u​x​-​h​o​m​e​-​o​r​d​n​e​r​-​m​i​t​-​l​u​k​s​-​v​e​r​s​c​h​l​u​e​s​s​e​ln/

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

elf + 8 =