GNU/Linux >> Belajar Linux >  >> Debian

Cara Mengenkripsi Direktori/Partisi dengan eCryptfs di Debian 8 (Jessie)

eCryptfs adalah sistem file kriptografi bertumpuk kelas perusahaan yang sesuai dengan POSIX untuk Linux. Anda dapat menggunakannya untuk mengenkripsi partisi dan juga direktori yang tidak menggunakan partisinya sendiri, tidak peduli sistem file yang mendasarinya, jenis partisi, dll. Tutorial ini menunjukkan cara menggunakan eCryptfs untuk mengenkripsi direktori di Debian Jessie.

1 Catatan Awal

Dalam tutorial ini, saya akan mengenkripsi direktori home saya, /home/falko/, yang terletak di partisi / (yaitu, /home/falko/ adalah direktori biasa dan tidak menggunakan partisi sendiri).

2 Memasang eCryptfs

eCryptfs dapat dengan mudah diinstal sebagai berikut:

apt-get -y install ecryptfs-utils

3 Mengenkripsi direktori

Sekarang saya akan mengenkripsi direktori home saya /home/falko/. Karena sudah ada file (tidak terenkripsi) di direktori itu, saya harus mengambil cadangannya sehingga saya dapat mengembalikannya ke direktori /home/falko/ yang kemudian dienkripsi (jika tidak, file ini tidak dapat diakses/dibaca saat direktori tersebut dienkripsi):

cp -pfr /home/falko/ /tmp/

Sekarang saya dapat mengenkripsi direktori /home/falko/ dengan memasangnya dengan jenis sistem file ecryptfs:

mount -t ecryptfs /home/falko /home/falko

Ketika Anda melakukan ini untuk pertama kalinya, Anda harus menjawab beberapa pertanyaan:

[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#

Lihatlah output dari

mount

dan Anda akan melihat bahwa /home/falko/ sekarang dienkripsi:

Mari pulihkan cadangan kita ke direktori /home/falko/ yang sekarang terenkripsi dan hapus cadangan setelahnya:

cp -pfr /tmp/falko/ /home/
rm -fr /tmp/falko/

Untuk tujuan pengujian, mari salin beberapa file lain, mis. /etc/hosts, ke /home/falko/ untuk memeriksa apakah itu benar-benar dienkripsi:

cp /etc/hosts /home/falko

Saat /home/falko/ di-mount dengan jenis sistem file ecryptfs, konten /home/falko/hosts seharusnya dapat dibaca:

cat /home/falko/hosts

Sekarang lepaskan /home/falko/...

umount /home/falko

... dan coba lagi untuk membaca /home/falko/hosts, dan Anda akan mendapatkan beberapa hal samar:

cat /home/falko/hosts

 

4 Cara memasang partisi terenkripsi secara otomatis saat boot

Tentu saja, kita tidak ingin me-mount /home/falko/ secara manual setiap kali - akan lebih baik jika dapat di-mount secara otomatis saat boot. Untuk melakukan ini, kami memerlukan file frasa sandi, dan untuk alasan keamanan, saya ingin file frasa sandi ini ditempatkan di kunci USB.

Colokkan kunci USB dan jalankan

fdisk -l

untuk mengetahui nama perangkat dan jenis sistem filenya:

[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]:~#

Dalam kasus saya, nama perangkatnya adalah /dev/sdb1, dan menggunakan sistem file FAT32.

Mari pasang kunci USB ke /mnt/usb:

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

Lihatlah output dari

mount

... dan Anda akan melihat bahwa itu di-mount dengan jenis sistem file vfat (FAT32) - kami akan memerlukan informasi ini nanti untuk file /etc/fstab kami:

[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]:~#

Sekarang lihat isi /root/.ecryptfs/sig-cache.txt:

cat /root/.ecryptfs/sig-cache.txt
bd28c38da9fc938b

Kami membutuhkan tanda tangan ini untuk file /root/.ecryptfsrc yang kami buat sebagai berikut:

nano /root/.ecryptfsrc

Harap pastikan bahwa Anda menggunakan tanda tangan dari file /root/.ecryptfs/sig-cache.txt di baris ecryptfs_sig:

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

Sekarang kami membuat file frasa sandi pada kunci USB kami:

nano /mnt/usb/passwd_file.txt
passphrase_passwd=some_passphrase

Pastikan Anda menggunakan frasa sandi yang benar, yaitu frasa sandi yang akan Anda gunakan jika Anda memasang direktori secara manual.

Selanjutnya buka /etc/fstab...

nano /etc/fstab

... dan tambahkan dua baris berikut (pastikan Anda menggunakan jenis sistem file yang benar untuk kunci USB Anda - vfat dalam kasus saya):

[...]
/dev/sdb1       /mnt/usb        vfat    ro      0 0
/home/falko /home/falko ecryptfs defaults 0 0

(Penting agar baris untuk kunci USB muncul sebelum baris untuk partisi terenkripsi karena kunci USB harus dipasang sebelum partisi terenkripsi dapat dipasang!)

Kemudian reboot sistem:

reboot

Jika semuanya berjalan dengan baik, partisi terenkripsi Anda akan secara otomatis dipasang setelah reboot. Namun, mungkin saja sistem Anda tidak dapat memasang kunci USB Anda saat boot, yang berarti partisi terenkripsi Anda juga tidak dapat dipasang. Jika ini terjadi, edit /etc/rc.local (skrip ini dijalankan pada akhir proses boot)...

nano /etc/rc.local

... dan tambahkan baris /bin/mount -a sebelum baris exit 0:

#!/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

Ini akan (-)me-mount ulang semua partisi (termasuk kunci USB Anda dan partisi terenkripsi) di akhir proses boot.

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

Debian
  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Bash =~ Regex Dan Https://regex101.com/?

  3. Debian – Memindahkan /var, /home Untuk Memisahkan Partisi?

  1. Bagaimana Cara Mengubah Mount Points?

  2. “tidak dapat Membuat Direktori Cache /home//.composer/cache/repo/https—packagist.org/, Atau Direktori Tidak Dapat Ditulis. Melanjutkan Tanpa Cache”?

  3. Instal binari ke /bin, /sbin, /usr/bin dan /usr/sbin, interaksi dengan --prefix dan DESTDIR

  1. Cara Mengenkripsi Direktori/Partisi Dengan eCryptfs Pada Debian Squeeze

  2. Bagaimana cara mengetahui dari folder mana suatu proses sedang berjalan?

  3. Haruskah situs web berada di /var/ atau /usr/ sesuai dengan penggunaan yang disarankan?