FreeBSD 中文手册
FreeBSD 中文社区
  • FreeBSD 中文手册
  • 编辑日志
  • 译者说明
  • FreeBSD 中文手册
  • 概述
  • 前言
    • 致读者
    • 第四版
    • 第三版
    • 第二版(2004)
    • 第一版(2001)
    • 本书的组织结构
    • 本书中使用的一些约定
    • 致谢
  • 第一部分:快速开始
  • 第1章 简介
    • 1.1.概述
    • 1.2.欢迎来到 FreeBSD!
    • 1.3.关于 FreeBSD 项目
  • 第2章 安装 FreeBSD
    • 2.1.概述
    • 2.2.最低硬件要求
    • 2.3.安装前的准备工作
    • 2.4.开始安装
    • 2.5.使用 bsdinstall
    • 2.6.分配磁盘空间
    • 2.7.获取安装文件
    • 2.8.账户、时区、服务和安全
    • 2.9.故障排除
    • 2.10.使用 Live CD
  • 第3章 FreeBSD 基础
    • 3.1.概述
    • 3.2.虚拟控制台和终端
    • 3.3.用户和基本账户管理
    • 3.4.权限
    • 3.5.目录结构
    • 3.6.磁盘结构
    • 3.7.文件系统的挂载与卸载
    • 3.8.进程和守护进程
    • 3.9.Shell
    • 3.10.文本编辑器
    • 3.11.设备和设备节点
    • 3.12.手册页
  • 第4章 安装应用程序:软件包和 Ports
    • 4.1.概述
    • 4.2.软件安装的概述
    • 4.3.寻找所需的应用程序
    • 4.4.使用 pkg 管理二进制包
    • 4.5.使用 Ports
    • 4.6.使用 Poudriere 构建软件包
    • 4.7.安装后的注意事项
    • 4.8.如何处理损坏的 port
  • 第5章 X Window 系统
    • 5.1.概述
    • 5.2.安装 Xorg
    • 5.3.显卡驱动
    • 5.4.Xorg 配置
    • 5.5.在 X11 中使用字体
  • 第6章 FreeBSD 中的 Wayland
    • 6.1.简介
    • 6.2.Wayland 概述
    • 6.3.Wayfire 混成器
    • 6.4.Hikari 混成器
    • 6.5.Sway 混成器
    • 6.6.使用 Xwayland
    • 6.7.使用 VNC 进行远程连接
    • 6.8.Wayland 登录管理器
    • 6.9.实用工具
  • 第7章 网络
    • 7.1.概述
    • 7.2.设置网络
    • 7.3.有线网络
    • 7.4.无线网络
    • 7.5.主机名
    • 7.6.DNS
    • 7.7.故障排除
  • 第二部分:常见任务
  • 第8章 桌面环境
    • 8.1.概述
    • 8.2.桌面环境
    • 8.3.浏览器
    • 8.4.开发工具
    • 8.5.桌面办公应用
    • 8.6.文档阅读器
    • 8.7.财务
  • 第9章 多媒体
    • 9.1.概述
    • 9.2.设置声卡
    • 9.3.音频播放器
    • 9.4.视频播放器
    • 9.5.视频会议
    • 9.6.图像扫描仪
  • 第10章 配置 FreeBSD 内核
    • 10.1.概述
    • 10.2.为什么要构建定制内核
    • 10.3.浏览系统硬件
    • 10.4.配置文件
    • 10.5.构建并安装定制内核
    • 10.6.如果发生了错误
  • 第11章 打印
    • 11.1.快速入门
    • 11.2.连接打印机
    • 11.3.常见的页面描述语言(PDL)
    • 11.4.直接打印
    • 11.5.LPD(行式打印机程序)
    • 11.6.其他打印系统
  • 第12章 Linux 二进制兼容层
    • 12.1.概述
    • 12.2.配置 Linux 二进制兼容层
    • 12.3.Linux 用户空间
    • 12.4.高级主题
  • 第13章 WINE
    • 13.1.概述
    • 13.2.WINE 概述和概念
    • 13.3.在 FreeBSD 上安装 WINE
    • 13.4.在 FreeBSD 上运行第一个 WINE 程序
    • 13.5.配置 WINE 安装程序
    • 13.6.WINE 图形化用户管理界面
    • 13.7.多用户 FreeBSD 与 WINE
    • 13.8.FreeBSD 上的 WINE 常见问题
  • 第三部分:系统管理
  • 第14章 配置与优化
    • 14.1.概述
    • 14.2.配置文件
    • 14.3.管理 FreeBSD 中的服务
    • 14.4.Cron 和 Periodic
    • 14.5.配置系统日志
    • 14.6.电源和资源管理
    • 14.7.添加交换空间
  • 第15章 FreeBSD 的引导过程
    • 15.1.概述
    • 15.2.FreeBSD 的引导过程
    • 15.3.Device Hints
    • 15.4.关机流程
  • 第16章 安全
    • 16.1.概述
    • 16.2.简介
    • 16.3.账户安全
    • 16.4.入侵检测系统(IDS)
    • 16.5.安全等级
    • 16.6.文件标志位
    • 16.7.OpenSSH
    • 16.8.OpenSSL
    • 16.9.Kerberos
    • 16.10.TCP 封装器(TCP Wrapper)
    • 16.11.访问控制列表(ACL)
    • 16.12.Capsicum
    • 16.13.进程记账
    • 16.14.资源限制
    • 16.15.监控第三方安全问题
    • 16.16.FreeBSD 安全公告
  • 第17章 jail 与容器
    • 17.1.概述
    • 17.2.jail 的类型
    • 17.3.主机配置
    • 17.4.传统 jail(厚 jail)
    • 17.5.瘦 jail
    • 17.6.管理 jail
    • 17.7.更新 jail
    • 17.8.jail 资源限制
    • 17.9.jail 管理器与容器
  • 第18章 强制访问控制
    • 18.1.概述
    • 18.2.关键术语
    • 18.3.了解 MAC 标签
    • 18.4.规划安全配置
    • 18.5.可用的 MAC 策略
    • 18.6.用户锁定
    • 18.7.MAC Jail 中的 Nagios
    • 18.8.MAC 框架的故障排除
  • 第19章 安全事件审计
    • 19.1.概述
    • 19.2.关键术语
    • 19.3.审计配置
    • 19.4.使用审计跟踪
  • 第20章 存储
    • 20.1.概述
    • 20.2.添加磁盘
    • 20.3.调整和增加磁盘大小
    • 20.4.USB 存储设备
    • 20.5.创建和使用 CD
    • 20.6.创建和使用 DVD
    • 20.7.创建和使用软盘
    • 20.8.备份的基础知识
    • 20.9.内存盘
    • 20.10.文件系统快照
    • 20.11.磁盘配额
    • 20.12.加密磁盘分区
    • 20.13.加密交换分区
    • 20.14.高可用性存储(HAST)
  • 第21章 GEOM: 模块化磁盘转换框架
    • 21.1.概述
    • 21.2.RAID0——条带
    • 21.3.RAID1——镜像
    • 21.4.RAID3——带有专用奇偶校验的字节级条带
    • 21.5.软件 RAID 设备
    • 21.6.GEOM Gate 网络设备
    • 21.7.为磁盘设备添加卷标
    • 21.8.通过 GEOM 实现 UFS 日志
  • 第22章 Z 文件系统(ZFS)
    • 22.1.是什么使 ZFS 与众不同
    • 22.2.快速入门指南
    • 22.3.zpool 管理
    • 22.4.zfs 管理
    • 22.5.委托管理
    • 22.6.高级主题
    • 22.7.更多资源
    • 22.8.ZFS 特性和术语
  • 第23章 其他文件系统
    • 23.1.概述
    • 23.2.Linux® 文件系统
    • 23.3.Windows® 文件系统
    • 23.4.MacOS® 文件系统
  • 第24章 虚拟化
    • 24.1.概述
    • 24.2.使用 macOS® 上的 Parallels Desktop 安装 FreeBSD
    • 24.3.使用 macOS® 上的 VMware Fusion 安装 FreeBSD
    • 24.4.使用 VirtualBox™ 安装 FreeBSD
    • 24.5.在 FreeBSD 上安装 VirtualBox™
    • 24.6.使用 FreeBSD 上的 QEMU 虚拟化
    • 24.7.使用 FreeBSD 上的 bhyve 虚拟机
    • 24.8.基于 FreeBSD 的 Xen™ 虚拟机
  • 第25章 本地化——i18n/L10n 的使用和设置
    • 25.1.概述
    • 25.2.使用本地化
    • 25.3.寻找 i18n 应用程序
    • 25.4.特定语言的区域配置
  • 第26章 FreeBSD 更新与升级
    • 26.1.概述
    • 26.2.更新 FreeBSD
    • 26.3.更新 Bootcode
    • 26.4.更新文档
    • 26.5.追踪开发分支
    • 26.6.从源代码更新 FreeBSD
    • 26.7.多台机器的追踪
    • 26.8.在非 FreeBSD 主机上进行构建
  • 第27章 DTrace
    • 27.1.概述
    • 27.2.实现上的差异
    • 27.3.开启 DTrace 支持
    • 27.4.启用内核外部模块 DTrace
    • 27.5.使用 DTrace
  • 第28章 USB 设备模式/USB OTG
    • 28.1.概述
    • 28.2.USB 虚拟串行端口
    • 28.3.USB 设备模式网络接口
    • 28.4.USB 虚拟存储设备
  • 第四部分:网络通讯
  • 第29章 串行通信
    • 29.1.概述
    • 29.2.串行术语和硬件
    • 29.3.终端
    • 29.4.拨入服务
    • 29.5.拨出服务
    • 29.6.设置串行控制台
  • 第30章 PPP
    • 30.1.概述
    • 30.2.配置 PPP
    • 30.3.PPP 连接的故障排除
    • 30.4.使用以太网 PPP(PPPoE)
    • 30.5.使用 ATM 上的 PPP (PPPoA)
  • 第31章 电子邮件
    • 31.1.概述
    • 31.2.邮件组件
    • 31.3.DragonFly 邮件代理(DMA)
    • 31.4.Sendmail
    • 31.5.修改邮件传输代理
    • 31.6.邮件用户代理
    • 31.7.高级主题
  • 第32章 网络服务器
    • 32.1.概述
    • 32.2.inetd 超级服务器
    • 32.3.网络文件系统(NFS)
    • 32.4.网络信息系统(NIS)
    • 32.5.轻型目录访问协议(LDAP)
    • 32.6.动态主机设置协议(DHCP)
    • 32.7.域名系统(DNS)
    • 32.8.零配置网络(mDNS/DNS-SD)
    • 32.9.Apache HTTP 服务器
    • 32.10.文件传输协议(FTP)
    • 32.11.用于 Microsoft® Windows® 客户端的文件和打印服务(Samba)
    • 32.12.用 NTP 进行时钟同步
    • 32.13.iSCSI target 和 initiator 的配置
  • 第33章 防火墙
    • 33.1.概述
    • 33.2.防火墙的概念
    • 33.3.PF
    • 33.4.IPFW
    • 33.5.IPFILTER(IPF)
    • 33.6.Blacklistd
  • 第34章 高级网络
    • 34.1.概述
    • 34.2.网关和路由
    • 34.3.虚拟主机
    • 34.4.无线高级身份验证
    • 34.5.无线自组织(Ad-hoc)模式
    • 34.6.USB 网络共享
    • 34.7.蓝牙
    • 34.8.桥接
    • 34.9.链路聚合与故障转移
    • 34.10.使用 PXE 进行无盘操作
    • 34.11.共用地址冗余协议(CARP)
    • 34.12.VLAN
  • 第五部分:附录
  • 附录 A.获取 FreeBSD
    • A.1.镜像站
    • A.2.使用 Git
    • A.3.使用 Subversion
    • A.4.光盘
  • 附录 B.书目
    • B.1.FreeBSD 相关书籍
    • B.2.安全性参考文献
    • B.3.UNIX 历史
    • B.4.期刊与杂志
  • 附录 C.网络资源
    • C.1.网站
    • C.2.邮件列表
    • C.3.Usenet 新闻组
  • 附录 D.OpenPGP 密钥
    • D.1.官方成员
  • 术语表
  • 后记
