Verschlüsseltes Homeverzeichnis

Aus Fedorawiki.de

Wechseln zu: Navigation, Suche


Dieser Artikel ist Teil der HOWTO Sammlung

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.

[root]# yum install cryptsetup-luks pam_mount

Partition vorbereiten

Wichtig Wichtig: Die Partition, die ihr hier wählt, wird überschrieben! Macht ein Backup wenn notwendig!

Wir verschlüsseln die Partition mit

[root]# cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/sda3

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

[root]# cryptsetup luksOpen /dev/sda3 crypt_sda3

Sie wird mit einem EXT3 Dateisystem formatiert

[root]# mkfs.ext3 /dev/mapper/crypt_sda3

und gemounted

[root]# mount /dev/mapper/crypt_sda3 /home/

Nun kann man Benutzer anlegen. Deren Homeverzeichnis liegt dann in der verschlüsselten Partition. Danach unmounten wir wieder /home:

[root]# umount /home

und schließen die verschlüsselte Partition.

[root]# cryptsetup luksClose crypt_sda3

PAM konfigurieren

Anmerkung Anmerkung: Die folgende Vorgehensweise funktioniert nur, wenn das Passwort der verschlüsselten Partition mit dem Passwort des Benutzers übereinstimmt. Falls mehrere Benutzer vorhanden sind, gibt es bei LUKS die Möglichkeit, bis zu sieben Schlüssel für eine verschlüsselte Partition zu benutzen.


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:

[root]# echo -e "volume users crypt - /dev/sda3 /home - - -" >> /etc/security/pam_mount.conf


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 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:

[root]# echo -e "CLOSE_SESSIONS yes" >> /etc/login.defs

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

Persönliche Werkzeuge