+ xPKQ90ht2zqmFz / sNF / sycDi6hYTYvF8Fcg9x -

一个快速启动指南OpenZFS本机加密

学习如何,为什么,什么OpenZFS加密这个简短的指南。

我怎么射加密?

现在我们已经介绍了为什么和什么,让我们进一步讨论如何。这些都是重要的知道命令和参数:

zfs创建

ZFS加密的第一步是创建加密的数据集或zvol本身。你不能加密一个已存在的数据集或zvol-it需要创建从一开始就这样。(你可以,如果有必要,full-replicate现有数据集到一个新的子数据集的一个加密的家长,从而保留快照历史和其他细节。复制完成后删除源和你证实这一切都好。)

zfs创建=(算法)- o - o加密keylocation =[地点]- o keyformat =(格式)poolname / datasetname

现在,让我们来解决每一个粗体参数。加密是显而易见的如果你已经阅读:如果你设置,你会得到默认加密的算法a变体aes - 256取决于您的特定OpenZFS版本。否则,您可以指定算法directly-currently,支持aes在宽度128年,192年,或256年在这两种ccmgcm变体。我们目前推荐aes - 256 gcm严格的基础上它是默认的算法用于当前可用的最新版本OpenZFS !

Keylocation可以是提示(在必要时提示您输入)或路径密钥文件(表单文件:/ / /道路/ /密钥文件)。不幸的是,你很难从互动提示一次密钥文件数据集或zvol造成了一些这里呼吁提前计划。ZFS使用密钥文件允许加密卷自动安装在boot-using提示需要一个人每次都手动解锁加密卷。

Keyformat可以是密码,十六进制,或。密码必须在8和512字节之间,而两种十六进制钥匙必须精确32个字节长。你可以生成一个原始的钥匙dd if = / dev / urandom b = 32数= 1 = /道路/ /密钥文件

keylocationZFS存储为属性的数据集或zvol使用它。这允许自动安装加密的数据集和zvols时位置是一个文件,而不是一个交互式提示符。

最后注意:ZFS实际上并不直接与所提供的密码加密数据;它与伪随机生成的主密钥加密数据。你的密码解锁,主密钥,然后使用可用处理体积本身!

zfs输入键

创建你的加密数据集后,它自动mounted-but不会,系统重新启动。为了使您的加密卷再次访问,您将使用zfs输入键命令。

zfs输入键(nr] [- l位置][a]poolname / zvol-or-dataset

像往常一样,可选的- r是为递归,它会加载指定的体积和任何子卷。——一个所有更进一步和加载密钥加密卷上发现的所有当前进口池。

也为Linux实用工具,像往常一样- n是短暂的无操作,也就是排练。例如,执行zfs装载键- n -检查所有指定的键keylocation加密的数据集的属性和zvols是可用的和正确的,但它不改变或挂载状态的关键。

最后,- l位置覆盖了keylocation财产ZFS存储在数据集或zvol本身。例如,假设您创建了一个使用交互式提示密码加密的数据集正确的马电池主要。你可以输入这个词/home/me/myzfskey.txt,然后做zfs装载键- l文件:/ / / /我/ myzfskey回家。txt poolname / datasetname和关键负载很好。

一个警告:简单地加载并不能真正的关键你的数据集或zvol-that之后需要执行的是一个独立的操作,关键是加载,例如,zfs——山zfs poolname / datasetname山

如果你想钥匙在引导时自动加载,Arch Linux wiki样本systemd服务定义可用

zfs unload-key

只要它不是(一般意义安装),你可以从一个加密卷卸载的关键。这个命令的股票- r——一个国旗与zfs输入键。卸载后,zfs得到keystatus poolname / datasetname将返回不可用和体积问题可能没有安装到关键是重新加载。

记住:卷没有他们不能读取或写入密钥加载,但他们可以被复制使用- w国旗zfs发送!维护级别ZFS擦洗等操作,重新挂银,甚至(数据集或zvol级别)重命名也工作好锁卷。

zfs改变键

这个命令可以用来改变keylocation,keyformat和/或pbkdf2iters一个加密卷的性质,以及实际的关键本身。使用zfs改变键需要对所有数据volumes-the影响键保持不变;什么zfs改变键ZFS是改变与加密相关的属性,和/或改变的密码吗解锁主密钥。

zfs改变键[- l] [o keylocation =位置][o keyformat =格式][o pbkdf2iters =价值)poolname / dataset-or-zvol

- l(小写字母L)加载关键——功能相当于改变之前zfs装载键poolname /数据集;zfs改变键poolname /数据集

keyformatkeylocation只是他们听起来像:看到了什么zfs输入键上面的解释。pbkdf2iters是PBKDF迭代的数量申请密码,以生成一个master-key-it违约One hundred.凡人,不应该乱,他们不知道完全这意味着什么(以及它的含义是什么),而不进一步阅读。

