在现代信息技术环境中,确保系统的性和一致性是每个组织的关键任务。为了实现这一目标,许多企业选择使用Packer工具在Azure云中创建自定义镜像,并应用CIS(互联网中心)基准进行加固。本文将详细介绍如何使用Packer在Azure云中实现CIS加固,包括安装Packer、配置Packer流水线、运行Packer流水线以及生成终的黄金镜像。
一、安装Packer
Packer是一个轻量级的开源工具,用于为常用的操作系统(如Windows、Linux)创建镜像,同时它也能支持多种云平台(如AWS、Azure、阿里云等)。在开始使用Packer之前,我们需要先在我们的环境中安装Packer。

在Linux服务器上安装Packer的步骤如下:
1. 使用yum工具安装Packer:
yum install y yumutilsyumconfigmanager addrepo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
yum y install packer
2. 注意:系统默认有一个名为packer的命令,这是Arch的包管理工具的旧名称,而不是HashiCorp的Packer。所以默认的packer命令已经被占用了,可以使用一定路径或者重命名再使用:
[root@localhost ~] whereis packerpacker: /usr/bin/packer /usr/sbin/packer
在这里,我们使用/usr/bin/packer。
二、配置Packer流水线
在安装完Packer之后,我们需要配置Packer流水线。在当前目录下,配置如下文件:
1. 创建主配置文件azure.pkr.hcl,定义执行的流水线步骤:
packer { required_plugins {
azure = {
version = "=2.0.1"
source = "github.com/hashicorp/azure"
}
}
source "azurearm" "linux" {
client_id = var.client_id
client_secret = var.client_secret
subscription_id = var.subscription_id
tenant_id = var.tenant_id
cloud_environment_name = var.cloud_environment_name
}
2. 定义变量赋值配置文件values.auto.pkrvars.hcl(赋值内容根据实际项目填写):
variable "client_id" { type = string
variable "client_secret" {
type = string
variable "subscription_id" {
type = string
variable "tenant_id" {
type = string
variable "cloud_environment_name" {
type = string
}
3. 定义变量定义配置文件variables.pkr.hcl:
variable "client_id" { type = string
variable "client_secret" {
type = string
variable "subscription_id" {
type = string
variable "tenant_id" {
type = string
variable "cloud_environment_name" {
type = string
}
三、运行Packer流水线
在配置完Packer流水线之后,我们可以运行Packer流水线来生成镜像。运行命令如下:
/usr/bin/packer init .
运行上述命令后,Packer会根据配置文件中的步骤在Azure云中创建虚拟机,并执行Shell脚本来初始化系统配置。完成后,生成的黄金镜像会被回传至共享镜像库(SIG)。
四、Packer终效果
通过运行Packer流水线,我们可以在Azure中生成终的黄金镜像。基于该镜像,我们可以创建新的虚拟机。后续任何更新,都可以通过调整Packer流水线来完成镜像版本的迭代,十分高效和便利。
此外,Packer生成的镜像也可以与Terraform或Pulumi集成,进一步简化基础设施的管理和部署。以下是相关的参考代码:
provider "azurerm" { features = {}
data "azurerm_shared_image_gallery_image" "example" {
name = "yourimagename"
resource_group_name = "yourresourcegroup"
resource "azurerm_virtual_machine" "example" {
name = "examplevm"
resource_group_name = "yourresourcegroup"
location = "yourlocation"
size = "Standard_DS2_v2"
admin_username = "yourusername"
admin_password = "yourpassword"
network_interface_ids = [azurerm_network_interface.example.id]
storage_image_reference {
publisher = data.azurerm_shared_image_gallery_image.example.publisher
offer = data.azurerm_shared_image_gallery_image.example.offer
sku = data.azurerm_shared_image_gallery_image.example.sku
version = data.azurerm_shared_image_gallery_image.example.version
}
os_profile {
computer_name = "examplevm"
admin_username = "yourusername"
admin_password = "yourpassword"
}
os_profile_linux_config {
disable_password_authentication = false
}
}
五、CIS标准与Puppet模块
CIS标准指的是由互联网中心(Center for Internet Security,简称CIS)制定的基准。这些基准是一系列详细的配置指南,旨在帮助组织确保其信息技术系统的性,以降低遭受网络攻击和数据泄露的风险。
为了实现CIS加固,我们可以使用Puppet模块来自动化应用CIS基准中的配置。以下是Puppet模块的安装和配置步骤:
1. 安装所需的Puppet模块:
puppet module install simpsimplib version 4.12.1puppet module install puppetaugeasproviders_pam version 4.0.0
puppet module install puppetaugeasproviders_core version 4.1.0
puppet module install puppetaugeasproviders_grub version 5.1.0
puppet module install puppetlabsreboot version 5.0.0
puppet module install puppetkmod version 4.0.1
puppet module install puppetlabsinifile version 6.1.0
puppet module install puppetlabschocolatey version 8.0.0
puppet module install puppetlabsaugeas_core version 1.4.1
2. 配置Puppet模块来应用CIS基准中的配置:
class { 'cis': ensure => present,
baseline => 'level1',
os => 'redhat',
}
通过上述配置,Puppet模块会自动应用CIS基准中的配置,确保系统符合CIS的要求。
六、黄金镜像的优势
创建Golden Image(黄金镜像)是一种在IT管理和部署中常见的实践,有多个原因可以解释为什么需要制作Golden Image:
1. 一致性和可重复性:Golden Image确保环境的一致性,因为它是一个经过配置和测试的标准化镜像。使用Golden Image可以确保在不同的环境中部署相同的基础设施,提供可重复的结果。
2. 快速部署:Golden Image包含了操作系统、应用程序和配置的预先安装,使得部署新系统或应用程序非常快速。这对于需要在大量机器上部署相似配置的场景非常有用。
3. 配置管理:Golden Image包含了已经配置和验证的设置,包括操作系统设置、配置、应用程序配置等。这确保了所有部署的系统都符合相同的标准。
4. 可靠性和稳定性:由于Golden Image是经过测试和验证的,因此它通常更加可靠和稳定。这减少了在生产环境中遇到问题的可能性。
5. 性:制作Golden Image时可以执行各种性操作,例如关闭不必要的服务、应用很新的补丁和配置。这有助于减少系统的潜在漏洞。
6. 容易更新:当需要对环境进行更新时,可以更新Golden Image,然后重新部署。这比逐个更新每个服务器要更为高效。
7. 支持版本控制:Golden Image可以与版本控制系统集成,允许在环境中轻松管理和跟踪不同版本的镜像。
七、
通过使用Packer在Azure云中创建包含CIS加固的自定义镜像,我们可以确保系统的一致性、性和可靠性。Packer工具的自动化配置和CIS模块的集成,使得镜像的创建和管理变得更加高效和便利。无论是快速部署新系统,还是进行系统更新,Golden Image都提供了一种的方法来提高系统部署、管理和维护的效率。
希望本文能够帮助您理解如何使用Packer在Azure云中实现CIS加固,并为您的组织提供一个、可靠和高效的IT环境。