Zum Inhalt springen

GoCryptFS/Anwendung: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „z. B. “ durch „beispielsweise “
K Textersetzung - „ “ durch „ “
 
Zeile 51: Zeile 51:
<syntaxhighlight lang="bash" line='line' highlight="9,29">
<syntaxhighlight lang="bash" line='line' highlight="9,29">
  #%PAM-1.0
  #%PAM-1.0
  auth     required pam_sepermit.so
  auth   required pam_sepermit.so
  auth       substack     password-auth
  auth   substack   password-auth
  auth       include     postlogin
  auth   include   postlogin
   
   
  # Used with polkit to reauthorize users in remote sessions
  # Used with polkit to reauthorize users in remote sessions
  -auth     optional     pam_reauthorize.so prepare
  -auth   optional   pam_reauthorize.so prepare
   
   
  auth optional pam_mount.so
  auth optional pam_mount.so
   
   
  account   required     pam_nologin.so
  account required   pam_nologin.so
  account   include     password-auth
  account include   password-auth
  password  include      password-auth
  password include   password-auth
 
  # pam_selinux.so close should be the first session rule
  # pam_selinux.so close should be the first session rule
  session   required     pam_selinux.so close
  session required   pam_selinux.so close
  session   required     pam_loginuid.so
  session required   pam_loginuid.so
   
   
  # pam_selinux.so open should only be followed by sessions to be executed in the user context
  # 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_selinux.so open env_params
  session   required     pam_namespace.so
  session required   pam_namespace.so
  session   optional     pam_keyinit.so force revoke
  session optional   pam_keyinit.so force revoke
  session   include     password-auth
  session include   password-auth
  session   include     postlogin
  session include   postlogin
   
   
  # Used with polkit to reauthorize users in remote sessions
  # Used with polkit to reauthorize users in remote sessions
  -session  optional    pam_reauthorize.so prepare
  -session optional   pam_reauthorize.so prepare
   
   
  session optional pam_mount.so
  session optional pam_mount.so
Zeile 83: Zeile 83:
'''/etc/pam.d/sddm'''
'''/etc/pam.d/sddm'''
<syntaxhighlight lang="bash" line='line' highlight="8,28">
<syntaxhighlight lang="bash" line='line' highlight="8,28">
  auth       [success=done ignore=ignore default=bad] pam_selinux_permit.so
  auth   [success=done ignore=ignore default=bad] pam_selinux_permit.so
  auth       substack     password-auth
  auth   substack   password-auth
  -auth       optional     pam_gnome_keyring.so
  -auth   optional   pam_gnome_keyring.so
  -auth       optional     pam_kwallet5.so
  -auth   optional   pam_kwallet5.so
  -auth       optional     pam_kwallet.so
  -auth   optional   pam_kwallet.so
  auth       include       postlogin
  auth   include   postlogin
   
   
  auth       optional     pam_mount.so
  auth   optional   pam_mount.so
   
   
  account     required     pam_nologin.so
  account   required   pam_nologin.so
  account     include       password-auth
  account   include   password-auth
   
   
  password    include      password-auth
  password include   password-auth
   
   
  session     required     pam_selinux.so close
  session   required   pam_selinux.so close
  session     required     pam_loginuid.so
  session   required   pam_loginuid.so
  session     optional     pam_console.so
  session   optional   pam_console.so
  -session   optional     pam_ck_connector.so
  -session optional   pam_ck_connector.so
  session     required     pam_selinux.so open
  session   required   pam_selinux.so open
  session     optional     pam_keyinit.so force revoke
  session   optional   pam_keyinit.so force revoke
  session     required     pam_namespace.so
  session   required   pam_namespace.so
  session     include       password-auth
  session   include   password-auth
  -session   optional     pam_gnome_keyring.so auto_start
  -session optional   pam_gnome_keyring.so auto_start
  -session   optional     pam_kwallet5.so auto_start
  -session optional   pam_kwallet5.so auto_start
  -session   optional     pam_kwallet.so auto_start
  -session optional   pam_kwallet.so auto_start
  session     include       postlogin
  session   include   postlogin
   
   
  session   optional     pam_mount.so
  session optional   pam_mount.so
</syntaxhighlight>
</syntaxhighlight>


Zeile 139: Zeile 139:
==== Passwort ändern ====
==== Passwort ändern ====
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
  gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -passwd ~/CIPHERDIR
  gocryptfs -config ~/.config/gocryptfs/KONFDATEI.conf -passwd ~/CIPHERDIR  
</syntaxhighlight>
</syntaxhighlight>



Aktuelle Version vom 14. Juni 2026, 00:48 Uhr

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

  1. Copy the gocryptfs binary into /usr/local/bin.
# sudo cp ... 
  1. 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:

  1. As the last element in "auth" so it gets the password.
  2. 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, beispielsweise 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, beispielsweise ü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