请记住,我们不会改变主密钥,只有用户的“包装”键改变这个关键不明确保证数据的安全,它最初的包装主要是妥协。一个非常先进的攻击者可以发现主- - - - - -关键在妥协user-wrapped键在发生严重的妥协,你要完全重写数据集(例如,通过复制到一个新的数据集,孩子的父母用不同的密钥加密)。

zfs发送

zfs发送zfs接收是相同的命令,以同样的方式使用,正常的ZFS吗复制和工作一样他们总是一样……一些非常重要的警告。为了使用加密复制,你必须指定- w参数zfs发送。使用- w发送数据时,就已经存储on-disk-which叶子压缩完好无损,除了加密。

如果你忘记使用- wzfs发送荷兰国际集团(ing)与关键数据集加载,复制将工作,但目标未加密!

记住,ZFS复制是基于snapshots-so你需要创建、管理和使用快照,以便利用复制。没有额外的工具,这一过程是这样的:

root@banshee: ~ # zfs快照女妖/ encrypted-source@snapshot1 root@banshee: ~ # zfs - w女妖发送/ encrypted-source@snapshot1 | zfs接收女妖/ encrypted-target root@banshee: ~ # zfs快照女妖/ encrypted-source@snapshot2 root@banshee: ~ # zfs - w -我发送女妖/ encrypted-source@snapshot1女妖/ encrypted-source@snapshot2 | zfs接收女妖/ encrypted-target root@banshee: ~ # zfs rt吸附效果参考使用女妖/ encrypted-target名称列表挂载点女妖/ encrypted-target@snapshot1 16 k - 672 k -女妖/ encrypted-target@snapshot2 0 b - 672 k - root@banshee: ~ # zfs得到keystatus女妖/女妖encrypted-target名称属性值来源/ encrypted-target keystatus不可用

在上面的示例中,我们首先执行一个完整的复制的基础上@snapshot1,然后从增量复制@snapshot1@snapshot2。我们可以验证快照和正确的目标zfs rt快照列表,即使没有关键加载但试图访问实际数据失败,因为目标的关键不是加载数据集,也不安装。

访问数据,我们可以zfs输入键zfs山目标数据集,或者我们可以zfs - w发送回到源。

如果这些看起来太复杂,难以实现自动化,我自己的工具syncoid只可以指定——sendoptions = w你去比赛;syncoid自动处理匹配常见的快照,甚至在必要时创建快照。

(除了主版本在Github提供链接,syncoid的父母包sanoid目前可以从大多数主要分布的默认repositories-e.g。,apt安装sanoid在Ubuntu 20.04)。

root@banshee: ~ # zfs摧毁- r女妖/ encrypted-target root@banshee: ~ # syncoid——压缩=没有sendoptions = w女妖/ encrypted-source女妖/ encrypted-target信息:发送完整古老快照女妖/ encrypted-source@1 (~ 491 KB)新目标文件系统:418简约0:00:00 [53.2 mib / s][= = = = = = = = = = = = = = = = = = = = = = = = = = = >] 85%信息:更新新目标文件系统与增量女妖/ encrypted-source@1……syncoid_banshee_2021-06-23:17:31:24 (~ 19 KB): 52.5简约0:00:00[391简约/ s] [= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =] 269% root@banshee: ~ # zfs rt吸附效果参考使用女妖/ encrypted-target名称列表挂载点女妖/ encrypted-target@snapshot1 16 k - 672 k女妖/ encrypted-target@snapshot2 16 k - 672 k女妖/ encrypted-target@syncoid_banshee_2021-06-23:17:31:24 0 b - 672 k

请注意,我们也使用——压缩=没有,因为加密的源数据不会被压缩。任何ZFS压缩磁盘上的应用仍将是完整的有或没有——压缩=没有syncoid只选择压缩数据动态和对磁盘上没有轴承使用。如果你忘了指定——压缩=没有它不会伤害任何东西;你只会浪费一些CPU周期非常快的高低lzo默认的动态压缩。

结论

希望你有一个更好的处理在ZFS加密比你现在进入这篇文章。与许多ZFS的特性一样,磁盘加密是可用的,在某些方面,在最初的简单层。但包装成OpenZFS系统直接允许许多有趣的新的可能性,特别是“原始发送”的概念,它允许OpenZFS”优秀异步增量复制功能没有加载密钥,可以改变。

请记住,zfs输入键zfs山真的,真的事此——他们在源和目标问题。如果你遇到一个情况下,你所有的文件似乎消失了但是没有明显的抛出错误,你肯定忘了山dataset-or,在某些情况下,安装在一个不同的地方比你预期。

如果你需要帮助,ZFS加密,ZFS复制,甚至sanoid/syncoid编制工具简要提及了在这篇文章中,您可能想看一看r / zfs以及本文的评论部分。

通道Ars Technica