在 FreeNAS 中创建 ZFS 加密卷

2015-1-29 11:30 Herald 5776 FreeNASZFS存储管理

ZFS加密卷

从 FreeNAS 8.3.1 版本开始支持创建 GELI 全盘加密的 ZFS 卷。FreeNAS® 加密卷主要用于防止硬盘被盗,并不用于防范未授权的软件访问,对于敏感数据的安全问题,还是需要妥善设置 WebGUI 登陆权限和共享数据集的访问权限。

创建 ZFS 加密卷前,需要了解的情况:

  • FreeNAS 所创建的 ZFS 加密卷并不是 Oracle ZFS 版本的,因为甲骨文版的 ZFS 是闭源的。
  • FreeNAS 创建的 ZFS 加密卷属于全磁盘级加密,并不是文件系统级别的加密。全磁盘加密技术是先对底层所有关联的物理硬盘进行加密,然后将存储池创建在已加密的磁盘上面。
  • 这种加密技术主要面向那些存储敏感数据的用户,在这种加密技术的支持下,无需清空硬盘数据,拔除存储池中的硬盘即可,被拔掉的硬盘可以作为全新硬盘使用,但原有的数据却不可被其他设备读取。
  • 这种加密技术要求独立妥善保管磁盘的加密秘钥,如果加密秘钥和磁盘同时被他人获得,则加密很容易被破解。 应该为加密秘钥设置一个复杂的密码短语,从而为秘钥再多一层保护,同时应该在多个安全的位置备份加密秘钥,以防丢失。
  • 换句话说,如果加密秘钥丢失了,加密卷中的数据可以说几乎是没有办法被读取的,因此,切记妥善备份加密秘钥
  • 每一个 ZFS 加密卷(存储池)都有一个加密秘钥。创建多个加密卷,则每一个加密卷都有一个独立的加密秘钥。对安装了许多块硬盘的 FreeNAS 而言,如果使用了不支持 AES-NI 指令集的 CPU 或不支持硬件加密,都会导致性能损失。没有硬件加密加速器,单块硬盘性能损失在 20% 左右,随着更多硬盘的加入,系统性能会进一步下降。写入数据时,系统会自动对数据进行加密,读取的时候也会自动进行解密。
  • 驻留在 L2ARC 高速读缓存和内存中的数据是被解密的。
  • Swap 交换空间始终是被加密的,即使已经为卷解密。
  • 无法将已创建的卷转换为加密卷,只能通过新建的的方式 创建 ZFS 加密卷。
  • 不支持混合池。也就是说,加密卷中创建的 vdev 虚拟硬盘是会被自动加密的,无法在加密卷中创建不加密的虚拟硬盘。

安全提示:FreeNAS ZFS 加密卷会对组成卷的每一块硬盘分别创建 GELI 主密钥,但每一块硬盘的 GELI 主密钥并不会同用户秘钥同时备份。如果被加密的磁盘最近被操作的扇区发生一丁点错误,都可能直接导致整个 ZFS 加密卷的数据全部丢失。因此,你需要了解《如何手动备份硬盘主密钥》。

创建ZFS加密卷

创建 ZFS 加密卷的过程与创建普通卷的过程几乎是一样的,如果你还不了解如何创建卷,请先阅读《FreeNAS 创建和删除卷/数据集》。

浏览器访问 WebGUI 管理界面,点击界面上方的 “Storage” 存储图标按钮,在选项卡下方找到 “Volume Manager” 卷管理器,会弹出卷创建窗口,如下图所示。与创建普通卷的唯一区别,是要选中 “Encryption” 加密选项,选中后会有一个气泡提示,提醒我们创建完成以后备份加密秘钥、使用加密卷可能存在的一些风险以及免责声明。输入卷名称,配置好卷结构,点击 “Add Volume” 添加卷按钮,ZFS 加密卷就创建完成了。

20150128231002

点选已经创建好的 ZFS 加密卷,可以看到界面下方多出了 5 个图标按钮,如下图所示。

zfs加密卷管理

各功能按钮的解释:

  • Create/Change Passphrase,创建/修改密码短语。点此按钮为 GELI 加密秘钥创建一个密码短语,在窗口中的第一项输入密码短语,第二项中再输入一次确认密码短语。如下图所示,可以看到窗口上方有一行红字提示 “Remember to add a new recovery key as this action invalidates the previous recovery key” 不要忘记新建一个还原秘钥以作废旧的还原秘钥。与密码不同,密码短语通常是一段话,可以包含空格。好的密码短语既容易记忆,又不容易被猜到,比如歌曲的名字或是书名。如果你忘记了密码短语,将无法成功导入卷。
    密码短语创建成功,此功能按钮会变成 “Change Passphrase” 修改密码短语,你可以随时修改。密码短语创建完成以后,务必重新创建还原秘钥,这样一来,如果忘记了密码短语,可以使用还原秘钥替代密码短语。
    创建密码短语
  • Download Key,下载加密秘钥。点此按钮下载 GELI 加密秘钥,需要验证 root 用户密码后方可下载。上面已经介绍过,加密秘钥非常关键,下载以后务必妥善保管。FreeNAS 系统配置中并不保存加密秘钥,强烈建议将加密秘钥分别备份到多个设备上,如果秘钥丢失,存储的数据几乎无法再被取出,切记。
    下载加密秘钥
  • Encryption Re-key,重建加密秘钥。点此按钮新建一个 GELI 加密秘钥,需要验证 root 用户密码。如果你怀疑加密秘钥可能被盗了,可以通过这个功能按钮创建新的加密秘钥,新秘钥创建以后,旧的秘钥就全部失效了。需要注意的是,为旧秘钥创建的密码短语也会一同失效,因此你需要为新秘钥设置一个新的密码短语。
    重建加密秘钥
  • Add recovery key,创建还原秘钥。点此按钮创建卷还原秘钥,需要验证 root 用户密码。还原秘钥创建成功会提示你下载到本地电脑,请妥善保管。忘记密码短语时,还原秘钥可以替代密码短语的功能。
    再次提醒:每当创建/修改密码短语时,都应该马上创建新的还原秘钥!
    创建还原秘钥
  • Remove recovery key,移除还原秘钥。如果怀疑当前还原秘钥被盗,可以点此按钮将还原秘钥删除。出于安全考虑,删除后,请尽快创建新的密码短语和还原秘钥。
    删除还原秘钥

安全提示:密码短语、还原秘钥和加密秘钥必须妥善保管,且 root 用户密码尽可能设置的复杂。任何人获得了这些信息和秘钥文件,都可以直接访问被加密的卷,后果很严重。

锁定/解锁 ZFS 加密卷

为 ZFS 加密卷创建密码短语后,可以看到在原有 5 个功能按钮的前面多了一个按钮,“Lock Volume” 锁定加密卷

锁定加密卷

点此按钮,系统将自动锁定加密卷,此时,所有建立在此加密卷上的共享都无法访问。确切的说,这个加密卷在系统中已经完全隐藏起来了,如下图所示。(不相信的朋友可以用 putty 查看系统 /mnt 目录)下方只显示两个功能按钮,一个是分离卷,另一个是 “Unlock”解锁卷。

注意:FreeNAS 系统重启以后,所有加密卷都会自动锁定,需要手动进行解锁。

已锁定的加密卷

点击解锁卷按钮,会弹出如下图所示的窗口。第一项提示输入密码短语,第二项提示上传还原秘钥,第三项选择需要重启的系统服务。上面已经介绍过,还原秘钥可以充当密码短语的功能,因此,密码短语和还原秘钥任选一种即可解锁加密卷,没必要即输入密码短语,又上传还原秘钥。

解锁加密卷

导入ZFS加密卷

有时候出于某种原因,可能需要暂时卸载掉组成加密卷的硬盘,等到需要时再重新安装还原回来,这时,只需要点选加密卷,然后点击下方的分离卷按钮即可,具体操作与普通卷的分离完全一样。需要注意的是,分离卷时不要勾选 “清空卷数据” 选项,否则数据都被清空了,还原也变得没有意义了。

当需要还原卷时,可以在存储选项卡中点击 “Import Volume” 导入卷功能按钮,在弹出的窗口中选择 “Yes:Decrypt disks” 是的:解密磁盘这一项,按 “OK” 确定按钮继续。

导入卷第一步

系统会自动识别可以导入的加密卷,如下图所示。在 “Disks” 磁盘选项中选择要导入的加密卷,“Encryption Key” 加密秘钥选项上传备份在本地电脑上与加密卷对应的加密秘钥,“Passphrase” 密码短语选项中输入之前为这个加密卷设置的密码短语,加密秘钥和密码短语缺一不可,且任何一项错误,都无法导入卷。仔细观察你会发现,此处并没有上传还原秘钥的选项,因此加密秘钥最好还是不要忘记,否则后果很严重。按 “OK” 确定按钮继续。

导入加密卷第二步

加密秘钥和密码短语验证无误以后,系统会自动为卷进行解密,并显示卷信息,如下图所示。

加密卷解密

你可以检查一下这是否是你希望导入的加密卷,如果不是,可以重新选择要导入的卷,如果没问题,点击 “OK” 确定按钮开始导入卷。导入成功后,加密卷会以解锁的状态显示在卷列表中。

{{ headers["x-wp-total"] }} 条评论

{{ post_id = '314' }}

回复 {{ reply_to }}