GNU/Linux >> LINUX-Kenntnisse >  >> Debian

So verschlüsseln Sie Verzeichnisse/Partitionen mit eCryptfs unter Debian 8 (Jessie)

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 Jessie zu verschlüsseln.

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 -y install ecryptfs-utils

3 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änge
mount -t ecryptfs /home/falko /home/falko

Wenn Sie dies zum ersten Mal tun, müssen Sie einige Fragen beantworten:

[email protected]:/tmp# mount -t ecryptfs /home/falko /home/falko
Select key type to use for newly created files:
1) tspi
2) passphrase
Selection: <-- 2
Passphrase: <-- Enter a secure password
Select cipher:
1) aes: blocksize = 16; min keysize = 16; max keysize = 32
2) blowfish: blocksize = 8; min keysize = 16; max keysize = 56
3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24
4) twofish: blocksize = 16; min keysize = 16; max keysize = 32
5) cast6: blocksize = 16; min keysize = 16; max keysize = 32
6) cast5: blocksize = 8; min keysize = 5; max keysize = 16
Selection [aes]: <-- Press ENTER
Select key bytes:
1) 16
2) 32
3) 24
Selection [16]: <-- Press ENTER
Enable plaintext passthrough (y/n) [n]: <-- Press ENTER
Enable filename encryption (y/n) [n]: <-- Press ENTER
Attempting to mount with the following options:
ecryptfs_unlink_sigs
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=bd28c38da9fc938b
WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],
it looks like you have never mounted with this key
before. This could mean that you have typed your
passphrase wrong.
Would you like to proceed with the mount (yes/no)? : <-- yes
Would you like to append sig [bd28c38da9fc938b] to
[/root/.ecryptfs/sig-cache.txt]
in order to avoid this warning in the future (yes/no)? : <-- yes
Successfully appended new sig to user sig cache file
Mounted eCryptfs
[email protected]:/home/administrator#

Sehen Sie sich die Ausgabe von

an
mount

und Sie sollten sehen, dass /home/falko/ jetzt verschlüsselt ist:

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:

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

cat /home/falko/hosts

 

4 So mounten Sie automatisch eine verschlüsselte Partition beim Booten

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

Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00035e35

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        3793    30461952   83  Linux
/dev/sda2            3793        3917      992257    5  Extended
/dev/sda5            3793        3917      992256   82  Linux swap / Solaris

Disk /dev/sdb: 8086 MB, 8086617600 bytes
255 heads, 63 sectors/track, 983 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000e439f

   Device Boot      Start         End      Blocks   Id  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:

mounten
mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb

Sehen Sie sich die Ausgabe von

an
mount

... 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
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=124251,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,relatime,size=202132k,mode=755)
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw,relatime)
/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:

nano /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.txt
ecryptfs_sig=bd28c38da9fc938b
ecryptfs_cipher=aes
ecryptfs_key_bytes=16
ecryptfs_passthrough=n
ecryptfs_enable_filename_crypto=n

Jetzt erstellen wir die Passphrase-Datei auf unserem USB-Stick:

nano /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...

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

reboot

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)...

nano /etc/rc.local

... und fügen Sie die Zeile /bin/mount -a vor der Exit-0-Zeile hinzu:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/bin/mount -a
exit 0

Dadurch werden alle Partitionen (einschließlich Ihres USB-Sticks und der verschlüsselten Partition) am Ende des Startvorgangs (erneut) gemountet.

  • eCryptfs:https://launchpad.net/ecryptfs
  • Debian:http://www.debian.org/

Debian
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Debian – /var, /home auf separate Partition verschieben?

  3. Wie ändere ich Mount-Punkte?

  4. „Cache-Verzeichnis /home//.composer/cache/repo/https—packagist.org/ kann nicht erstellt werden, oder Verzeichnis ist nicht beschreibbar. Ohne Cache fortfahren“?

  5. So bereinigt systemd-tmpfiles /tmp/ oder /var/tmp (Ersatz von tmpwatch) in CentOS / RHEL 7

So verschlüsseln Sie Verzeichnisse mit eCryptfs unter Ubuntu 16.04

So verschlüsseln Sie Ihre Daten mit EncFS unter Debian 8 (Jessie)

So durchsuchen Sie Ihre Dateien oder Verzeichnisse mit dem Find-Befehl in Linux

So verschlüsseln Sie Linux-Partitionen mit VeraCrypt unter Debian 10

Bash =~ Regex und Https://regex101.com/?

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen