📄 disks-encrypting.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy, see www.w3.org" /><title>加密磁盘分区</title><meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.7" /><link rel="HOME" title="FreeBSD 使用手册" href="index.html" /><link rel="UP" title="存储" href="disks.html" /><link rel="PREVIOUS" title="文件系统配额" href="quotas.html" /><link rel="NEXT" title="Vinum 卷管理程序" href="vinum-vinum.html" /><link rel="STYLESHEET" type="text/css" href="docbook.css" /><meta http-equiv="Content-Type" content="text/html; charset=GB2312" /></head><body class="SECT1" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#840084"alink="#0000FF"><div class="NAVHEADER"><table summary="Header navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><th colspan="3" align="center">FreeBSD 使用手册</th></tr><tr><td width="10%" align="left" valign="bottom"><a href="quotas.html"accesskey="P">后退</a></td><td width="80%" align="center" valign="bottom">章 16. 存储</td><td width="10%" align="right" valign="bottom"><a href="vinum-vinum.html"accesskey="N">前进</a></td></tr></table><hr align="LEFT" width="100%" /></div><div class="SECT1"><h1 class="SECT1"><a id="DISKS-ENCRYPTING" name="DISKS-ENCRYPTING">16.15.加密磁盘分区</a></h1><i class="AUTHORGROUP"><span class="CONTRIB">Contributed by</span> Lucky Green.</i> <p>FreeBSD 提供了极好的数据保护措施,防止未受权的数据访问。文件权限和强制访问控制(MAC)(看 <a href="mac.html">µÚ 15 章</a>)可以帮助预防在操作系统处于运行状态和计算机加电时未受权的第三方访问数据。但是,和操作系统强制受权不相关的是,如果黑客有物理上访问计算机的可能,那他就可以简单的把计算机的硬件安装到另一个系统上拷贝出敏感的数据。</p><p>不管怎样,黑客都有可能取得并获取停机时的硬件, <b class="APPLICATION">GEOM基于磁盘的加密 (gbde)</b> 能够保护在计算机文件系统上的数据并防止黑客得到重要的信息。 不像cumbersome 加密方法只加密个别的文件, <b class="APPLICATION">gbde</b>透明的加密整个文件系统。 整个硬盘都是加密过的非明文数据。</p><div class="SECT2"><h2 class="SECT2"><a id="AEN25279" name="AEN25279">16.15.1. 在内核中启用 gbde</a></h2><div class="PROCEDURE"><ol type="1"><li><p><b>成为 <tt class="USERNAME">root</tt></b></p><p>配置 <b class="APPLICATION">gbde</b> 需要超级用户的权力。</p><pre class="SCREEN"><samp class="PROMPT">%</samp> <kbd class="USERINPUT">su -</kbd>Password:</pre></li><li><p><b>验证操作系统的版本</b></p><p><span class="CITEREFENTRY"><span class="REFENTRYTITLE">gbde</span>(4)</span> 需要FreeBSD 5.0 或更高的版本。</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">uname -r</kbd>5.0-RELEASE</pre></li><li><p><b>在内核配置文件中添加对 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">gbde</span>(4)</span> 的支持</b></p><p>使用你喜欢的文本编辑器, 在内核配置文件中添加下面一行:</p><p><var class="LITERAL">options GEOM_BDE</var></p><p>配置,编译,安装 FreeBSD 内核, 这个过程在 <a href="kernelconfig.html">µÚ 8章</a> 中有详细描述。</p><p>重新引导进入新的内核。</p></li></ol></div></div><div class="SECT2"><h2 class="SECT2"><a id="AEN25310" name="AEN25310">16.15.2. 准备加密整个硬盘</a></h2><p>下面这个例子假设你添加了一个新的硬盘在你的系统并将拥有一个单独的加密分区。这个分区将挂接在 <tt class="FILENAME">/private</tt>目录下。 <bclass="APPLICATION">gbde</b> 也可以用来加密 <tt class="FILENAME">/home</tt> 和 <ttclass="FILENAME">/var/mail</tt>, 但是这需要更多的复杂命令来执行。</p><div class="PROCEDURE"><ol type="1"><li><p><b>添加新的硬盘</b></p><p>添加新的硬盘到系统中可以查看在 <a href="disks-adding.html">µÚ 16.3 节</a>中的说明。 这个例子的目的是说明一个新的硬盘分区已经添加到系统中如: <ttclass="FILENAME">/dev/ad4s1c</tt>。在例子中 <tt class="FILENAME">/dev/ad0s1<varclass="REPLACEABLE">*</var></tt> 设备代表系统中存在的标准 FreeBSD 分区。</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">ls /dev/ad*</kbd>/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c/dev/ad0s1a /dev/ad0s1d /dev/ad4</pre></li><li><p><b>创建一个目录来保存 gbde Lock 文件</b></p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">mkdir /etc/gbde</kbd></pre><p><b class="APPLICATION">gbde</b> lock 文件包含了 <b class="APPLICATION">gbde</b>需要访问的加密分区的信息。 没有 lock 文件, <b class="APPLICATION">gbde</b>将不能解密包含在加密分区上的数据。 每个加密分区使用一个独立的 lock 文件。</p></li><li><p><b>初始化 gbde 分区</b></p><p>一个 <b class="APPLICATION">gbde</b> 分区在使用前必须被初始化,这个初始化过程只需要执行一次:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c</kbd></pre><p><span class="CITEREFENTRY"><span class="REFENTRYTITLE">gbde</span>(8)</span>将打开你的编辑器, 提示你去设置在一个模板文件中的配置变量。 使用 UFS1 或UFS2,设置扇区大小为 2048:</p><pre class="PROGRAMLISTING">$FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $## Sector size is the smallest unit of data which can be read or written.# Making it too small decreases performance and decreases available space.# Making it too large may prevent filesystems from working. 512 is the# minimum and always safe. For UFS, use the fragment size#sector_size = 2048[...]</pre><p><span class="CITEREFENTRY"><span class="REFENTRYTITLE">gbde</span>(8)</span>将让您输入两次用来加密数据的密钥短语。 两次输入的密钥必须相同。 <bclass="APPLICATION">gbde</b> 保护你数据的能力依靠你选择输入的密钥的质量。 <aid="AEN25354" name="AEN25354" href="#FTN.AEN25354"><spanclass="footnote">[1]</span></a></p><p><tt class="COMMAND">gbde init</tt> 命令为你的 <b class="APPLICATION">gbde</b>分区创建了一个 lock 文件, 在这个例子中存储在 <ttclass="FILENAME">/etc/gbde/ad4s1c</tt>中。</p><div class="CAUTION"><blockquote class="CAUTION"><p><b>注意</b><b class="APPLICATION">gbde</b> lock 文件<span class="emphasis"><iclass="EMPHASIS">必须</i></span>和加密分区上的内容一块备份。 当一个 lock文件被独自删除时, 不能确定一个 <b class="APPLICATION">gbde</b> 分区上的数据被解密过。没有 lock 文件,就是合法的磁盘所有者不经过大量细致的工作也将不能访问经过加密分区上的数据, 这是 <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">gbde</span>(8)</span>在设计时整体上不支持。</p></blockquote></div></li><li><p><b>把加密分区和内核进行关联</b></p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c</kbd></pre><p>在加密分区的初始化过程中您将被要求提供一个密码短语。 新的加密设备将在 <ttclass="FILENAME">/dev</tt> 中显示为 <tt class="FILENAME">/dev/device_name.bde</tt>:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">ls /dev/ad*</kbd>/dev/ad0 /dev/ad0s1b /dev/ad0s1e /dev/ad4s1/dev/ad0s1 /dev/ad0s1c /dev/ad0s1f /dev/ad4s1c/dev/ad0s1a /dev/ad0s1d /dev/ad4 /dev/ad4s1c.bde</pre></li><li><p><b>在加密设备上创建文件系统</b></p><p>当加密设备和内核进行关联后, 你就可以使用 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">newfs</span>(8)</span> 在此设备上创建文件系统, 使用 <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">newfs</span>(8)</span> 来初始化一个 UFS2文件系统比初始化一个 UFS1 文件系统还要快,摧荐使用 <var class="OPTION">-O2</var>选项。</p><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> <var class="OPTION">-O2</var> 选项在 FreeBSD 5.1-RELEASE或更新的版本中是默认的选项。</p></blockquote></div><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">newfs -U -O2 /dev/ad4s1c.bde</kbd></pre><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">newfs</span>(8)</span> 命令必须在一个 <bclass="APPLICATION">gbde</b> 分区上执行, 这个分区通过一个存在的 <ttclass="FILENAME"><var class="REPLACEABLE">*</var>.bde</tt> 设备名进行标识。</p></blockquote></div></li><li><p><b>挂接加密分区</b></p><p>为加密文件系统创建一个挂接点。</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">mkdir /private</kbd></pre><p>挂接加密文件系统。</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">mount /dev/ad4s1c.bde /private</kbd></pre></li><li><p><b>校验加密文件系统是否有效</b></p><p>加密的文件系统现在对于 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">df</span>(1)</span> 应该可见并可以使用。</p><pre class="SCREEN"><samp class="PROMPT">%</samp> <kbd class="USERINPUT">df -H</kbd>Filesystem Size Used Avail Capacity Mounted on/dev/ad0s1a 1037M 72M 883M 8% //devfs 1.0K 1.0K 0B 100% /dev/dev/ad0s1f 8.1G 55K 7.5G 0% /home/dev/ad0s1e 1037M 1.1M 953M 0% /tmp/dev/ad0s1d 6.1G 1.9G 3.7G 35% /usr/dev/ad4s1c.bde 150G 4.1K 138G 0% /private</pre></li></ol></div></div><div class="SECT2"><h2 class="SECT2"><a id="AEN25423" name="AEN25423">16.15.3.挂接已经存在的加密文件系统</a></h2><p>每次系统启动后, 在使用加密文件系统前必须和内核重新进行关联,校验错误和再次挂接。使用的命令必须由 <tt class="USERNAME">root</tt>用户来执行。</p><div class="PROCEDURE"><ol type="1"><li><p><b>关联 gbde 分区到内核</b></p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c</kbd></pre><p>您将被要求提供您在初始化加密 gbde 分区的过程中选定的密码短语。</p></li><li><p><b>校验文件系统错误</b></p><p>加密文件系统不能列在 <tt class="FILENAME">/etc/fstab</tt> 文件中进行自动加载,在加载前必须手动运行 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">fsck</span>(8)</span> 命令对文件系统进行错误检测。</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">fsck -p -t ffs /dev/ad4s1c.bde</kbd></pre></li><li><p><b>挂接加密文件系统</b></p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">mount /dev/ad4s1c.bde /private</kbd></pre><p>加密后的文件系统现在可以有效使用。</p></li></ol></div><div class="SECT3"><h3 class="SECT3"><a id="AEN25450" name="AEN25450">16.15.3.1.自动挂接加密文件系统</a></h3><p>可以创建一个脚本来自动进行关联、检测、和挂接一个加密分区,但是为了安全起见,脚本程序中不应该包含 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">gbde</span>(8)</span> 密码。 取而代之,摧荐这样的脚本要手工来运行,在要求提供密码时可以通过控制台或 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">ssh</span>(1)</span>。</p></div></div><div class="SECT2"><h2 class="SECT2"><a id="AEN25459" name="AEN25459">16.15.4. 用 gbde 进行加密保护</a></h2><p><span class="CITEREFENTRY"><span class="REFENTRYTITLE">gbde</span>(8)</span> 在 CBC模式上使用 128-bit AES 对扇区进行加密, 每个扇区在硬盘上的加密都使用不同的 AES 密钥。想了解更多的信息关于 <b class="APPLICATION">gbde</b>的设计,包括每个扇区的密钥是怎样从用户提供的密钥短语产生的, 请看 <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">gbde</span>(4)</span>。</p></div><div class="SECT2"><h2 class="SECT2"><a id="AEN25469" name="AEN25469">16.15.5. 兼容性问题</a></h2><p><span class="CITEREFENTRY"><span class="REFENTRYTITLE">sysinstall</span>(8)</span>是和 <b class="APPLICATION">gbde</b> 加密设备不兼容的。 在启动 <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">sysinstall</span>(8)</span> 时必须将 <ttclass="DEVICENAME"><var class="REPLACEABLE">*</var>.bde</tt>设备和内核进行分离,否则在初始化探测设备时将引起冲突。与加密设备进行分离在我们的例子中使用如下的命令:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">gbde detach /dev/ad4s1c</kbd></pre><p>也应该注意,作为 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">vinum</span>(4)</span> 不能使用 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">geom</span>(4)</span> 子系统, 您不能同时使用 <bclass="APPLICATION">gbde</b> 和 <b class="APPLICATION">vinum</b> 卷。</p></div></div><h3 class="FOOTNOTES">注</h3><table border="0" class="FOOTNOTES" width="100%"><tr><td align="LEFT" valign="TOP" width="5%"><a id="FTN.AEN25354" name="FTN.AEN25354"href="disks-encrypting.html#AEN25354"><span class="footnote">[1]</span></a></td><td align="LEFT" valign="TOP" width="95%"><p>这个提示教你怎样选择一个安全易记的密钥短语, 请看 <ahref="http://world.std.com/~reinhold/diceware.html" target="_top">Diceware Passphrase</a>网站。</p></td></tr></table><div class="NAVFOOTER"><hr align="LEFT" width="100%" /><table summary="Footer navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><td width="33%" align="left" valign="top"><a href="quotas.html"accesskey="P">后退</a></td><td width="34%" align="center" valign="top"><a href="index.html"accesskey="H">起点</a></td><td width="33%" align="right" valign="top"><a href="vinum-vinum.html"accesskey="N">前进</a></td></tr><tr><td width="33%" align="left" valign="top">文件系统配额</td><td width="34%" align="center" valign="top"><a href="disks.html"accesskey="U">上一级</a></td><td width="33%" align="right" valign="top">Vinum 卷管理程序</td></tr></table></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -