Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

14.3. 使用可信镜像

在云环境中,用户处理预安装的镜像或他们上传的映像。在这两种情况下,用户都应该能够确保它们使用的镜像没有被篡改。能够验证镜像是安全性的基础。需要信任链,从镜像源到使用它的目的地。这可以通过对从可信源获取的镜像签名,并在使用前验证签名来实现。下面将讨论获取和创建验证的镜像的各种方法,然后介绍镜像签名验证功能。

14.3.1. 创建镜像

OpenStack 文档提供如何创建和将镜像上传到镜像服务的指导。另外,假设您有一个安装和强化客户机操作系统的过程。以下项目将提供有关如何将镜像传输到 OpenStack 的其他指导。获取镜像有多种选项。每种方法均有特定的步骤,可以帮助验证镜像的来源。

  • 选项 1: 包含来自可信源的引导介质.例如,您可以从官方的红帽源下载镜像,然后执行额外的 checksum 验证。
  • 选项 2: 使用 OpenStack 虚拟机镜像指南。在这种情况下,您希望遵循您的组织操作系统强化指南。
  • 选项 3 :使用自动化镜像构建器。以下示例使用 Oz 镜像构建器。OpenStack 社区最近创建了名为 disk-image-builder 的较新工具,它尚未遭遇安全评估。

在本例中,RHEL 6 CCE-26976-1 帮助在 Oz 中实施 NIST 800-53 第 AC-19 (d)。

<template>
<name>centos64</name>
<os>
  <name>RHEL-6</name>
  <version>4</version>
  <arch>x86_64</arch>
  <install type='iso'>
  <iso>http://trusted_local_iso_mirror/isos/x86_64/RHEL-6.4-x86_64-bin-DVD1.iso</iso>
  </install>
  <rootpw>CHANGE THIS TO YOUR ROOT PASSWORD</rootpw>
</os>
<description>RHEL 6.4 x86_64</description>
<repositories>
  <repository name='epel-6'>
  <url>http://download.fedoraproject.org/pub/epel/6/$basearch</url>
  <signed>no</signed>
  </repository>
</repositories>
<packages>
  <package name='epel-release'/>
  <package name='cloud-utils'/>
  <package name='cloud-init'/>
</packages>
<commands>
  <command name='update'>
  yum update
  yum clean all
  sed -i '/^HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth0
  echo -n > /etc/udev/rules.d/70-persistent-net.rules
  echo -n > /lib/udev/rules.d/75-persistent-net-generator.rules
  chkconfig --level 0123456 autofs off
  service autofs stop
  </command>
</commands>
</template>

考虑避免手动镜像构建过程,因为它很复杂且容易出错。此外,使用 Oz 等自动化系统进行镜像构建,或用于启动后镜像强化的配置管理实用程序(如 Chef 或 Puppet),使您能够生成一致的镜像,以及跟踪基础镜像合规性到其相应的强化指南。

如果订阅公共云服务,您应该与云供应商进行检查,以了解用于生成其默认镜像的流程概述。如果供应商允许您上传自己的镜像,则需要确保在使用它来创建实例之前验证您的镜像没有被修改。要做到这一点,请参考以下 _ 验证镜像签名_ 一节,或者以下段落(如果无法使用签名)。

镜像服务(glance)用于将镜像上传到节点上的 Compute 服务。此传输应该通过 TLS 进一步强化。镜像位于节点上后,会使用基本校验和进行检查,然后根据要启动的实例大小扩展其磁盘。如果稍后一次启动同一镜像,在此节点上使用相同的实例大小,它将从同一扩展的镜像启动。由于在启动前,这个扩展的镜像不会被重新验证,因此存在风险。除非在生成的镜像中手动检查文件,否则用户不会了解这个用户。要帮助缓解这个问题,请参阅有关验证镜像签名的主题部分。

14.3.2. 验证镜像签名

与镜像签名相关的某些功能现在包括在 OpenStack 中。从 Red Hat OpenStack Platform 13 开始,镜像服务可以验证这些签名的镜像,并提供完整的信任链,计算服务可以选择在镜像引导前执行镜像签名验证。在镜像引导前成功签名验证可确保签名的镜像没有改变。启用此功能后,可以检测到对镜像的未授权修改(例如,将镜像修改为包含恶意软件或 rootkits)。

您可以通过在 /var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf 文件中将 verify_glance_signatures 标志设置为 True 来启用实例签名验证。启用后,计算服务会在从 glance 检索时自动验证签名的实例。如果这个验证失败,引导过程不会启动。

注意

启用这个功能后,没有签名(未签名镜像)的镜像也会失败验证,引导过程不会启动。