paperless-ngx: Verschlüsselung at rest einrichten

Seit Version 0.90 gibt es in paperless-ngx keine eingebaute Verschlüsselungsfunktion mehr. Das wurde damit begründet, dass diese Verschlüsselung zwar davor schützt, dass z. B. durch File-Carving wiederherzustellende Datenteile geschützt würden, jedoch die Verschlüsselung nicht vor Diebstahl des Mediums schütze, da die Verschlüsselungsschlüssel weiterhin lesbar vorlägen.

Schritt 1: Abhängigkeiten installieren

sudo apt-get install -y cryptsetup

Schritt 2: Containerdatei erstellen

Hier 20 GB in 40 Schritten damit es auf kleineren Servern mit wenig RAM klappt:

dd if=/dev/zero of=/encrypted-container.img bs=512M count=40

Schritt 3: Containerdatei für LUKS formatieren

sudo cryptsetup luksFormat /encrypted-container.img

Schritt 4: Container öffnen

sudo cryptsetup luksOpen /encrypted-container.img encrypted_dev

Schritt 5: Dateisystem auf Container erstellen

sudo mkfs.ext4 /dev/mapper/encrypted_dev

Schritt 6: Temporäres Verzeichnis anlegen und Dateisystem mounten

mkdir /home2
mount /dev/mapper/encrypted_dev /home2

Schritt 7: Alle Dienste, welche auf /home zugreifen stoppen und prüfen

docker compose -f /home/user/paperless-ngx/docker-compose.yml -f /home/user/paperless-ngx/docker-compose.override.yml down
lsof +D /home

Schritt 8: Dateien aus /home nach /home2 kopieren

mv /home/* /home2/

Schritt 9: /home unmounten, /home2 unmounten

umount /home
umount /home2

Schritt 10: Verschlüsseltes Volume auf /home mounten

mount /dev/mapper/encrypted_dev /home

Schritt 11: Keyfile zum automatischen Unlock generieren

dd if=/dev/urandom of=/root/secure.key bs=4096 count=1
chmod 600 /root/secure.key

Schritt 12: Keyfile dem LUKS-Container hinzufügen

cryptsetup luksAddKey /encrypted-container.img /root/secure.key

Schritt 13: Änderungen persistieren

echo "/dev/disk/by-uuid/$(blkid -s UUID -o value /dev/mapper/encrypted_dev) /home ext4 defaults 0 2" >>/etc/fstab
echo "encrypted_dev /encrypted-container.img /root/secure.key luks,loop" >>/etc/crypttab

Schritt 14: Docker-Compose Stack starten

docker compose -f /home/user/paperless-ngx/docker-compose.yml -f /home/user/paperless-ngx/docker-compose.override.yml up -d

Schritt 15: Neustart testen

reboot

Anschließend werden die mit unserem paperless-ngx im Zusammenhang stehenden Daten verschlüsselt gespeichert. Durchaus gibt es noch weitere Wege dies zu bewerkstelligen, beispielsweise die Vollverschlüsselung, welche jedoch weit komplizierter in der Einrichtung ist.

Schreibe einen Kommentar

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