如何在 AWS 云上统一监控 EC2 应用黑白名单合规情况？

内容简介

Amazon EC2 主机作为承载公司业务及内部运转的底层平台，所承载的数据和服务价值使其成为备受黑客青睐的攻击对象，主机安全防护一直是安全人员重点关注的难题。在建立主机防护的过程中，安全人员会对主机应用设定黑名单和白名单。然而数量庞大的云主机如何实现适时、高效且自动化的监管，并能及时处理呢？

本文将介绍在亚马逊云科技平台 AWS 上，如何通过使用 Amazon Config 一致性包的自定义功能，自动监控云上 EC2 中应用黑白名单的合规情况，并提供了自动部署的 CloudFormation yaml 模板文件和 CLI 示例命令行。

先决条件

可以使用最新版本的 AWS Command Line Interface (CLI) ；

在 EC2 中部署 Systems Manager Agent，通过 Node Management 可以统一管理目标 EC2 的 Inventory，详细操作请见安装文档；

开启 Amazon Security Hub 和 AWS Config；

本文中使用的一致性包（Conformance packs）目前仅适用于 Global regions。

架构与工作原理

AWS Config 是一种完全托管的服务，可为您提供 AWS 资源库存、配置历史记录和配置更改通知，以确保安全性和方便管理。

Amazon Systems Manager 是一项管理服务，可以帮助您自动收集软件清单、应用操作系统补丁、创建系统映像以及配置 Windows 和 Linux 操作系统。Systems Manager Inventory 从 Amazon EC2 实例和本地实例收集元数据，与 AWS Config 集成使用则可以实时监控 EC2 内应用的变化情况，Config rule 会自动进行规则判定，针对每台 EC2，结果为 Noncompliant（不合规）或 Compliant（合规）。

本文通过创建两条 Config Rule（ec2-managedinstance-applications-blacklisted 和ec2-managedinstance-applications-required ），并将其写入一个自定义的一致性包（Custom Conformance Pack），部署完成后则可以在控制台中查看所有主机的相关软件合规情况。同时 Configure rule 的检测结果可以同步至 Security Hub 中，供安全人员进行综合分析。

架构概览

部署方法

请于本文附录下载模板文件至运行 CLI 命令的本地目录，格式为 yaml。

方法一 控制台手动部署

可以通过登录 AWS Console-> AWS Config-> Conformance Packs-> Deploy conformance pack-> Template is ready-> Upload a template file，上传模板文件，注意在 Step 2 的参数设置部分，需要提供如下图的两个参数，分别为白名单的应用名称和黑名单的应用名称，如果有多个应用，请使用英文状态下的逗号隔开。详细参数设置请参见 ec2-managedinstance-applications-blacklisted 和 ec2-managedinstance-applications-required。

参数设置示例

详细操作请见使用 AWS Config 控制台部署一致性包。

方法二 使用 CLI 命令行部署

请运行以下 CLI 示例命令设置参数：

region=（运行命令行的区域，例如：us-east-1）
packname=（一致性包的名称，例如：'BlackorWhite'）
templatename=（从附录中保存的模板文件，例如：'TestConformancePack.yaml'）
white=（白名单中的应用名称，例如："python3"）
black=（黑名单中的应用名称，例如："openssl"）

运行以下示例命令行创建一致性包：

aws configservice put-conformance-pack \
--conformance-pack-name $packname \
--template-body file://$templatename \
--conformance-pack-input-parameters ParameterName=WhiteAppNames,ParameterValue=$white ParameterName=BlackAppNames,ParameterValue=$black \
--region=$region

查看结果

运行成功后登录 Config 控制台-> Conformance packs，可以看到新建的一致性包 BlackorWhite，其显示整体合规分数为 50%。

创建后的一致性包

点击按钮“View”进入，可以看到此 Conformance pack 包含两条 Config rule，点开进入白名单的 rule 即由 white 开头的 rule，可以看到所有 EC2 针对此条 rule 的检测结果。

白名单规则结果展示

登录控制台中 AWS Systems Manager-> Fleet Manager，分别点开两台符合的 EC2 的 Node ID-> Inventory，可以查看到 EC2 已安装了白名单中的 python3，如下图：

Security Hub 中查看到的 Config finding

安全人员可以从 Security Hub 控制台查看到应用黑白名单的告警信息，与其它安全产品告警进行综合分析，从而进行安全事态的分析与响应。

Security Hub 中查看到的 Config finding

小结

在这篇博文中，我向您展示了使用亚马逊云科技的原生服务 Systems Manager 和 Config，对 EC2 中应用程序的黑白名单进行监控是多么简单方便。您可以继续通过使用 Security Hub 控制台对相关告警进行后续聚合、分析以及自动化修复。

附录

请复制以下内容，保存为以.yaml 结尾的文件。

Parameters:
WhiteAppNames:
Default: 'python3'
Type: String
BlackAppNames:
Default: 'python:2.7.18,openssl:1.0.2k'
Type: String
Resources:
whiteConfigRule:
Type: "AWS::Config::ConfigRule"
Properties:
ConfigRuleName: "white-ec2-managedinstance-applications-required"
Scope:
ComplianceResourceTypes:
- "AWS::SSM::ManagedInstanceInventory"
Description: "A Config rule that checks whether all of the specified applications are installed on the instance. "
InputParameters:
applicationNames:
Fn::If:
- WhiteAppNames
- Ref: WhiteAppNames
- Ref: AWS::NoValue
Source:
Owner: "AWS"
SourceIdentifier: "EC2_MANAGEDINSTANCE_APPLICATIONS_REQUIRED"
blackConfigRule:
Type: "AWS::Config::ConfigRule"
Properties:
ConfigRuleName: "black-ec2-managedinstance-applications-blacklisted"
Scope:
ComplianceResourceTypes:
- "AWS::SSM::ManagedInstanceInventory"
Description: "A Config rule that checks that none of the specified applications are installed on the instance. "
InputParameters:
applicationNames:
Fn::If:
- BlackAppNames
- Ref: BlackAppNames
- Ref: AWS::NoValue
Source:
Owner: "AWS"
SourceIdentifier: "EC2_MANAGEDINSTANCE_APPLICATIONS_BLACKLISTED"
Conditions:
WhiteAppNames:
Fn::Not:
- Fn::Equals:
- ''
- Ref: WhiteAppNames
BlackAppNames:
Fn::Not:
- Fn::Equals:
- ''
- Ref: BlackAppNames

本篇作者

Jessica Wang

亚马逊云科技专业服务团队高级安全顾问，负责为客户提供云安全咨询、架构设计和技术实施等服务。

余海发

亚马逊云科技专业服务团队安全顾问，负责云安全架构、云安全解决方案等的咨询设计及落地实施。专注于信息安全技术领域的研究和实践，乐于尝试和探索新兴行业及领域中的安全问题。