Verschlüsseltes Homeverzeichnis
Aus Fedorawiki.de
Dieser Artikel beschäftigt sich mit der Verschlüsselung einer Partition, die als Home-Verzeichnis genutzt wird und bei der Anmeldung automatisch geöffnet und gemounted wird. Jeder, der einen Rechner besitzt, auf dem sich Daten befinden, die er nicht in fremde Hände geben will, bleibt zur Absicherung gegen Diebstahl nur die Verschlüsselung. Kein Rechtsanwalt, kein Arzt, kein Fotograf oder sonstige Berufsstände sollten den Aspekt des "Datenklau" außer Acht lassen.
Durch die Verschlüsselung lassen wir dem Dieb das Medium. Die Daten kriegt er nicht.
Inhaltsverzeichnis |
Voraussetzung
Diese Vorgehensweise sollte auf allen Systeme funktionieren, die die Pakete cryptsetup-luks und pam_mount bereitstellen.
Vorgehensweise
Die folgenden Befehle werden als root ausgeführt. Falls ihr in der /etc/fstab ein /home gemounted habt, dann nehmt den Eintrag raus und bindet /home aus. Dafür darf man dabei natürlich nicht als User angemeldet sein. In diesem Beispiel nehme ich die Partition sda3 als zukünftige Partition für /home.
Notwendige Pakete installieren
Mit cryptsetup-luks wird die verschlüsselte Partition erstellt. pam_mount wird später dazu benutzt, diese beim Login gleich aufzuschließen.
Partition vorbereiten
| | Wichtig: Die Partition, die ihr hier wählt, wird überschrieben! Macht ein Backup wenn notwendig! |
Wir verschlüsseln die Partition mit
Es wird nach einer Passphrase gefragt. Wenn man hier das Passwort des Nutzers eingibt, muss man sich später bei der Anmeldung nur mit diesem einen Passwort anmelden.
Nun wird die verschlüsselte Partition geöffnet
Sie wird mit einem EXT3 Dateisystem formatiert
und gemounted
Nun kann man Benutzer anlegen. Deren Homeverzeichnis liegt dann in der verschlüsselten Partition. Danach unmounten wir wieder /home:
und schließen die verschlüsselte Partition.
PAM konfigurieren
Damit bei der Anmeldung des Benutzer die Partition mit der Passphrase geöffnet wird, müssen zwei Dateien angepasst werden. Die Datei /etc/security/pam_mount.conf.xml wird um folgende Zeilen erweitert. Dadurch wird für jeden Benutzer in der Gruppe "users" versucht, die Platte bei der Anmeldung zu öffnen und zu mounten.
<cryptmount>mount.crypt "%(ifnempty=\"-o\" OPTIONS)" %(OPTIONS)
%(VOLUME) %(MNTPT)</cryptmount>
<cryptumount>umount.crypt %(MNTPT)</cryptumount>
<volume sgrp="users" mountpoint="/home" path="/dev/sda3" fstype="crypt" />
Das XML-Format wurde mit Fedora 9 eingeführt. Bis Fedora 8 wurde die Datei /etc/security/pam_mount.conf verwendet, die wie folgt erweitert wurde:
PAM für GDM
Der Datei des Login-Manager bei GNOME /etc/pam.d/gdm-password sieht bei mir dann so aus:
auth optional pam_mount.so auth [success=done ignore=ignore default=bad] pam_selinux_permit.so auth substack password-auth use_first_pass auth required pam_succeed_if.so user != root quiet auth optional pam_gnome_keyring.so
account required pam_nologin.so account include password-auth
password include password-auth
session required pam_selinux.so close session optional pam_mount.so session required pam_loginuid.so session optional pam_console.so session required pam_selinux.so open session optional pam_keyinit.so force revoke session required pam_namespace.so session optional pam_gnome_keyring.so auto_start session include password-auth
Bis Fedora 10 wurde die Datei /etc/pam.d/gdm konfiguriert:
#%PAM-1.0 auth optional pam_mount.so auth [success=done ignore=ignore default=bad] pam_selinux_permit.so auth required pam_succeed_if.so user != root quiet auth required pam_env.so auth substack system-auth use_first_pass auth optional pam_gnome_keyring.so account required pam_nologin.so account include system-auth password include system-auth session required pam_selinux.so close session optional pam_mount.so session required pam_loginuid.so session optional pam_console.so session required pam_selinux.so open session optional pam_keyinit.so force revoke session required pam_namespace.so session optional pam_gnome_keyring.so auto_start session include system-auth
Bis Fedora 8 sah die Datei wie folgt aus. Das Schema ist aber immer das gleiche:
#%PAM-1.0 auth optional pam_mount.so auth required pam_env.so auth include system-auth use_first_pass account required pam_nologin.so account include system-auth password include system-auth session optional pam_mount.so session optional pam_keyinit.so force revoke session include system-auth session required pam_loginuid.so session optional pam_console.so
Wichtig dabei ist die Reihenfolge!
auth optional pam_mount.so
ist der erste "auth" Eintrag. Nach dem letzten "auth" folgt ein "use_first_pass". Der erste "session" Eintrag ist
session optional pam_mount.so
Dadurch wird erreicht, dass das Passwort, das der Benutzer bei der Anmeldung eingibt, an das Cryptmodul weitergegeben wird.
| | Achtung: Die folgenden Abschnitte sind möglicherweise nicht mehr aktuell. Unbedingt diesen [Forenbeitrag] lesen. Die Konfigurationen für KDM, Login und SSH konnte ich nicht testen. joka |
PAM für die Konsole
Der Datei /etc/pam.d/login für die Anmeldung an der Konsle sieht bei mir dann so aus:
#%PAM-1.0 auth optional pam_mount.so auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so auth include system-auth use_first_pass account required pam_nologin.so account include system-auth password include system-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session optional pam_mount.so session include system-auth session required pam_loginuid.so session optional pam_console.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open session optional pam_keyinit.so force revoke session optional pam_ck_connector.so
PAM für sshd
Der Datei /etc/pam.d/sshd für die Anmeldung an über ssh sieht bei mir dann so aus:
#%PAM-1.0 auth optional pam_mount.so auth include system-auth use_first_pass account required pam_nologin.so account include system-auth password include system-auth session optional pam_keyinit.so force revoke session include system-auth session required pam_loginuid.so session optional pam_mount.so
Schließen der Partition bei Abmeldung
Das ist ein heikles Thema. Prinzipiell genügt es die /etc/login.defs um eine Zeile zu erweitern:
Leider ist das aber in der Praxis so, das die Partition nicht ausgebunden und geschlossen werden kann, da noch diverse Prozesse auf Dateien in /home/username zugreifen. beagle ist nur einer der Kandidaten.
Es gibt aber die Möglichkeit diese Prozesse zu beenden. Das ist aber nicht immer gewünscht. Ich denke dabei z.B. an virtuelle Maschinen, die auch nach der Abmeldung weiterlaufen sollen, aber eben im Homeverzeichnis liegen. Trotzdem werde ich beschreiben, wie es geht. Ob Ihr es einsetzt, bleibt Euch überlassen.
Dazu müssen wir die Datei /sbin/umount.crypt bearbeiten. Hier die relevanten Ausschnitte:
USAGE="dir" # added FUSER=/sbin/fuser
und
REALDEVICE=` "$CRYPTSETUP" status "$DMDEVICE" | sed -n '/device/s/[ ]*device:[ ]*//p'`; #added "$FUSER" -km "$1"
Siehe auch
Links

