Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

16.6. 随机数字生成器设备

随机数生成器对于操作系统安全性非常重要。为了保护虚拟操作系统,红帽企业 Linux 7 包含 virtio-rng,这是一个虚拟硬件随机数生成器设备,可根据需要为 guest 提供全新的熵。
在主机物理计算机上,硬件 RNG 接口在 /dev/hwrng 处创建一个 chardev,它可以打开,然后从主机物理机器读取提取熵。在与 rngd 守护进程的合作中,主机物理计算机中的熵可以路由到客户机虚拟机的 /dev/random,这是随机性的主要来源。
当键盘、鼠标和其他输入等设备在客户机虚拟机上生成足够的熵时,使用随机数生成器特别有用。虚拟随机数生成器设备允许主机物理计算机将熵传递到客户端虚拟机操作系统。 此过程可以通过命令行或 virt-manager 接口执行。具体步骤请查看以下操作。有关 virtio-rng 的详情请参考 Red Hat Enterprise Linux 虚拟机:访问随机数字 Made Easy

过程 16.11. 使用虚拟机管理器实施 virtio-rng

  1. 关闭客户机虚拟机。
  2. 选择 guest 虚拟机并从 编辑 菜单中选择 Virtual Machine Details,以打开指定 guest 虚拟机的 Details 窗口。
  3. 添加硬件 按钮。
  4. Add New Virtual Hardware 窗口中,选择 RNG 打开 Random Number Generator 窗口。

    图 16.20. 随机数字生成器窗口

    随机数字生成器窗口
    输入预期参数,然后在完成时点击 Finish。参数在 virtio-rng 元素 中进行说明。

过程 16.12. 使用命令行工具实施 virtio-rng

  1. 关闭客户机虚拟机。
  2. 使用 virsh edit domain-name 命令,为所需的 guest 虚拟机打开 XML 文件。
  3. 编辑 <devices> 元素以包括以下内容:

    图 16.21. 随机数生成器设备

    
      ...
      <devices>
        <rng model='virtio'>
          <rate period='2000' bytes='1234'/>
          <backend model='random'>/dev/random</backend>
          <!-- OR -->
          <backend model='egd' type='udp'>
            <source mode='bind' service='1234'/>
            <source mode='connect' host='1.2.3.4' service='1234'/>
          </backend>
        </rng>
      </devices>
      ...
    随机数字生成器设备允许以下 XML 属性和元素:

    virtio-rng 元素

    • <model> - 必需的 model 属性指定提供 RNG 设备的类型。
    • <后端模型> - <后端> 元素指定用于客户机的熵源。源模型使用 model 属性进行配置。支持的源模型包括 'random''egd'
      • < <backend> model='random'> - 此后端类型需要一个非阻塞字符设备作为输入。此类设备的示例为 /dev/random/dev/urandom。文件名被指定为 <backend> 元素的内容。如果没有指定文件名,则使用虚拟机监控程序默认。
      • <backend model='egd'> - 这个后端使用 EGD 协议连接到源。源指定为字符设备。如需更多信息,请参阅字符设备主机物理机器接口。