如何加密目录/分区与eCryptfs在Debian挤压

如何使用eCryptfs在Debian Squeeze上加密目录/分区

eCryptfs是适用于Linux的POSIX兼容的企业级堆叠密码文件系统。 您可以使用它来加密分区以及不使用自己分区的目录,无论底层文件系统,分区类型等。本教程将介绍如何使用eCryptfs加密Debian Squeeze上的目录。

我不会保证这将为您工作!

1初步说明

在本教程中,我将加密我的主目录/ home / falko / ,它位于/ partition上(即/ home / falko /是一个普通的目录,不使用自己的分区)。

2安装eCryptfs

eCryptfs可以轻松安装如下:

apt-get install ecryptfs-utils

3加密目录

我现在将加密我的主目录/ home / falko / 。 由于该目录中已经存在(未加密)文件,所以我必须备份它们,以便稍后将它们还原到加密/ home / falko /目录中(否则这些填充不能被访问/读取,而目录是加密):

cp -pfr /home/falko/ /tmp/

现在我可以使用文件系统类型ecryptfs加载目录/ home / falko /

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

当您第一次这样做时,您将不得不回答几个问题:

root @ server1:〜#mount -t ecryptfs / home / falko / home / falko
密码: < - some_passphrase
选择密码:
1)aes:blocksize = 16; min keysize = 16; max keysize = 32(未加载)
2)河豚:块状= 16; min keysize = 16; max keysize = 56(未加载)
3)des3_ede:blocksize = 8; min keysize = 24; max keysize = 24(未加载)
4)twofish:块大小= 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(未加载)
选择[aes]: < - ENTER
选择关键字节:
1)16
2)32
3)24
选择[16]: < - ENTER
启用明文传递(y / n)[n]: < - ENTER
启用文件名加密(y / n)[n]: < - ENTER
尝试使用以下选项进行安装:
ecryptfs_unlink_sigs
ecryptfs_key_bytes = 16
ecryptfs_cipher = aes
ecryptfs_sig = bd28c38da9fc938b
警告:根据[/root/.ecryptfs/sig-cache.txt]的内容,
看起来你从来没有装过这个钥匙
之前。 这可能意味着你打了你的
密码错误。

你想继续安装(是/否)? < - 是的
你想附加sig [bd28c38da9fc938b]到
[/root/.ecryptfs/sig-cache.txt]
为了避免今后的这个警告(是/否)? < - 是的
成功添加新的sig到用户sig缓存文件
安装的eCryptfs
root @ server1:〜#

看看输出

mount

你应该看到/ home / falko /现在加密了:

root@server1:~# 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 type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/home/falko on /home/falko type ecryptfs (rw,ecryptfs_sig=bd28c38da9fc938b,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs)
root@server1:~#

让我们将备份还原到现在加密的目录/ home / falko / ,然后删除备份:

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

为了测试的目的,我们将一些其他文件,例如/ etc / hosts复制到/ home / falko /来检查它是否真的得到加密:

cp /etc/hosts /home/falko

/ home / falko /安装有ecryptfs文件系统类型时,应该可以读取/ home / falko / hosts的内容

cat /home/falko/hosts

现在卸载/ home / falko / ...

umount /home/falko

...然后再次阅读/ home / falko / hosts ,你应该得到一些隐秘的东西:

cat /home/falko/hosts
?æËÊÀû5)í}Ó`§wʽ.ÂçµÔyiIezz°Ñd¦R,`Ëi,0ñ*úÐ%^-']YÑj÷#6÷¨Y-]«é²ùô<f$øRø'<Ö·"íó®9ÛQ¨yÂsçOÂ@%Ⱦ®ý?VÔCx'Ųز(t±õÓ´XÏxïhÌ3pé±t
S[Tåj´0KhóÖÄ  IÚYçàÉü~ZA#æ;mâ²Îí]úÞþ
d#ß÷ݹ¥ùªeÐðº¦%ÎmK+÷ý)ôÞGįÁ©
                             <na_Yý1ZÂ+ðú¶RE}´ !¥ð_(-)ÇzÃسÒÜ¿¦´«ºÀH=Üï´        Hú.`{ðßâËw
qü
  Ç(½©V¿òÀѳE¾T%Ë9»¯v¡óÐ5S
©9¶è-

4如何在引导时自动安装加密分区

当然,我们不想每次都挂载/ home / falko /手动 - 如果可以在启动时自动安装,这将是更好的。 为此,我们需要一个密码文件,出于安全考虑,我希望这个密码文件位于USB密钥上。

插入USB钥匙并运行

fdisk -l

找出其设备名称和文件系统类型:

root@server1:~# 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
root@server1:~#

在我的情况下,设备名称是/ dev / sdb1 ,它使用FAT32文件系统。

我们将USB钥匙装入/ mnt / usb

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

看看输出

mount

...你应该看到它已经安装了文件系统类型vfat (FAT32) - 稍后我们将需要这个信息我们的/ etc / fstab文件:

root@server1:~# 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 type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 on /mnt/usb type vfat (rw)
root@server1:~#

现在看看/root/.ecryptfs/sig-cache.txt的内容:

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

我们需要这个文件/root/.ecryptfsrc的这个签名 ,我们创建如下:

vi /root/.ecryptfsrc

请确保您使用ecroptfs_sig行中的/root/.ecryptfs/sig-cache.txt文件中的签名

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

现在我们在USB钥匙上创建密码文件:

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

确保使用正确的密码,即您手动安装目录时使用的密码。

接下来打开/ etc / fstab ...

vi /etc/fstab

...并添加以下两行(确保您使用正确的文件系统类型为您的USB钥匙 - 在我的情况下的vfat ):

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

(重要的是,USB密钥的行位于加密分区的行之前,因为在加密分区可以挂载之前需要挂载USB密钥!)!

然后重新启动系统:

reboot

如果一切正常,您的加密分区应在重新启动后自动挂载。 但是,您的系统可能无法在引导期间挂载USB密钥,这意味着您的加密分区也无法挂载。 如果发生这种情况,请编辑/etc/rc.local (此脚本在引导过程结束时执行)...

vi /etc/rc.local

...并在出口0行之前添加行/ bin / mount -a

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

这将在引导过程结束时重新挂载所有分区(包括您的USB密钥和加密分区)。

5链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