由 GitBook 提供支持

FreeBSD 中文社区

在本页
  • 20.12.1. 使用 gbde 进行磁盘加密
  • 20.12.2. 使用 geli 进行磁盘加密

这有帮助吗?

在GitHub上编辑
导出为 PDF
  1. 第20章 存储

20.12.加密磁盘分区

上一页20.11.磁盘配额下一页20.13.加密交换分区

最后更新于6天前

这有帮助吗?

20.12.1. 使用 gbde 进行磁盘加密

工具的目标是为攻击者提供极大的挑战,防止其访问 冷存储 设备的内容。但是,如果计算机在运行时被攻击并且存储设备已被附加,或者攻击者拥有有效的密码短语,它将不会保护存储设备的内容。因此,提供物理安全性是非常重要的,同时也需要保护加密机制所使用的密码短语。

此工具提供了几个障碍来保护每个磁盘扇区中存储的数据。它使用 128 位 AES CBC 模式加密磁盘扇区的内容。磁盘上的每个扇区都使用不同的 AES 密钥进行加密。有关加密设计的更多信息,包括扇区密钥是如何从用户提供的密码短语派生的,请参阅 。

FreeBSD 提供了内核模块 gbde,可以使用以下命令加载:

# kldload geom_bde

如果使用的是自定义内核配置文件,请确保它包含以下行:

