English | Japanese (日本语) | Chinses (繁体中文)
SIEM on Amazon OpenSearch Service 是一套免费而完整的安全性事件管理(SIEM)解决方案。让你可从多个AWS账户中收集各种日志类型,并通过日志关联与可视化协助调查安全事件。可以在约30分钟内,透过AWS Cloud开发套件(AWS SDK)或AWS CloudFormation轻松完成SIEM部署。当AWS服务日志存放到指定的Amazon Simple Storage Service (Amazon S3)存储桶后,会自动触发专门的AWS Lambda 函数,并将日志加载至 SIEM on OpenSearch Service 当中。您通过仪表板浏览各项关联记录,以便作出分析及应对。
前往 | 配置AWS服务日志来源 | OpenSearch Service上更改SIEM的配置 | 高级部署 | 仪表板 | 支持的日志类型 (英语) | FAQ | 变更日志 (英语) |
SIEM on OpenSearch Service 能够加载并关联以下日志类型。
Amazon 服务 | 日志 | |
---|---|---|
Security, Identity, & Compliance | AWS CloudHSM | HSM audit logs |
Security, Identity, & Compliance | Amazon GuardDuty | GuardDuty 问题清单 |
Security, Identity, & Compliance | Amazon Inspector | Inspector 问题清单 |
Security, Identity, & Compliance | AWS Directory Service | Microsoft AD |
Security, Identity, & Compliance | AWS WAF | AWS WAF Web ACL 流量信息 AWS WAF Classic Web ACL 流量信息 |
Security, Identity, & Compliance | AWS Security Hub | Security Hub 问题清单 GuardDuty 问题清单 Amazon Macie 问题清单 Amazon Inspector 问题清单 AWS IAM Access Analyzer 问题清单 |
Security, Identity, & Compliance | AWS Network Firewall | Flow logs Alert logs |
Management & Governance | AWS CloudTrail | CloudTrail Log Event CloudTrail Insight Event |
Management & Governance | AWS Trusted Advisor | Trusted Advisor Check Result |
Networking & Content Delivery | Amazon CloudFront | 标准访问日志 实时日志 |
Networking & Content Delivery | Amazon Route 53 Resolver | VPC DNS 查询日志 |
Networking & Content Delivery | Amazon Virtual Private Cloud (Amazon VPC) | VPC Flow Logs (Version5) Text / Parquet Format |
Networking & Content Delivery | AWS Transit Gateway | VPC Flow Logs (Version6) Text / Parquet Format |
Networking & Content Delivery | Elastic Load Balancing | Application Load Balancer 访问日志 Network Load Balancer 访问日志 Classic Load Balancer 访问日志 |
Networking & Content Delivery | AWS Client VPN | connection log 连接日志 |
Storage | Amazon FSx for Windows File Server | audit log |
Storage | Amazon Simple Storage Service (Amazon S3) | 访问日志 |
Database | Amazon Relational Database Service (Amazon RDS) (试验中) |
Amazon Aurora(MySQL) Amazon Aurora(PostgreSQL) Amazon RDS for MariaDB Amazon RDS for MySQL Amazon RDS for PostgreSQL |
Analytics | Amazon Managed Streaming for Apache Kafka (Amazon MSK) | Broker log |
Compute | Linux OS 通过 CloudWatch Logs |
/var/log/messages /var/log/secure |
Compute | Windows Servver 2012/2016/2019 通过 CloudWatch Logs |
System event log Security event log |
Containers | Amazon Elastic Container Service (Amazon ECS) 通过 FireLens |
仅框架 |
End User Computing | Amazon WorkSpaces | Event log Inventory |
Open Source Software | Apache Web Server | access log(CLF, combined, combinedio with XFF) error log |
Open Source Software | NGINX Web Server | access log(combined with XFF) error log |
我们以后有机会修改 Database (试验中) 日志存放内容来优化功能。
以上日志将根据 Elastic Common Schema 进行标準化。请浏览此处浏览此处去了解相关字段名称对照表。
详见 此处
在本教程中,我们将通过CloudFormation模板在OpenSearch Service上建立可被公开访问的SIEM系统。如果您需要在Amazon VPC内部署SIEM,或者调整其他自定义,请参阅高级部署说明。
您可以将国家/地区信息与纬度/经度位置信息添加至各个IP地址。要获取位置信息,SIEM on OpenSearch Service将下载并使用 MaxMind 提供的GeoLite2 Free。如果您希望添加其他位置信息,请从MaxMind获取免费许可证。
注意: CloudFormation模板将使用(t3.medium.search实例)部署OpenSearch Service。我们建议使用t3以上的高性能类实例来架构你的生產环境SIEM,因为在日志聚合过程中需要较为强大的处理性能。 您可以使用Amazon管理控制台更改实例类型、扩展存储卷或使用经济实惠的 UltraWarm 储存节点。请注意,SIEM on OpenSearch Service的CloudFormation模板在设计上仅适用於初始部署目的,无法实现节点更改/删除等管理操作。
通过以下选项,选择SIEM on OpenSearch Service部署所在的区域: If there is no region below, please check CloudFormation Template For All Regions.
或者,您可以按照以下步骤创建自己的模板。
如果您已经在第1步中使用CloudFormation模板部署了SIEM on OpenSearch Service,请直接跳过此步骤。
我们需要使用以下实例与工具创建CloudFormation模板:
- 运行Amazon Linux 2的Amazon EC2实例
- "Development Tools"
- Python 3.8
- Python 3.8 库与头文件
- git
如果尚未安装以上工具,请运行下列命令:
sudo yum groups mark install -y "Development Tools"
sudo yum install -y amazon-linux-extras
sudo amazon-linux-extras enable python3.8
sudo yum install -y python38 python38-devel git jq
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
如果尚未安装以上工具,请运行下列命令:
cd
git clone https://github.com/aws-samples/siem-on-amazon-opensearch-service.git
export TEMPLATE_OUTPUT_BUCKET=<YOUR_TEMPLATE_OUTPUT_BUCKET> # Name of the S3 bucket where the template is loaded
export AWS_REGION=<AWS_REGION> # Region where the distribution is deployed
注意: $TEMPLATE_OUTPUT_BUCKET是S3存储桶名称,你需要预先建立好这S3存储桶。此存储桶会用来存放部署过程中需要分发的文件,因此需要开放公开访问。这里的build-s3-dist.sh脚本(用於创建模板)不会创建任何S3存储桶
cd ~/siem-on-amazon-opensearch-service/deployment/cdk-solution-helper/
chmod +x ./step1-build-lambda-pkg.sh && ./step1-build-lambda-pkg.sh && cd ..
chmod +x ./build-s3-dist.sh && ./build-s3-dist.sh $TEMPLATE_OUTPUT_BUCKET
aws s3 cp ./global-s3-assets s3://$TEMPLATE_OUTPUT_BUCKET/ --recursive --acl bucket-owner-full-control
aws s3 cp ./regional-s3-assets s3://$TEMPLATE_OUTPUT_BUCKET/ --recursive --acl bucket-owner-full-control
注意: 要运行上述命令,大家需要授予权限以将文件上传至S3存储桶。在文件上传之后,还应确保为文件设置正确的访问策略。
模板将被上传到 示例 https://customers3bucket.s3.Region.amazonaws.com.cn/$TEMPLATE_OUTPUT_BUCKET/siem-on-amazon-opensearch-service.template
位置。使用AWS CloudFormation即可部署这套模板。
SIEM on OpenSearch Service大概需要30分钟来完成部署。随后即可着手配置OpenSearch Dashboards。
注意: OpenSearch Service 的 OpenSearch 控制面板默认安装包括地图服务,但印度和中国区域的域除外。所以在OpenSearch Service 并不能直接提供地图显示功能。如果需要显示地图,需要自行安装WMS地图服务器。
-
导航至Amazon CloudFormation控制台,选择我们刚刚创建的堆栈,尔后选择右上选项卡清单中的“Outputs”选项。在这里,您将找到用户名、密码与OpenSearch Dashboards的URL。使用相应凭证登录至OpenSearch Dashboards。
-
要导入仪表板等OpenSearch Dashboards配置文件,请下载 saved_objects.zip,而后执行解压。
-
导航至OpenSearch Dashboards控制台,点击左侧窗格中的“Management”,而后选择 "Saved Objects" --> "Import" --> "Import"。选择解压后文件夹中的
dashboard.ndjson
文件,而后登出并再次登录,确保所导入的配置正确起效。
要将日志加载至SIEM on OpenSearch Service,我们只需要将日志PUT进名为 aes-siem-<YOUR_AWS_ACCOUNT>-log.的S3存储桶内。在此之后,各日志将自动被加载至SIEM on OpenSearch Service。关於如何将Amazon服务日志输出至S3存储桶的更多操作细节,请参阅此处。
如果您希望将SIEM on OpenSearch Service更新为最新版本,请升级OpenSearch/Elasticsearch域,而后按初始设置方式(使用CloudFormation或AWS CDK)进行更新。您可以在此处查看SIEM变更日志。
将OpenSearch升级至1.0版本:
- 导航至 OpenSearch Service控制台
- 选定域: [aes-siem]
- 选择 [Actions] 图标,而后在下拉清单中选择 [Upgrade domain]
- 在 "Version to upgrade to"部分,选择 [OpenSearch 2.9] 后选择[Submit]
如果您选择使用CloudFormation进行初始设置,请继续执行下一步。如果您使用AWS CDK进行初设置,请参阅高级部署中的 “使用AWS CDK更新SIEM” 部分。
您可以按以下方式指定CloudFormation模板,藉此更新CloudFormation堆栈:
https://aes-siem-<REGION>.s3.amazonaws.com/siem-on-amazon-opensearch-service-china.template
- 导航至 CloudFormation控制台
- 选择堆栈 [aes-siem]
- 在屏幕右上方选择 [Update]
- 在Update stack中,执行以下操作:
- 准备模板: [Replace current template]
- 模板来源: [Amazon S3 URL]
- Amazon S3 URL:
- 选择 [Next]
- 其餘设置全部保留为默认形式,而后点击 Next 即可完成。
至此,更新过程即完成。
如果您希望对OpenSearch Service域做出变更,例如变更OpenSearch Service的访问策略、变更实例类型、变更可用区或添加新可用区,或者变更UltraWarm,请通过 OpenSearch Service 管理控制台 执行变更操作。
SIEM on OpenSearch Service将日志保存在索引当中,并每月轮换一次。如果要更改这一时间间隔或者从非Amazon服务处加载日志,请参阅此处。
您可以在本地环境中执行Python脚本es-loader,藉此将存储在S3存储桶内的过往日志加载至SIEM on OpenSearch Service当中。
以下为CloudFormation模板所能创建的Amazon资源列表。您可以从Amazon管理控制台内找到各项Amazon身份与访问管理(IAM)资源。
AWS 资源 | 资源名称 | 用途 |
---|---|---|
OpenSearch Service | aes-siem | SIEM 本体 |
S3 存储桶 | aes-siem-[AWS_Account]-log | 用於收集日志 |
S3 存储桶 | aes-siem-[AWS_Account]-snapshot | 用於捕捉OpenSearch Service手动快照 |
S3 存储桶 | aes-siem-[AWS_Account]-geo | 用於存储下载得到的GeoIP |
Step Functions | aes-siem-ioc-state-machine | For downloading IoC and creating database |
Lambda 函数 | aes-siem-ioc-plan | For creating map to download IoC |
Lambda 函数 | aes-siem-ioc-createdb | For downloading IoC |
Lambda 函数 | aes-siem-ioc-download | For creating IoC Database |
Lambda 函数 | aes-siem-geoip-downloader | 用於下载GeoIP |
Lambda 函数 | aes-siem-es-loader | 用於标準化日志,并将结果加载至OpenSearch Service |
Lambda 函数 | aes-siem-deploy-aes | 用於创建OpenSearch Service域 |
Lambda 函数 | aes-siem-configure-aes | 用於配置OpenSearch Service |
Lambda 函数 | aes-siem-BucketNotificationsHandler | 用於为存储日志的S3存储桶配置发现通知 |
Lambda 函数 | aes-siem-add-pandas-layer | For adding aws_sdk_pandas as Lambda layer to es-loader |
AWS Key Management Service (AWS KMS) CMK 与别名 |
aes-siem-key | 用於加密日志 |
Amazon SQS Queue | aes-siem-sqs-splitted-logs | 如果日志中包含多个待处理行,则将各行划分为多个部分;代表用於协调的队列 |
Amazon SQS Queue | aes-siem-dlq | 在将日志加载至OpenSearch Service中发生失败时,使用的死信队列 |
CloudWatch alarms | aes-siem-TotalFreeStorageSpaceRemainsLowAlarm | Triggered when total free space for the OpenSearch Service cluster remains less than 200MB for 30 minutes |
CloudWatch dashboards | SIEM | Dashboard of resource information used by SIEM on OpenSearch Service |
EventBridge events | aes-siem-EventBridgeRuleStepFunctionsIoc | For executing aes-siem-ioc-state-machine regularly |
EventBridge events | aes-siem-EventBridgeRuleLambdaGeoipDownloader | 用於每天执行aes-siem-geoip-downloader |
EventBridge events | aes-siem-EventBridgeRuleLambdaMetricsExporter | For executing aes-siem-geoip-downloader every 1 hour |
EventBridge events | aes-siem-EsLoaderStopperRule | For passing alarm events to es-loader-stopper |
Amazon SNS Topic | aes-siem-alert | 被选定为OpenSearch Service中的警报发送目的地 |
Amazon SNS Subscription | inputd email | 作为警报发送目标的电子邮件地址 |
- 导航至CloudFormation控制台并删除堆栈: aes-siem
- 手动删除以下Amazon资源:
- OpenSearch Service域: aes-siem
- Amazon S3存储桶: aes-siem-[AWS_Account]-log
- Amazon S3存储桶: aes-siem-[AWS_Account]-snapshot
- Amazon S3存储桶: aes-siem-[AWS_Account]-geo
- AWS KMS客户託管密钥: aes-siem-key
- 请谨慎执行删除操作。在删除此客户託管密钥之后,您将无法访问使用此密钥进行加密的日志记录。
- 如果您将SIEM on OpenSearch Service部署至Amazon VPC之内,请同时删除以下Amazon资源:
- Amazon VPC: aes-siem/VpcAesSiem (如果您创建了新VPC)
- SecurityGroup: aes-siem-vpc-sg
注意: 如果您希望在删除之后立即重新部署SIEM on OpenSearch Service,请使用以下Amazon CLI命令删除密钥别名。否则由於KMS CMK别名仍然存在,重新部署将提示失败
export AWS_DEFAULT_REGION=<AWS_REGION>
aws kms delete-alias --alias-name "alias/aes-siem-key"
详见 贡献 以获取更多详细信息。
此解决方案遵循 MIT-0 授权许可证。详见 LICENSE 文件。
此產品使用MaxMind创建的GeoLite2数据,并遵循 CC BY-SA 4.0许可证,详见https://www.maxmind.com。
This product uses Tor exit list created by The Tor Project, Inc and licensed under CC BY 3.0 US, available from https://www.torproject.org
原文连结: https://github.com/aws-samples/siem-on-amazon-opensearch-service/blob/main/README.md