教你加密Root文件系统(图)

互联网   发布时间:2008-10-08 19:02:19   作者:佚名   我要评论
当你不能依靠物理安全来保证你文件的安全时,是时候采取额外的步骤加密文件系统了,虽然本文涉及到的是基于PowerPC的系统,但原则上来说也适用于其他架构的系统。   在另一篇文章“实现加密的home目录”中,我描写了如何透明地加密home目录,本文叙述另一个技术实现--
有加密的swap或完全没有swap空间是一个加密文件系统的先决条件。原因可以在文章“实现加密的home目录”和BugTraq邮件列表中的一篇“Mac OS X在磁盘上存储登陆/密钥链/密码”中找到。当给启动脚本软件包应用了https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=127378的补丁后,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提示符。
  正如上面说到的,闪存盘第二个分区路径是/pci@f2000000/usb@1b,1/disk@1:2。了解了这一点,我们可以建立路径/pci@f2000000/usb@1b,1/disk@1:2,\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变量的值为/pci@f2000000/usb@1b,1/disk@1:2,\ofboot.b使得系统可以从闪存盘启动:
  setenv boot-device /pci@f2000000/usb@1b,1/disk@1:2,\ofboot.b
  一旦系统从加密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攻击者如何读取加密文件系统的数据
  通过使用本文讨论的技术和一点创新的想法,确保你磁盘上的数据对常见的偷窃行为更具抵抗性是可能的,跟踪攻击种类的发展比了解防御更重要,尽管还有其他的技术用于保护基于网络的或其他类型的攻击,但本文讨论的技术对整个系统安全的目标具有重要意义。

相关文章

最新评论