4. 日志与监控

日志管理方式1: 使用Security Lake收集

日志收集

Amazon Security Lake 可以从以下支持的 AWS 服务中收集日志和事件:

Amazon Security Lake 支持第三方的提供OCSF格式安全数据来源, 包括 Barracuda Networks, Cisco, Cribl, CrowdStrike, CyberArk, Lacework, Laminar, Netscout, Netskope, Okta, Orca, Palo Alto Networks, Ping Identity, SecurityScorecard, Tanium, The Falco Project, Trend Micro, Vectra AI, VMware, Wiz, and Zscaler.

分析工具

Amazon Security Lake 可以使用以下支持的 AWS 服务分析收集到的日志:

  • Athena,一款成本低使用方便的分析工具,用SQL查询的方式查询日志;使用Security Lake和Athena分析日志

  • OpenSearch,提供漂亮的展示报表分析工具,可以制作自定义的分析报告;SIEM on Amazon OpenSearch Service是一个开源项目,支持用opensearch做分析展现,可以将Security Lake作为其中之一的日志源。

您还可以使用第三方安全分析工具分析日志,包括: Datadog, IBM, Rapid7, Securonix, SentinelOne, Splunk, Sumo Logic, and Trellix。还有服务合作伙伴,比如 Accenture, Atos, Deloitte, DXC, Kyndryl, PWC, Rackspace, and Wipro t可以和你一起用好Amazon Security Lake。

更多信息:

使用Amazon Security Lake收集安全日志

通过Security Lake构建你的安全数据湖

Amazon Security Lake收集日志并分析的费用

使用Security Lake和Athena分析日志

日志管理方式2: 逐个收集

1-使用Amazon CloudWatch Logs集中管理日志

CloudWatch Log服务,是AWS提供给的全托管日志服务。CloudWatch Logs使您能够将所有系统、应用程序和AWS服务中的日志集中在一个高度可扩展的单个服务中。您可以轻松地查看日志、在日志中搜索特定错误代码或模式、根据特定字段筛选日志,或者安全地将这些日志归档以供将来分析。

中国区Amazon CloudWatch Logs - 文档地址

中国区支持将日志发布到 CloudWatch Logs 的服务 - 文档地址

为了降低存储成本,可以把CloudWatch Logs中的日志,导出到S3中进行长期存储。建议在CloudWatch Logs中保存2周,用来做分析使用;然后导出到S3中,为审计使用。

step 1: 使用日志组和日志流

step 2: 使用控制台将日志数据导出到 Amazon S3

2-日志收集

将采集到的所有AWS Services的日志存放到统一的S3存储桶中,然后可以使用OpenSearch或者其他SIEM软件实现安全告警的统一管理。

参考Github中日志收集的描述和可部署的CloudFormation文件:

https://github.com/aws-samples/siem-on-amazon-opensearch-service/blob/main/docs/configure_aws_service.md

AWS Services
Log

AWS Security Hub

Security Hub findings

GuardDuty findings

Amazon Macie findings

Amazon Inspector findings

AWS IAM Access Analyzer findings

AWS WAF

AWS WAF Web ACL traffic information

AWS WAF Classic Web ACL traffic information

AWS Network Firewall

Flow logs

Alert logs

AWS CloudHSM

HSM audit logs

AWS Directory Service

Microsoft AD

AWS CloudTrail

CloudTrail Log Event

CloudTrail Insight Event

AWS Config

Configuration History

Configuration Snapshot

Config Rules

AWS Trusted Advisor

Trusted Advisor Check Result

Amazon CloudFront

Standard access log

Real-time log

Amazon Route 53 Resolver

VPC DNS query log

Amazon Virtual Private Cloud (Amazon VPC)

VPC Flow Logs (Version5) Text / Parquet Format

AWS Transit Gateway

VPC Flow Logs (Version6) Text / Parquet Format

Elastic Load Balancing

Application Load Balancer access logs

Network Load Balancer access logs

Classic Load Balancer access logs

AWS Client VPN

connection log

Amazon FSx for Windows File Server

audit log

Amazon Simple Storage Service (Amazon S3)

access log

Amazon Aurora(MySQL) Amazon Aurora(PostgreSQL) Amazon RDS for MariaDB Amazon RDS for MySQL Amazon RDS for PostgreSQL

Audit logs

Amazon ElastiCache

ElastiCache for Redis SLOWLOG

Amazon OpenSearch Service

Audit logs

Amazon Managed Streaming for Apache Kafka (Amazon MSK)

Broker log

Linux OS via CloudWatch Logs

/var/log/messages

/var/log/secure

Windows Server 2012/2016/2019 via CloudWatch Logs

System event log

Security event log

Amazon Elastic Container Service (Amazon ECS) via FireLens

Framework only

Amazon WorkSpaces

Event log Inventory

* EC2日志收集

[blog] 中国区 - 使用Cloudwatch Agent在Cloudwatch中收集、展现EC2的内存及系统、应用日志

[blog] - Container容器日志收集到CloudWatch Logs

[操作文档] CloudWatch Log系统级日志收集配置方法

* RDS日志收集

RDS MySQL

RDS MySQL数据库的审计日志依赖于MariaDB Audit Plugin插件。MariaDB Audit Plugin插件可以通过RDS的Option groups。所以我们先在RDS控制台的Option group中打开这个插件,然后再在下节中配置RDS输出审计日志到CloudWatch Logs。

开启mysql的audit log - 参考文档

RDS PostgreSQL

开启PG的审计日志模块 - 参考文档

数据库审计功能使用pgaudit请参考这个操作指导 - 文档地址

最后,发送到CloudWatch Logs实现集中管理

将数据库日志发布到 Amazon CloudWatch Logs - 文档地址

* ALB日志收集

application里的httpd日志,都是alb访问的信息;alb的日志是外部用户访问的信息。

Step 1: 给S3 bucket添加权限

通过S3控制台,找到之前创建的bucket,然后打开,切换到“权限”tab页

找到存储桶策略位置,然后“编辑”

加上Principal,指定你的ALB的账号假设为12345678901,可以上传文件到你的这个bucket。

{
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws-cn:iam::12345678901:root"
          },
          "Action": "s3:PutObject",
          "Resource": "arn:aws-cn:s3:::your bucket/*"
        }

Step 2: 开启ALB日志

在EC2控制台导航到负载均衡列表页,然后选择我们之前创建的ALB

切换到“属性”tab页,然后“编辑”

在“监控”的部分,开启“访问日志”,通过“Browse S3”选择之前创建好的S3 bucket

* CloudTrail日志收集

使用 Amazon CloudWatch Logs 监控 CloudTrail 日志文件

方式1: 创建CloudTrial跟踪时就启用CloudWatch Logs

方式2: 选择已经创建的跟踪,打开进入详情页面,编辑“CloudWatch Logs”,指定日志组名称和角色名称。

主机上应用的日志收集

在主机上安装的开源软件,或者自定义编写的应用系统的日志也可以通过Amazon CloudWatch Agent收集。——文档地址

有了StatsD和collectd的支持,除了已经收集的系统指标和应用日志外,你现在还可以使用CloudWatch代理来收集和监控你的自定义应用。此外,你可以用这些指标创建操作仪表板,设置警报,以便在可用内存不足时采取自动行动,并通过深入研究应用程序日志来排除问题。 请注意,StatsD同时支持Windows和Linux操作系统,而collectd只支持Linux。 对于Windows,你也可以继续使用Windows Performance Counters来收集自定义指标。

WAF日志收集

Logging AWS WAF web ACL traffic

可以启用日志记录,获得web ACL分析的流量详细信息。你可以将WAF日志发送到Amazon CloudWatch Logs日志组、Amazon Simple Storage Service(Amazon S3)存储桶或Amazon Kinesis Data Firehose。

AWS WAF 有两种类型 :AWS WAF 和 AWS WAF Classic。 这两种服务都可以以相同的方式将两者的日志输出到 S3 存储桶。 s3_key 的初始值 :aws-waf-logs- AWS WAF ACL 流量日志从 Kinesis Data Firehose 导出到 S3 存储桶。

I. AWS WAF 基本配置

首先,部署 Kinesis Data Firehose

  1. 导航至 Amazon Kinesis 管理界面并选择 AWS WAF 所部署的 Region

  2. 在左侧的导航栏选择 [Delivery streams], 进入页面后点击 [Create delivery stream] 按钮。

  3. 在 [New delivery stream] 界面, 输入如下参数:

    • Source: 选择 [Direct PUT or other sources]

    • Destination: 选择 [Amazon S3]

  4. 在 [Transform and convert records - optional] 界面, 选择如下参数:

    • Data transformation: [Disabled]

    • Record format conversion: [Disabled]

    • 选择 [Next]

  5. 在 [Choose a destination] 界面, 选择或输入如下参数:

    • S3 bucket: [aes-siem-123456789012-log]

      • 使用您自己的AWS Account ID 替换 123456789012

    • S3 前缀: 输入 [AWSLogs/123456789012/WAF/region/]

    • S3 错误 前缀: Enter [AWSLogs/123456789012/WAF/region/error/]

      • 使用您自己的AWS Account ID 替换 123456789012,使用您当前使用的 Region ID 替换, 例如 (cn-northwest-1) .

  6. 在 [Buffer hints, compression and encryption] 界面, 输入如下参数:

    • Buffer size: 选择 5 MiB 或者自定义值 [any number]

    • Buffer interval: 选择300 seconds或者输入 [any number]

    • S3 compression: 选择 [GZIP]

    • 其他参数保持默认值

    • 选择 [Next]

  7. 点击 [Create delivery stream]

