Princewill-chala/aws-cloudtrail-security-monitoring
GitHub: Princewill-chala/aws-cloudtrail-security-monitoring
该项目演示了如何利用 AWS CloudTrail 记录、追踪和审计 AWS 账户内的管理事件,以 EC2 实例终止操作为例展示了完整的云安全监控与调查流程。
Stars: 0 | Forks: 0
# AWS CloudTrail 安全监控

## 项目概述
本项目演示了如何使用 AWS CloudTrail 来监控、调查和审计 AWS 账户内执行的活动。
AWS CloudTrail 记录跨 AWS 服务的各项管理事件和 API 活动。在本项目中,我们创建了一个 Amazon EC2 实例并随后将其终止。随后通过 CloudTrail Event history(事件历史记录)面板及其详细的 JSON 事件记录对该终止活动进行了调查。
该项目突出了 CloudTrail 如何通过展示操作执行者、执行的操作、发生时间、来源位置以及受影响的 AWS 资源,从而提高 AWS 账户操作的可见性。
## 项目目标
- 创建一个 Amazon EC2 实例以用于监控活动。
- 启用并访问 AWS CloudTrail Event history。
- 通过终止 EC2 实例生成一项 AWS 管理事件。
- 在 CloudTrail Event history 中定位 `TerminateInstances` API 调用。
- 查看事件详情和 JSON 审计日志。
- 识别 IAM 用户、源 IP 地址、AWS Region、受影响的实例 ID 以及事件时间戳。
- 演示 CloudTrail 如何支持安全监控、审计和事件调查。
## 使用的 AWS 服务
- **AWS CloudTrail** — 记录并显示 AWS 账户活动及 API 调用。
- **Amazon EC2** — 提供用于生成管理事件的测试实例。
- **AWS Identity and Access Management (IAM)** — 识别执行该操作的 IAM 用户。
## 架构图
```
+-------------------+
| IAM User |
| naxty |
+---------+---------+
|
| Creates and terminates an EC2 instance
v
+-------------------+
| Amazon EC2 |
| Test Instance |
+---------+---------+
|
| Management event: TerminateInstances
v
+-------------------+
| AWS CloudTrail |
| Event History |
+---------+---------+
|
| Event details and JSON audit record
v
+-------------------+
| Security Review |
| Audit & Analysis |
+-------------------+
```
## 实施步骤
### 1. 访问 AWS CloudTrail
从 AWS Management Console 打开 AWS CloudTrail,以监控账户活动并查看已记录的管理事件。
CloudTrail Event history 提供了对跨 AWS 服务执行的操作的可见性,包括通过 AWS Management Console、AWS CLI、SDK 以及其他 AWS 服务发起的 API 调用。

### 2. 创建 Amazon EC2 实例
创建了一个 Amazon EC2 实例,以生成随后可通过 CloudTrail 监控的 AWS 活动。
该实例作为本项目的测试资源。创建和终止该实例生成了被记录在 CloudTrail Event history 中的管理事件。

### 3. 查看 CloudTrail Event history
在创建和终止 EC2 实例后,使用 CloudTrail 的 **Event history** 面板查看了 AWS 账户中执行的操作和 API 调用列表。
Event history 面板显示了重要的审计信息,包括:
- 事件名称
- 事件时间
- 用户名
- 事件源
- 资源类型
- AWS Region
- 源 IP 地址
这使得调查账户活动并识别对 AWS 资源执行的操作成为可能。

### 4. 定位 `TerminateInstances` 事件
从 CloudTrail Event history 中选择了 `TerminateInstances` 事件,以调查 EC2 实例的终止情况。
此事件确认了已发出 EC2 实例终止请求,并记录了用户身份、受影响的实例、AWS Region 以及操作的确切时间。

## 安全发现
CloudTrail 事件日志提供了几项重要的安全见解:
- 该事件是一个**管理事件**,这意味着它涉及对 AWS 资源执行的管理操作。
- 执行的操作是 `TerminateInstances`,如果在未经授权的情况下执行,可能会导致服务中断或数据丢失。
- 该事件由 IAM 用户通过 AWS Management Console 发起。
- 事件记录捕获了 IAM 用户名、源 IP 地址、AWS Region、受影响的 EC2 实例、时间戳和请求详细信息。
- IAM 会话显示 `mfaAuthenticated: false`,表明该操作是在没有多因素认证的情况下执行的。
- 该事件被标记为 `readOnly: false`,确认它更改了 AWS 资源的状态。
## 安全建议
为了加强 AWS 账户监控并降低未授权资源更改的风险:
- 为所有 IAM 用户启用多因素认证 (MFA),尤其是具有管理权限的用户。
- 应用最小权限原则,仅授予每个用户或工作负载所需的 IAM 权限。
- 创建多区域 CloudTrail trail 并将日志存储在专用的 Amazon S3 存储桶中。
- 启用 CloudTrail 日志文件验证,以帮助检测日志文件是否已被修改或删除。
- 配置 Amazon CloudWatch Logs 集成,以实现对 CloudTrail 事件的近实时监控。
- 创建 Amazon EventBridge 规则,以检测高风险 API 操作,例如 `TerminateInstances`、`DeleteBucket`、`DeleteTrail` 以及 IAM 策略更改。
- 配置 Amazon SNS 通知,以便在发生关键管理事件时提醒管理员。
- 定期查看 CloudTrail Event history 并调查意外的 API 调用。
- 使用 AWS Config 和 Security Hub 改进持续合规性监控和安全态势管理。
## 展示的技能
- AWS CloudTrail 配置和 Event history 分析
- AWS 管理事件监控
- Amazon EC2 资源生命周期管理
- IAM 用户活动调查
- CloudTrail JSON 事件日志分析
- AWS 安全审计和事件调查
- 识别源 IP 地址、API 调用、受影响的资源和事件时间戳
- 应用 AWS 安全最佳实践进行日志记录、监控和访问控制
## 结论
本项目演示了如何使用 AWS CloudTrail 来监控和调查 AWS 账户活动。
通过创建和终止一个 Amazon EC2 实例,生成了一个 `TerminateInstances` 管理事件并将其记录在 CloudTrail 中。事件历史记录和 JSON 审计记录使我们能够识别负责该操作的 IAM 用户、受影响的 EC2 实例、AWS Region、源 IP 地址以及实例状态转换。
CloudTrail 是一项重要的 AWS 安全服务,因为它提供了审计可见性、支持事件响应,并帮助组织检测其 AWS 环境中未经授权或意外的操作。
## 作者
Elochukwu Princewill
云计算 • 网络安全
## ⭐ 如果您觉得这个项目有帮助
欢迎给该仓库点个 ⭐ star,并探索我其他的 AWS 实践项目,我将继续构建实用的云工程解决方案。
标签:AWS, CloudTrail, DPI, 运维监控