FreeBSD 提供了易于配置的交换区加密机制。
随所用的 FreeBSD 版本, 可用的配置选项会有所不同,
而配置方法也会有一些差异。 可以使用 gbde(8) 和 geli(8)
两种加密系统来进行交换区的加密操作。 前面所说的这两种加密系统,
都用到了 encswap
这个
rc.d 脚本。
在前面的小节 如何加密磁盘分区 中, 已经就不同的加密系统之间的区别进行了简单的讨论。
与加密磁盘分区类似, 加密交换区有助于保护敏感信息。 为此, 我们不妨考虑一个需要处理敏感信息的程序, 例如, 它需要处理口令。 如果这些口令一直保持在物理内存中, 则一切相安无事。 然而, 如果操作系统开始将内存页换出到交换区, 以便为其他应用程序腾出内存时, 这些口令就可能以未加密的形式写到磁盘上, 并为攻击者所轻易获得。 加密交换区能够有效地解决这类问题。
在本节余下的部分中, 我们约定使用 ad0s1b
作为交换区。
到目前为止, 交换区仍是未加密的。 很可能其中已经存有明文形式的口令或其他敏感数据。 要纠正这一问题, 首先应使用随机数来覆盖交换分区的数据:
#
dd if=/dev/random of=/dev/ad0s1b bs=1m
/etc/fstab
中与交换区对应的行中, 设备名应追加
.bde
后缀:
# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1b.bde none swap sw 0 0
另一种方法是使用 geli(8) 来达到加密交换区的目的,
其过程与使用 gbde(8) 大体相似。 此时, 在 /etc/fstab
中交换区对应的行中, 设备名应追加
.eli
后缀:
# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1b.eli none swap sw 0 0
geli(8) 默认情况下使用密钥长度为 256-位的 AES 加密算法。
当然, 这些默认值是可以通过 /etc/rc.conf
中的
geli_swap_flags
选项来修改的。 下面的配置表示让 rc.d 脚本
encswap
创建一个 geli(8) 交换区,
在其上使用密钥长度为 128-位 的 Blowfish 加密算法, 4 kilobytes
的扇区尺寸, 并采用 “最后一次关闭时卸下” 的策略:
geli_swap_flags="-e blowfish -l 128 -s 4096 -d"
请参见 geli(8) 联机手册中关于 onetime
命令的说明, 以了解其他可用的选项。
本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读
文档,如不能解决再联系
<[email protected]>.
关于本文档的问题请发信联系
<[email protected]>.