Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104617322
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-29 16:43:54

作者: Mike Petullo/黄永兵 译 出处:51CTO.com 
 
 
就此,initrd必须被安装到闪存盘上,Fedora提供了一个叫做mkinitrd的工具来创建initrd,然而,在写本文的时候,mkinitrd还不支持加载一个加密的root文件系统,补丁在,一旦应用了补丁,mkinitrd就可以读取/etc/crypttab并创建一个恰当的initrd了:

1.  mkinitrd --authtype=paranoid -f /media/usbdisk/initrd.gz
2.  umount /media/usbstick
文件/mnt/encroot/etc/fstab应该被更新反映出变化:
/dev/mapper/root /      ext3    defaults         1 1

有加密的swap或完全没有swap空间是一个加密文件系统的先决条件。原因可以在文章“实现加密的home目录”和BugTraq邮件列表中的一篇“Mac OS X在磁盘上存储登陆/密钥链/密码”中找到。当给启动脚本软件包应用了的补丁后,Fedora允许用户使用一个随机生成的会话密钥加密他们的swap分区,因为swap空间在重新启动时通常不需要一致,当系统关闭时会话密钥也不保存,要启用加密的swap,完成下面的步骤:

1)添加下面的行到/mnt/encroot/etc/fstab,替换任何先前的swap记录:
/dev/mapper/swap swap   swap    defaults         0 0
2)添加下面的行到/mnt/encroot/etc/crypttab告诉系统如何完成加密:
swap    /dev/hda3       /dev/urandom    swap

至此我们应该可以重新启动系统并使用我们的加密文件系统,再说一次,我们需要暂停启动选项命令进入Open Firmware提示符。

正如上面说到的,闪存盘第二个分区路径是。了解了这一点,我们可以建立路径,\ofboot.b。在分区号和文件系统路径之间的分隔符是‘,’,\ofboot.b是文件系统路径,\与Unix的/类似。

> dir /pci@f2000000/usb@1b,1/disk@1:2,\
Untitled            GMT                   File/Dir
   Size/      date       time  TYPE       Name
   bytes   9/ 3/ 4   21:44:41  ???? ????  initrd.gz
 2212815   8/28/ 4   12:24:21  tbxi UNIX  ofboot.b
    3060   9/ 3/ 4    2:21:20  ???? ????  vmlinux
  141868   9/28/ 4   12:24:22  boot UNIX  yaboot
     914   9/28/ 4   12:24:22  conf UNIX  yaboot.conf

这就确定了Open Firmware可以读取启动系统需要的文件,设置boot-device变量的值为使得系统可以从闪存盘启动:
setenv boot-device

一旦系统从加密root文件系统成功启动,必须清除掉/dev/hda5上的所有数据,可以使用随机排列root文件系统分区同样的方法来实现:
dd if=/dev/urandom of=/dev/hda5

你可能想对hda5重写几次,要想了解处理干净一个磁盘,请查看美国安全部门编写的“National Industrial Security Program Operating Manual”第八章。

根据一个安全处理原则,/dev/hda5可能被挂载为/home,/home文件系统也应该被加密,幸运的是,这是一个简单的过程,因为系统不需要/home启动,象创建root文件系统一样创建/home文件系统
1)确认aes,dm-mod,dm-crypt模块已经载入内核
2)卸载/dev/hda5
#umount /dev/hda5
3)创建一个随机256位加密密钥,存储在/etc/home-key
#dd if=/dev/urandom of=/etc/home-key bs=1c count=32
4)创建一个dm-crypt设备,用刚刚生成的密钥加密
#cryptsetup -d /etc/home-key create home /dev/hda5
5)在/dev/mapper/home上创建一个ext3文件系统
#mkfs.ext3 /dev/mapper/home
6)挂载新文件系统
#mount /dev/mapper/home /home
7)在/etc/crypttab中创建一个条目,让各种实用程序都清楚文件系统是如何配置的
root    /dev/hda5       /etc/home-key   cipher=aes
8)最后,为/home更新/etc/fstab条目
/dev/mapper/home /home  ext3    defaults         1 2

至此,可以添加非root系统账号了,设置加密root文件系统的过程就结束了。

加密你所有数据可能很危险,如果加密密钥丢失,你的数据就丢失了,就因为这个原因,备份你的包含有你的密钥的闪存盘很重要,同样,备份加密数据对应的明文也很重要,如果你保存有一张可启动的紧急救援磁盘,重新考虑应该放哪些系统组件在上面或许很有意义,你的root和home文件系统、密钥、parted、hfsutils、加密技术有关的内核模块以及cryptsetup脚本的拷贝都应该放进去。

这个技术在保护你的数据方面究竟有什么实际好处?在《Secrets and Lies》这本书中,作者Bruce Schneier提出了一个有用的手段来评估这个技术,一个攻击树可以用于模型危险,图4呈现了一个攻击我们加密文件系统的树型图,值得注意的是这颗攻击树不是完整的,可能随时间推移会发生改变。

4攻击者如何读取加密文件系统的数据

通过使用本文讨论的技术和一点创新的想法,确保你磁盘上的数据对常见的偷窃行为更具抵抗性是可能的,跟踪攻击种类的发展比了解防御更重要,尽管还有其他的技术用于保护基于网络的或其他类型的攻击,但本文讨论的技术对整个系统安全的目标具有重要意义。

阅读(474) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~