亚马逊AWS官方博客

如何在 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 HubAWS 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-blacklistedec2-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

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

余海发

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