options GEOM_BDE

以下示例演示了如何向系统添加一块新的硬盘,该硬盘将持有一个加密分区,并将其挂载为 /private。

过程:使用 gbde 加密分区

  1. 添加新硬盘 按照 中的说明将新硬盘安装到系统中。对于本示例,已添加新硬盘分区 /dev/ad4s1c,/dev/ad0s1* 代表现有的标准 FreeBSD 分区。

    # ls /dev/ad*
    /dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
    /dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
    /dev/ad0s1a     /dev/ad0s1d     /dev/ad4
  2. 创建用于存储 gbde 锁文件的目录

    # mkdir /etc/gbde

    gbde 锁文件包含 gbde 访问加密分区所需的信息。如果没有访问锁文件,gbde 将无法解密加密分区中的数据,且不支持进行任何手动干预。每个加密分区使用一个单独的锁文件。

  3. 初始化 gbde 分区 在使用之前,必须初始化 gbde 分区。此初始化只需要执行一次。执行此命令后将打开默认编辑器,以便在模板中设置各种配置选项。对于 UFS 文件系统,将 sector_size 设置为 2048:

    # gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c.lock
    #
    # 扇区大小是可以读取或写入的最小数据单位。
    # 将其设置得过小会降低性能并减少可用空间。
    # 将其设置得过大可能会导致文件系统无法正常工作。512 是
    # 最小值且始终安全。对于 UFS,请使用碎片大小
    
    sector_size	=	2048
    [...]

    保存编辑后,用户需要两次输入在初始化加密分区时选择的密码短语。密码短语必须一致。gbde 保护数据的能力完全依赖于密码短语的质量。有关如何选择既安全又易于记住的密码短语的提示,请参见 。

    此初始化会为 gbde 分区创建一个锁文件。在本示例中,它存储为 /etc/gbde/ad4s1c.lock。锁文件必须以 ".lock" 结尾,以便 /etc/rc.d/gbde 启动脚本能够正确检测。

    注意

    锁文件 必须 与任何加密分区的内容一起备份。没有锁文件,合法所有者将无法访问加密分区上的数据。

  4. 将加密分区附加到内核

    # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c.lock

    此命令将提示输入在加密分区初始化时选择的密码短语。新加密设备将出现在 /dev 目录中,名称为 /dev/device_name.bde:

    # ls /dev/ad*
    /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
  5. 在加密设备上创建文件系统 待加密设备附加到内核,就可以在设备上创建文件系统。此示例创建一个启用了软更新的 UFS 文件系统。确保指定具有 *.bde 扩展名的分区:

    # newfs -U /dev/ad4s1c.bde
  6. 挂载加密分区 创建一个挂载点并挂载加密文件系统:

    # mkdir /private
    # mount /dev/ad4s1c.bde /private
  7. 验证加密文件系统是否可用 现在,加密文件系统应该可见并可用:

    % df -H
    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

每次启动后,必须手动将加密文件系统重新附加到内核、检查错误并挂载,才能使用文件系统。为了配置这些步骤,可以将以下行添加到 /etc/rc.conf:

gbde_autoattach_all="YES"
gbde_devices="ad4s1c"
gbde_lockdir="/etc/gbde"

当心

sysinstall 与 gbde 加密的设备不兼容。所有 *.bde 设备在启动 sysinstall 之前必须从内核中分离,否则它将在初始设备探测期间崩溃。要分离示例中使用的加密设备,请使用以下命令:

# gbde detach /dev/ad4s1c

20.12.2. 使用 geli 进行磁盘加密

另一种可用的加密 GEOM 类是 geli。该控制实用程序提供了一些功能,并使用不同的加密方案进行工作。它提供以下特性:

  • 支持多种加密算法,如 AES-XTS、AES-CBC 和 Camellia-CBCAES。

  • 允许加密根分区。在系统启动时,将要求输入用于访问加密根分区的密码。

  • 允许使用两个独立的密钥。

  • 它执行简单的扇区到扇区的加密,因此速度很快。

  • 允许备份和恢复主密钥。如果用户销毁了他们的密钥,仍然可以通过恢复备份的密钥来访问数据。

  • 允许使用随机的一次性密钥附加磁盘,这对于交换分区和临时文件系统非常有用。

