AWS学习记录

2022-09-25 如何使用AWS Securityhub快速

2022-09-24  本文已影响0人  清风晓星辰

写写我的个人学习心德,本文仅为个人学习心德,与AWS无关
使用AWS Securityhub快速建立安全态势聚合分析场景

内容简介

许多企业为了维护系统的安全稳定,可能有许多功能强大的安全工具,从防火墙和终端节点保护到漏洞与合规性扫描程序,不一而足。但您的团队每天要处理数成千上万的安全警报,这通常会让数量本就很少的安全人员手忙脚乱地在这些工具之间来回切换。而长期面对大量且纷乱的安全告警,会使人不知所措,很容易产生“告警疲劳”而放弃分析和响应,即使花了大价钱购买或部署的SIEM(Security information and event management )工具也被束之高阁。空留大屏幕上的显示数字,却不去处理告警,解决不了安全隐患。

Amazon Security Hub是亚马逊云科技提供的可以集中查看和管理安全警报并自动执行安全检查的服务。
本文将带您实践一种基于Security Hub自动化安全事态分析的方案,并提供自动化部署cloudformation template和示例CLI命令行

先决条件

架构与工作原理

两种实现方式的架构对比图

部署方法

让我们使用第二种架构一起来部署一个示例user case:S3数据丢失。
场景聚合条件为:
-S3存储桶没有开启Versioning https://docs.aws.amazon.com/AmazonS3/latest/userguide/versioning-workflows.html
-Guardduty产生报警Impact:S3/AnomalousBehavior.Delete
https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-s3.html#:~:text=S3%20Bucket.-,Impact%3AS3/AnomalousBehavior.Delete,-An%20IAM%20entity
当上述条件同时被触发时,说明S3中的数据可能无法恢复面临永久损失的风险,安全人员应立刻响应。因此lambda会自动生成一条Critical级别的Security Hub finding。

第一步 新建两个custom insight

region=(部署的AWS区域,例如:us-east-1)
insight1='s3versioning'
insight2='guarddutys3delete'
arn1=$(aws securityhub create-insight \
--filters \
 '{"RecordState": [{ "Comparison": "EQUALS", "Value": "ACTIVE"}], "WorkflowStatus": [{"Comparison": "EQUALS", "Value": "NEW"}],"ProductName": [{"Comparison": "EQUALS", "Value": "Config"}], "ComplianceStatus": [{"Comparison": "EQUALS", "Value": "FAILED"}]}' \
 --group-by-attribute "ResourceId" \
--name $insight1 \
--query 'InsightArn' --output text --region=$region)
echo $arn1

arn2=$(aws securityhub create-insight \
--filters \
 '{"RecordState": [{ "Comparison": "EQUALS", "Value": "ACTIVE"}], "WorkflowStatus": [{"Comparison": "EQUALS", "Value": "NEW"}],"ResourceType": [{"Comparison": "EQUALS", "Value": "AwsS3Bucket"}], "Type": [{"Comparison": "EQUALS", "Value": "TTPs/Impact:S3-AnomalousBehavior.Delete"}]}' \
 --group-by-attribute "ResourceId" \
--name $insight2 \
--query 'InsightArn' --output text --region=$region)
echo $arn2

第二步 运行Cloudformation Stack

请将附录提供的模板文件保存至本地CLI运行目录,以下为参数说明:
stackname=(CloudFormation stack的名字,例如'usercase-s3dataloss')
templatename=(附录中保存的cloudformation yaml文件,例如'blogtemplate.yaml')
findingtype=(生成的finding的类型,需要遵照security hub的标准规定,本例中请使用 'Effects/Data Exposure/S3DataLost')
title=(生成的finding title, 例如'SIEM Alert-S3 data lost')
resourcetype=(生成的finding中resource的类型,本例中请使用'AwsS3Bucket')

运行以下CLI示例命令行

stackname='usercase-s3dataloss'
templatename='blogtemplate.yaml'
findingtype='Effects/Data Exposure/S3DataLost'
title='SIEM Alert-S3 data lost'
resourcetype='AwsS3Bucket'
aws cloudformation create-stack --stack-name $stackname --template-body file://$templatename \
--parameters  \
ParameterKey=arn1,ParameterValue=$arn1  \
ParameterKey=arn2,ParameterValue=$arn2  \
ParameterKey=findingtype,ParameterValue=$findingtype  \
ParameterKey=title,ParameterValue=$title  \
ParameterKey=resourcetype,ParameterValue=$resourcetype  \
--capabilities CAPABILITY_IAM \
--region=$region

查看结果

满足场景的触发条件后,在Security Hub控制台中可以看到由lambda自动生成的一条Critical的告警,如下图所示:


user case告警示例

小结

在这篇博文中,我介绍了如何使用亚马逊云科技的原生服务Securityhub和lambda实现了快速聚合安全事态实现自动分析告警的方法。示例中的user case是由两个条件组成,您也可以扩展使用三个或四个条件。在安全运营过程中,部署5-10个聚合场景,可以帮忙您的安全团队节省人工分析少量日志的时间,将精力更加集中于处理真正紧急和高风险的安全事件中去。

附录

Cloudformation template示例

本篇作者

上一篇下一篇

猜你喜欢

热点阅读