如何使用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链接
- eCryptfs : https : //launchpad.net/ecryptfs
- Debian: http : //www.debian.org/