pantelovich/cloud-misconfig-scanner
GitHub: pantelovich/cloud-misconfig-scanner
轻量级 AWS 安全配置审计 CLI 工具,自动检测 S3 公开访问、IAM 通配符策略、Root MFA、开放安全组、未加密 EBS 和 CloudTrail 等常见配置错误。
Stars: 0 | Forks: 0
# cloud-misconfig-scanner
这是我构建的一个 CLI 工具,用于审计 AWS 账户中的常见安全配置错误。在完成了几个云安全实验室并阅读了大量的数据泄露事后分析报告后,我总是一次又一次地看到相同的错误——公开的 S3 存储桶、过于宽松的 IAM、完全敞开的安全组。因此我编写了这个工具来自动捕获它们。
它会直接在终端输出一份带有颜色编码的报告,并保存一个 JSON 文件,如果需要,你可以将其导入到其他工具中。
## 检查内容
| 检查项 | 描述 |
|-------|-------------|
| S3 公开访问 | 标记具有公开 ACL 或过于宽松存储桶策略的存储桶 |
| IAM 通配符策略 | 查找授予 `*:*` 或 `Action: *` 权限的附加策略 |
| Root MFA | 如果 root 账户未启用 MFA,则发出警告 |
| 开放的安全组 | 查找在危险端口(22、3389 等)上允许 `0.0.0.0/0` 入站流量的安全组 (SG) |
| 未加密的 EBS 卷 | 列出静态未加密的 EBS 卷 |
| CloudTrail | 检查目标区域中是否启用了 CloudTrail |
## 入门指南
### 前置条件
- Python 3.9+
- 已配置 AWS 凭证(通过 `~/.aws/credentials` 或环境变量)
- 至少拥有对 S3、IAM、EC2 和 CloudTrail 的只读访问权限
### 安装
```
git clone https://github.com/Pantelovich/cloud-misconfig-scanner.git
cd cloud-misconfig-scanner
make install
```
### 运行
```
# 使用默认 AWS profile 进行扫描
make run
# 或直接使用 options 运行
python -m scanner.cli --profile my-profile --region eu-west-2
# 将 JSON 报告保存到指定路径
python -m scanner.cli --profile my-profile --region eu-west-2 --output report.json
```
## 示例输出
```
╔══════════════════════════════════════════════╗
║ AWS Misconfiguration Scanner ║
╚══════════════════════════════════════════════╝
Profile : default
Region : eu-west-2
[S3]
✗ FAIL my-public-bucket — public access not blocked (ACL: public-read)
✓ PASS my-private-bucket
[IAM]
✗ FAIL AdminPolicy — wildcard action found: {"Action": "*"}
✗ WARN root account — MFA not enabled on root
[EC2 — Security Groups]
✗ FAIL sg-0abc1234 (web-sg) — port 22 open to 0.0.0.0/0
[EBS]
✓ PASS all volumes encrypted
[CloudTrail]
✓ PASS trail active: management-events
Summary: 3 FAIL 1 WARN 2 PASS
Report saved → misconfig_report_20250501_140322.json
```
## 开发
```
make install-dev # installs dev dependencies (pytest, flake8, etc.)
make lint # runs flake8
make test # runs pytest
make run # scans using default profile + eu-west-2
```
## 项目结构
```
cloud-misconfig-scanner/
├── scanner/
│ ├── cli.py # entry point, argument parsing
│ ├── checks/ # one module per AWS service
│ │ ├── s3.py
│ │ ├── iam.py
│ │ ├── ec2.py
│ │ └── cloudtrail.py
│ └── reporter.py # terminal output + JSON serialisation
├── tests/
├── docs/
│ └── adr-001-architecture.md
├── .github/workflows/ci.yml
├── Makefile
└── requirements.txt
```
## 架构决策
有关该结构背后的原因,请参阅 [`docs/adr-001-architecture.md`](docs/adr-001-architecture.md)。
## 接下来会添加的内容
- [ ] 支持更多检查项:未使用的 IAM 密钥、公开的 RDS 快照、VPC 流日志已禁用
- [ ] HTML 报告输出
- [ ] 一次运行中进行多区域扫描
- [ ] 严重性评分 / 风险权重
- [ ] 针对严重发现的 Slack/电子邮件告警
## 许可证
MIT
标签:AWS, CISA项目, CloudTrail, CSPM, DevSecOps, DPI, EBS加密, IAM安全, MFA检查, Python, S3安全, TinkerPop, 上游代理, 云基础设施安全, 公有云安全, 图计算, 多因子认证, 安全基线, 安全组检查, 安全规则引擎, 对称加密, 开源安全工具, 教学环境, 无后门, 最小权限原则, 漏洞利用检测, 终端报告, 自动化审计, 逆向工具, 逆向工程平台, 配置错误检测