以下示例描述了如何生成一个密钥文件,该文件将作为加密提供者的主密钥的一部分,挂载在 /private 下。该密钥文件将提供一些随机数据,用于加密主密钥。主密钥也将由密码保护。提供者的扇区大小将设置为 4kB。该示例描述了如何附加到 geli 提供者,如何在其上创建文件系统、挂载、操作并最终如何卸载它。

过程:使用 geli 加密分区

  1. 加载 geli 支持geli 支持作为可加载的内核模块提供。要配置系统在启动时自动加载该模块,请将以下行添加到 /boot/loader.conf:

    geom_eli_load="YES"

    要立即加载内核模块:

    # kldload geom_eli

    对于自定义内核,确保内核配置文件包含以下行:

    options GEOM_ELI
    device crypto
  2. 生成主密钥 以下命令生成一个主密钥,所有数据都将使用该密钥进行加密。此密钥不可更改。它不会直接使用,而是使用一个或多个用户密钥对其进行加密。用户密钥由一个可选的组合构成,包括来自文件 /root/da2.key 的随机字节和/或密码。在此例中,密钥文件的数据源是 /dev/random。此命令还将提供者的扇区大小设置为 4kB,以提高性能:

    # dd if=/dev/random of=/root/da2.key bs=64 count=1
    # geli init -K /root/da2.key -s 4096 /dev/da2
    输入新密码:
    再次输入新密码:

    使用密码和密钥文件并不是强制性的,可以单独使用任何一种方法来保护主密钥。

    如果密钥文件作为 "-" 提供,将使用标准输入。例如,以下命令生成三个密钥文件:

    # cat keyfile1 keyfile2 keyfile3 | geli init -K - /dev/da2
  3. 使用生成的密钥附加提供者 要附加提供者,请指定密钥文件、磁盘名称和密码:

    # geli attach -k /root/da2.key /dev/da2
    输入密码:

    这将创建一个新的设备,扩展名为 .eli:

    # ls /dev/da2*
    /dev/da2  /dev/da2.eli
  4. 创建新文件系统 接下来,使用 UFS 文件系统格式化该设备,并将其挂载到现有挂载点:

    # dd if=/dev/random of=/dev/da2.eli bs=1m
    # newfs /dev/da2.eli
    # mount /dev/da2.eli /private

    加密文件系统现在应该可以使用:

    # df -H
    Filesystem     Size   Used  Avail Capacity  Mounted on
    /dev/ad0s1a    248M    89M   139M    38%    /
    /devfs         1.0K   1.0K     0B   100%    /dev
    /dev/ad0s1f    7.7G   2.3G   4.9G    32%    /usr
    /dev/ad0s1d    989M   1.5M   909M     0%    /tmp
    /dev/ad0s1e    3.9G   1.3G   2.3G    35%    /var
    /dev/da2.eli   150G   4.1K   138G     0%    /private

完成对加密分区的操作后,如果不再需要 /private 分区,建议通过卸载并将 geli 加密分区从内核中分离来将该设备放入冷存储:

# umount /private
# geli detach da2.eli

提供了一个 rc.d 脚本,以简化在启动时挂载 geli 加密设备。对于此示例,请将以下行添加到 /etc/rc.conf:

geli_devices="da2"
geli_da2_flags="-k /root/da2.key"

这要求在启动时通过控制台输入密码短语。输入正确的密码短语后,加密分区将自动挂载。更多 gbde 启动选项可以在 中查看。

利用 框架,并在可用时自动使用加密硬件。

更多功能和使用示例可以参考 。

这将配置 /dev/da2 作为具有主密钥 /root/da2.key 的 geli 提供者。在系统关闭之前,系统将自动将提供者从内核中分离。在启动过程中,脚本将提示输入密码,然后附加提供者。启动过程中的其他内核消息可能会在密码提示之前或之后显示。如果启动过程似乎停滞,请仔细查看其他消息中的密码提示。输入正确的密码后,提供者将被附加。然后,文件系统将挂载,通常通过 /etc/fstab 中的条目进行挂载。有关如何配置文件系统以在启动时挂载的说明,请参考 。

gbde(4)
gbde(4)
添加磁盘
http://world.std.com/~reinhold/diceware.htm
rc.conf(5)
crypto(9)
geli(8)
“挂载和卸载文件系统”