eCryptfs ist ein POSIX-kompatibles gestapeltes kryptografisches Dateisystem der Enterprise-Klasse für Linux. Sie können es verwenden, um Partitionen und auch Verzeichnisse zu verschlüsseln, die keine eigene Partition verwenden, unabhängig vom zugrunde liegenden Dateisystem, Partitionstyp usw. Dieses Tutorial zeigt, wie Sie eCryptfs verwenden, um ein Verzeichnis unter Debian Squeeze zu verschlüsseln.
Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!
1 Vorbemerkung
In diesem Tutorial werde ich mein Home-Verzeichnis /home/falko/ verschlüsseln, das sich auf der Partition / befindet (d. h. /home/falko/ ist ein gewöhnliches Verzeichnis und verwendet keine eigene Partition).
2 Installation von eCryptfs
eCryptfs kann einfach wie folgt installiert werden:
apt-get install ecryptfs-utils
3 Ein Verzeichnis verschlüsseln
Ich werde jetzt mein Home-Verzeichnis /home/falko/ verschlüsseln. Da es bereits (unverschlüsselte) Dateien in diesem Verzeichnis gibt, muss ich ein Backup davon machen, damit ich sie später im dann verschlüsselten Verzeichnis /home/falko/ wiederherstellen kann (andernfalls kann auf diese Dateien nicht zugegriffen/gelesen werden, während das Verzeichnis ist verschlüsselt):
cp -pfr /home/falko/ /tmp/
Ich kann nun das Verzeichnis /home/falko/ verschlüsseln, indem ich es mit dem Dateisystemtyp ecryptfs:
einhängemount -t ecryptfs /home/falko /home/falko
Wenn Sie dies zum ersten Mal tun, müssen Sie einige Fragen beantworten:
[email protected]:~# mount -t ecryptfs /home/falko /home/falko
Passphrase: <-- some_passphrase
Select cipher:
1) aes: blocksize = 16; Mindestschlüsselgröße = 16; max. Schlüsselgröße = 32 (nicht geladen)
2) Blowfish: Blockgröße = 16; Mindestschlüsselgröße = 16; max keysize = 56 (nicht geladen)
3) des3_ede: blocksize = 8; Mindestschlüsselgröße = 24; max keysize = 24 (nicht geladen)
4) twofish: blocksize = 16; Mindestschlüsselgröße = 16; max keysize = 32 (nicht geladen)
5) cast6: blocksize = 16; Mindestschlüsselgröße = 16; max keysize = 32 (nicht geladen)
6) cast5: blocksize = 8; Mindestschlüsselgröße = 5; max keysize = 16 (nicht geladen)
Auswahl [aes]: <-- ENTER
Select key bytes:
16
2) 32
3) 24
Auswahl [16]: <-- ENTER
Klartext-Passthrough aktivieren (j/n) [n]: <-- ENTER
Dateinamenverschlüsselung aktivieren (j/n) [n]: <-- EINGABE
Versuch, mit den folgenden Optionen zu mounten:
ecryptfs_unlink_sigs
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=bd28c38da9fc938b
WARNUNG: Basierend auf der Inhalte von [/root/.ecryptfs/sig-cache.txt],
es sieht so aus, als während Sie noch nie mit diesem Schlüssel gemountet haben
. Dies könnte bedeuten, dass Sie Ihre
Passphrase falsch eingegeben haben.
Möchten Sie mit dem Mounten fortfahren (ja/nein)? : <-- ja
Möchten Sie sig [bd28c38da9fc938b] an
[/root/.ecryptfs/sig-cache.txt] anhängen
um diese Warnung in Zukunft zu vermeiden ( ja Nein)? : <-- ja
Erfolgreich neue Sig an Benutzer-Sig-Cache-Datei angehängt
eCryptfs gemountet
[email protected]:~#
Sehen Sie sich die Ausgabe von
aneinhängen
und Sie sollten sehen, dass /home/falko/ jetzt verschlüsselt ist:
[email protected]:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid ,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on / dev tippe tmpfs (rw,mode=0755)
tmpfs auf /dev/shm tippe tmpfs (rw,nosuid,nodev)
devpts auf /dev/pts tippe devpts (rw,noexec,nosuid,gid=5,mode=620)
/home/falko auf /home/falko geben Sie ecryptfs ein (rw,ecryptfs_sig=bd28c38da9fc938b,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs)
[email protected]:~#
Stellen wir unser Backup in das nun verschlüsselte Verzeichnis /home/falko/ wieder her und löschen das Backup anschließend:
cp -pfr /tmp/falko/ /home/
rm -fr /tmp/falko/
Kopieren wir zu Testzwecken eine andere Datei, z. /etc/hosts, nach /home/falko/ um zu prüfen, ob es wirklich verschlüsselt wird:
cp /etc/hosts /home/falko
Während /home/falko/ mit dem Dateisystemtyp ecryptfs gemountet wird, sollte es möglich sein, den Inhalt von /home/falko/hosts zu lesen:
Katze /home/falko/hosts
Unmounten Sie nun /home/falko/...
umount /home/falko
... und versuchen Sie erneut, /home/falko/hosts zu lesen, und Sie sollten etwas kryptisches Zeug erhalten:
Katze /home/falko/hosts
?æËÊÀû5)í}Ó`§wʽ.ÂçµÔyiIezz°Ñd¦R,`Ëi,0ñ*úÐ%^-']YÑj÷#6 ÷¨Y-]«é²ùô |
4 Wie man eine verschlüsselte Partition beim Booten automatisch einbindet
Natürlich wollen wir /home/falko/ nicht jedes Mal manuell mounten - es wäre schöner, wenn es beim Booten automatisch gemountet werden könnte. Dazu benötigen wir eine Passphrase-Datei, und aus Sicherheitsgründen möchte ich, dass sich diese Passphrase-Datei auf einem USB-Stick befindet.
Stecken Sie einen USB-Stick ein und führen Sie ihn aus
fdisk -l
um den Gerätenamen und den Dateisystemtyp herauszufinden:
[email protected]:~# fdisk -l
Festplatte /dev/sda: 32,2 GB, 32212254720 Byte
255 Köpfe, 63 Sektoren/Spur, 3916 Zylinder
Einheiten = Zylinder von 16065 * 512 = 8225280 Byte
Sektorgröße (logisch/physisch): 512 Byte / 512 Byte
E/A-Größe (minimal/optimal): 512 Byte / 512 Byte
Festplattenkennung:0x00035e35
Geräte -Start -End -Endblöcke ID -System
/dev /sda1*1 3793 30461952 83 Linux
/dev /sda2 3793 3917 992257 5 Extenended
/dev/sda5 3793 3917 992256 82 Linux-Swap / Solaris
Festplatte /dev/sdb: 8086 MB, 8086617600 Byte
255 Köpfe, 63 Sektoren/Spur, 98 Einheiten = Zylinder von 16065 * 512 = 8225280 Byte
Sektorgröße (logisch/physisch): 512 Byte / 512 Byte
E/A-Größe (minimal/optimal): 512 Byte / 512 Byte
Festplatte Kennung: 0x000e439f
Gerätestart Start Ende Blöcke I d System
/dev/sdb1 1 983 7895916 b W95 FAT32
[email protected]:~#
In meinem Fall lautet der Gerätename /dev/sdb1 und es verwendet ein FAT32-Dateisystem.
Lassen Sie uns den USB-Stick unter /mnt/usb:
mountenmkdir /mnt/usb
mount /dev/sdb1 /mnt/usb
Sehen Sie sich die Ausgabe von
aneinhängen
... und Sie sollten sehen, dass es mit dem Dateisystemtyp vfat (FAT32) gemountet wurde - wir werden diese Informationen später für unsere /etc/fstab-Datei benötigen:
[email protected]:~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid ,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on / dev tippe tmpfs (rw,mode=0755)
tmpfs auf /dev/shm tippe tmpfs (rw,nosuid,nodev)
devpts auf /dev/pts tippe devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 on /mnt/usb type vfat (rw)
[email protected]:~#
Werfen Sie nun einen Blick auf den Inhalt von /root/.ecryptfs/sig-cache.txt:
cat /root/.ecryptfs/sig-cache.txt
bd28c38da9fc938b |
Diese Signatur benötigen wir für die Datei /root/.ecryptfsrc, die wir wie folgt erstellen:
vi /root/.ecryptfsrc
Bitte stellen Sie sicher, dass Sie die Signatur aus der Datei /root/.ecryptfs/sig-cache.txt in der Zeile ecryptfs_sig verwenden:
key=passphrase:passphrase_passwd_file=/mnt/usb/passwd_file.txtecryptfs_sig=bd28c38da9fc938becryptfs_cipher=aesecryptfs_key_bytes=16ecryptfs_passthrough=necryptfs_enable_filename_crypto=n |
Jetzt erstellen wir die Passphrase-Datei auf unserem USB-Stick:
vi /mnt/usb/passwd_file.txt
passphrase_passwd=some_passphrase |
Stellen Sie sicher, dass Sie die richtige Passphrase verwenden, d. h. die Passphrase, die Sie verwenden würden, wenn Sie das Verzeichnis manuell einhängen würden.
Als nächstes öffnen Sie /etc/fstab...
vi /etc/fstab
... und fügen Sie die folgenden zwei Zeilen hinzu (stellen Sie sicher, dass Sie den richtigen Dateisystemtyp für Ihren USB-Stick verwenden - in meinem Fall vfat):
[...]/dev/sdb1 /mnt/usb vfat ro 0 0/home/falko /home/falko ecryptfs defaults 0 0 |
(Es ist wichtig, dass die Zeile für den USB-Schlüssel vor der Zeile für die verschlüsselte Partition steht, da der USB-Schlüssel gemountet werden muss, bevor die verschlüsselte Partition gemountet werden kann!)
Starten Sie dann das System neu:
Neustart
Wenn alles gut geht, sollte Ihre verschlüsselte Partition nach dem Neustart automatisch gemountet werden. Es ist jedoch möglich, dass Ihr System Ihren USB-Stick während des Bootens nicht mounten kann, was bedeutet, dass Ihre verschlüsselte Partition auch nicht gemountet werden kann. Bearbeiten Sie in diesem Fall /etc/rc.local (dieses Skript wird am Ende des Bootvorgangs ausgeführt)...
vi /etc/rc.local
... und fügen Sie die Zeile /bin/mount -a vor der Exit-0-Zeile hinzu:
#!/bin/sh -e## rc.local## Dieses Skript wird am Ende jedes Multiuser-Runlevels ausgeführt.# Stellen Sie sicher, dass die Das Skript "beendet 0" bei Erfolg oder einen anderen# Wert bei einem Fehler.## Um dieses Skript zu aktivieren oder zu deaktivieren, ändern Sie einfach die Ausführungsbits#.## Standardmäßig tut dieses Skript nichts./bin/mount -aexit 0 |
Dadurch werden alle Partitionen (einschließlich Ihres USB-Sticks und der verschlüsselten Partition) am Ende des Startvorgangs (erneut) gemountet.
5 Links
- eCryptfs:https://launchpad.net/ecryptfs
- Debian:http://www.debian.org/