GoCryptFS/Anwendung
Initialisierung
Erstellung der Konfigurationsdatei und der Datei gocryptfs.diriv (verschlüsselte Verzeichnisstruktur)
gocryptfs -init -config ~/.config/gocryptfs/KONFDATEI.conf ~/CIPHERDIR
Verzeichnis einhängen
gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf ~/CIPHERDIR ~/MOUNTPOINT
Verzeichnis nutzen
Verzeichnis aushängen
fusermount -u ~/MOUNTPOINT
Home-Verzeichnis verschlüsseln
Konfiguration
$ gocryptfs -init|-passwd|-info [OPTIONS] CIPHERDIR
Mount
$ gocryptfs [OPTIONS] CIPHERDIR MOUNTPOINT
Verzeichnis verschlüsseln
Verzeichnisse anlegen
$ mkdir ~/CIPHERDIR ~/MOUNTPOINT ~/.config/gocryptfs
Mount beim Login
Installation
# apt install libpam-mount
Konfiguration
- Copy the gocryptfs binary into /usr/local/bin.
# sudo cp ...
- Create a gocryptfs filesystem:
$ mkdir /home/testuser/cipher /home/testuser/plain $ gocryptfs -init /home/testuser/cipher
PAM konfigurieren
An example /etc/pam.d/sshd on Fedora 24 and an example /etc/pam.d/sddm on Fedora 31 Workstation is shown below.
Basically, pam_mount must be called two times:
- As the last element in "auth" so it gets the password.
- As the last element in "session", where it performs the actual mount.
/etc/pam.d/sshd
#%PAM-1.0
auth required pam_sepermit.so
auth substack password-auth
auth include postlogin
# Used with polkit to reauthorize users in remote sessions
-auth optional pam_reauthorize.so prepare
auth optional pam_mount.so
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include password-auth
session include postlogin
# Used with polkit to reauthorize users in remote sessions
-session optional pam_reauthorize.so prepare
session optional pam_mount.so
/etc/pam.d/sddm
auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
auth substack password-auth
-auth optional pam_gnome_keyring.so
-auth optional pam_kwallet5.so
-auth optional pam_kwallet.so
auth include postlogin
auth optional pam_mount.so
account required pam_nologin.so
account include password-auth
password include password-auth
session required pam_selinux.so close
session required pam_loginuid.so
session optional pam_console.so
-session optional pam_ck_connector.so
session required pam_selinux.so open
session optional pam_keyinit.so force revoke
session required pam_namespace.so
session include password-auth
-session optional pam_gnome_keyring.so auto_start
-session optional pam_kwallet5.so auto_start
-session optional pam_kwallet.so auto_start
session include postlogin
session optional pam_mount.so
Folgendes vor dem schließenden Tag </pam_mount> hinzufügen und testuser durch den eigenen Benutzernamen ersetzen.
/etc/security/pam_mount.conf.xml
<volume user="testuser" fstype="fuse" options="nodev,nosuid,quiet"
path="/usr/local/bin/gocryptfs#/home/%(USER)/cipher" mountpoint="/home/%(USER)/plain" />
Das gesamte Home-Verzeichnis verschlüsseln
Folgendes vor dem schließenden Tag </pam_mount> hinzufügen und testuser durch den eigenen Benutzernamen ersetzen.
/etc/security/pam_mount.conf.xml
<volume user="testuser" fstype="fuse" options="nodev,nosuid,quiet,nonempty,allow_other"
path="/usr/local/bin/gocryptfs#/home/%(USER).cipher" mountpoint="/home/%(USER)" />
Passwörter
Zum Entschlüsseln der Dateien ist die GoCryptFS-Konfigurationsdatei und das Passwort erforderlich.
- Ist ein Angreifer im Besitz der GoCryptFS-Konfigurationsdatei, könnte er, z. B. durch Ausprobieren, das Passwort herausfinden und die Dateien entschlüsseln.
- Ohne Angabe der Option -config speichert GoCryptFS die Konfigurationsdatei unter dem Namen gocryptfs.conf in das Verzeichnis mit den verschlüsselten Dateien.
- Werden die verschlüsselten Dateien in einer Cloud oder auf Datenträgern gespeichert, die einem Angreifer in die Hände fallen können, ist es ratsam, die Konfigurationsdatei getrennt von den verschlüsselten Dateien zu speichern.
Passwort ändern
gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -passwd ~/CIPHERDIR
- Gemeinsam mit der Option -masterkey kann ein neues Passwort vergeben werden, wenn man das Passwort vergessen hat, aber der Masterkey vorliegt.
- Weitere Informationen enthält die Manpage zu GoCryptFS.
Passwort oder Konfigurationsdatei verloren
Liegt der Masterkey aus der Initialisierung noch vor, können die verschlüsselten Daten mit dessen Eingabe im Terminal geöffnet werden, wobei eine eventuell vorhandene Konfigurationsdatei ignoriert wird.
gocryptfs -masterkey=stdin
Mit der Option -masterkey <Masterkey> können die verschlüsselten Daten, z. B. über ein Skript, ohne Konfigurationsdatei geöffnet werden.
- Hierbei kann der Masterkey mit ps -auxwww aus dem Hauptspeicher ausgelesen werden
- Dieses Risiko liegt bei der Option -masterkey=stdin nicht vor.
Verzeichnis zum Speichern von GoCryptFS-Konfigurationsdateien erstellen
mkdir ~/.config/gocryptfs/
Verzeichnisse CIPHERDIR und KLARTEX anlegen
mkdir ~/CIPHERDIR ~/MOUNTPOINT
GocryptFS initialisieren
Ohne die Option -config wird die Konfigurationsdatei als ~/CIPHERDIR/gocryptfs.conf gespeichert.
gocryptfs -init -config ~/.config/gocryptfs/KONFDATEI.conf -reverse ~/CIPHERDIR
Verzeichnis CIPHERDIR einhängen
Im Reverse Mode können Dateien mit den Optionen -exclude, -exclude-wildcard und -exclude-from von der verschlüsselten Ansicht ausgeschlossen werden.
- Soll rsync für die Datensicherung verwendet werden, sollte, um Fehler und Warnmeldungen zu vermeiden, der Ausschluss beim Einhängen mit GoCryptFS erfolgen.
gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -reverse ~/MOUNTPOINT ~/CIPHERDIR
Datensicherung durchführen
cp -a ~/CIPHERDIR ~/BACKUP
CIPHERDIR aushängen
fusermount -u ~/CIPHERDIR