II. 在 AWS WAF 中配置日志信息

  1. 导航至 WAFv2 console

  2. 在左侧的导航菜单中选择 [Web ACLs]

  3. 从屏幕中央的下拉菜单中,选择您部署 WAF 所在的 [region] ,例如 China(BeiJing) 或者 China(Ningxia), => 然后选择 Web ACLS

  4. 在 [Logging and metrics] 便签页中选择 => [Enable logging] => 选择 Kinesis Data Firehose steam

  5. 在 [Amazon Kinesis Data Firehose Delivery Stream] 下拉菜单中, 选择 [你所创建的Kinesis Firehose]

  6. 选择 [Save] 完成配置。

ECS日志收集

s3_key 的初始值:N/A。为每个容器应用程序创建和配置 Firehose

  • ECS 日志通过 Firelens (Fluent Bit) 发送到 Firehose 并输出到 S3

  • 每个容器应用的日志类型由S3文件路径决定。所以你需要为每种日志类型配置 Firehose

  • 容器信息是从 ECS 元数据中捕获的。 Enable it in task definitions

  • 默认情况下,不加载 STDERR。如果要加载它,请在 user.ini 中设置 ignore_container_stderr = False。 @timestamp 是收到 SIEM 日志的时间。

配置 Kinesis Data Firehose

  1. 按照 Security Hub 中的【Kinesis Data Firehose 设置】中的步骤操作。

  2. 在S3的输出路径中包含决定应用的key(例如apache)

  3. 因为AWS acount和region是从S3中存储的日志中捕获的,所以在S3输出路径中包含这两个参数是可选的

配置 AWS Firelens

1.Firelens发送日志的任务定义文件和IAM权限设置,请参见官方文档和 aws-samples Send to Kinesis Data Firehose in amazon-ecs-firelens-examples

3-日志解析和可视化

日志帮助提供了大量的信息,但大多数时候,它们很难阅读和解析。它们有许多不同的格式,有时非常大的文本文件挤在一起,总之,人眼很难阅读。为了帮助解决这个问题,AWS提供了一些服务,使解析这些日志更容易。

1 Amazon Athena

Amazon Athena允许您使用标准SQL查询来查询日志文件。它是无服务器的,因此您不必设置任何硬件或基础设施,并且它是一个按次付费的模型,这意味着您只需为运行的查询付费。

Athena使用支持ANSI SQL的Presto,因此它适用于各种数据格式。最常见的是CSV、JSON、ORC、Avro或Parquet。Athena非常强大,可以处理大型连接、数组和窗口函数,同时,也非常适合快速临时查询。由于Athena与Amazon QuickSight无缝集成,您可以轻松地在易于理解的图像中可视化您的查询和数据。如果您想保留元数据存储,以允许一个集中日志管理系统利用ETL和数据发现功能查询您的数据,Athena还与AWS Glue数据目录集成。

2 Amazon EMR

EMR可以快速处理大量数据。您可以选择使用Apache Spark、Apache Hive、Apache HBase、Apache Flink、Apache Hudi(孵化)和Presto等开源工具。这是一个托管集群平台,利用EC2和S3的可扩展性来执行快速、数据密集型扫描。

3 Amazon Kinesis Data Analytics

Amazon Kinesis Data Analytics允许您轻松收集,处理和分析实时数据。比如快速发现入侵到账户内的攻击者,DDoS攻击,异常的API请求等等。

成本对比

以美东区为例:

Athena扫描1TB的数据,价格:5美元。详细参见文档

EMR成本基于实例大小,假设你运行一个部署在Amazon EC2上的Amazon EMR应用程序,并且你使用一个c4.2xlarge EC2实例作为主节点。你将被收取EMR和EC2节点的费用。如果你运行了一个月,在那一个月里有100%的利用率,并使用EC2的按需定价,你的费用将是:

EMR收费=1个实例×0.105美元/小时×(100/100利用率/月)×每月730小时=76.65美元(EMR主节点成本)

EC2收费=1个实例×0.398美元/小时×每月730小时=290.54美元(EC2主节点成本)。

详细参见文档

Kinesis是另一个出色的数据分析产品,非常适合持续运行的大型数据集。您必须确定有多少碎片将处理您的数据流,有多少流的消费者,写入和读取的带宽以及数据存储。假设,您每分钟扫描50,000个记录,每个24KB,由此产生的成本为每月249.66美元

详细参见文档

最后更新于