Moscvv/cloud-misconfig-scanner

GitHub: Moscvv/cloud-misconfig-scanner

一个用 Python 构建的 AWS 安全审计 CLI 工具,用于扫描 S3、安全组和 IAM 中的常见错误配置。

Stars: 0 | Forks: 0

# 🔍 云错误配置扫描器 一个 Python CLI 工具,用于审计 AWS 账户中常见的安全错误配置。使用 [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)(适用于 Python 的 AWS SDK)构建。 ## 📋 检查项目 | 检查项目 | 严重程度 | 描述 | |---|---|---| | S3 屏蔽公共访问被禁用 | 🔴 高危 | 存储桶已关闭公共访问控制 | | S3 公共存储桶策略 | 🔴 高危 | 存储桶策略允许 `Principal: *`(任何人) | | S3 版本控制被禁用 | 🟡 中危 | 删除/覆盖后对象无法恢复 | | 安全组:敏感端口开放 | 🔴 高危 | 端口 22、3389、3306 等对 `0.0.0.0/0` 开放 | | 安全组:所有流量开放 | 🔴 高危 | 入站规则允许来自互联网的所有协议 | | IAM 通配符策略 | 🔴 高危 | 客户托管策略在 `Resource: *` 上授予 `Action: *` | | IAM 用户未启用 MFA | 🔴 高危 | 控制台用户未配置 MFA 设备 | | IAM 访问密钥使用时间超过 90 天 | 🟡 中危 | 长期有效的凭证会增加暴露风险窗口 | ## 🚀 快速开始 ### 前置条件 - Python 3.8+ - 已配置凭证的 AWS 账户(`aws configure`) - IAM 权限:`s3:*`、`ec2:DescribeSecurityGroups`、`iam:List*`、`iam:Get*` ### 安装 ``` git clone https://github.com/Moscvv/cloud-misconfig-scanner.git cd cloud-misconfig-scanner python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt ``` ### 运行 ``` # 全扫描 — 终端输出 python scanner.py # 扫描特定区域 python scanner.py --region us-east-1 # 仅运行选中的 checks python scanner.py --checks s3 iam # 导出 HTML 报告 python scanner.py --output html # 导出 JSON 报告(用于 pipe 到其他工具) python scanner.py --output json ``` ## 📊 示例输出 ``` ╔═══════════════════════════════════════════════╗ ║ Cloud Misconfiguration Scanner ║ ║ AWS Security Audit Tool ║ ╚═══════════════════════════════════════════════╝ Account : 054154173118 Region : ap-northeast-1 Started : 2026-07-01 06:12:27 UTC ──────────────────────────────────────────────── [1/3] Scanning S3 Buckets... ──────────────────────────────────────────────── Found 1 bucket(s). Checking each... 🔴 [HIGH] s3://misconfigured-test-bucket Block Public Access is not fully enabled → Disabled settings: BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy, RestrictPublicBuckets 🔴 [HIGH] s3://misconfigured-test-bucket Bucket policy allows public access (Principal: *) → Actions exposed: s3:GetObject ════════════════════════════════════════════════ TOTAL FINDINGS : 8 🔴 HIGH : 7 🟡 MEDIUM : 1 ════════════════════════════════════════════════ ``` ### 修复前 —— 包含 MFA 警告在内的 8 项发现 ![包含发现的扫描](https://static.pigsec.cn/wp-content/uploads/repos/cas/f7/f7334bbf892250d7fb54aaf82bfcdfaa797563060ddacd2547c025aa9e357029.png) ### 修复后 —— 已配置 MFA,问题已解决 ![修复 MFA 后的扫描](https://static.pigsec.cn/wp-content/uploads/repos/cas/83/8368737df7b334f62bcc39f6a0b04eb6780552030163286c6dedbb2f2f39621b.png) ## 🗂 项目结构 ``` cloud-misconfig-scanner/ ├── scanner.py # Entry point — CLI args, orchestration, summary ├── requirements.txt ├── .gitignore └── scanners/ ├── s3_scanner.py # S3 bucket checks ├── sg_scanner.py # EC2 security group checks ├── iam_scanner.py # IAM policy, MFA, and access key checks └── report.py # JSON and HTML report generation ``` ## 💡 设计决策 **模块化扫描器** —— 每个服务(S3、EC2、IAM)都是一个独立的模块。添加新的检查(例如 CloudTrail 日志记录被禁用、RDS 公共快照)只需添加一个文件,而无需改动核心代码。 **遵循最小权限原则** —— 该工具仅调用只读的 AWS API(`List*`、`Get*`、`Describe*`)。它绝不会修改资源。 **完善的分页处理** —— 所有列表调用均使用 AWS 分页器,因此该工具在拥有数百个存储桶、用户或安全组的账户上也能正常运行。 **优雅的错误处理** —— 针对每个资源单独捕获 `ClientError`,因此某个存储桶上的权限缺失不会导致整个扫描中止。 ## 🔒 安全说明 - 切勿提交 AWS 凭证。`.gitignore` 已排除 `~/.aws/`、`.env` 以及任何 `*.csv` 密钥导出文件。 - 此工具是只读的 —— 它仅进行审计和报告,不会执行修复。 - 专为个人/沙箱账户设计。在生产环境中,请将 IAM 权限严格限制为上述列出的 API。 ## 🗺 路线图 - [ ] CloudTrail:检测每个区域的日志记录是否被禁用 - [ ] RDS:公共快照和实例 - [ ] S3:未强制执行服务器端加密 - [ ] 输出:CSV 格式 - [ ] 一次性进行多区域扫描 ## 🛠 构建工具 - [Python 3](https://www.python.org/) - [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html) —— 适用于 Python 的 AWS SDK - AWS 免费套餐(S3、EC2、IAM) ## 🩹 故障排除 | 问题 | 可能原因 | 解决方案 | |---|---|---| | `[ERROR] No AWS credentials found` | 未配置凭证 | 运行 `aws configure` 并设置您的 Access Key ID / Secret | | 在特定检查中出现 `AccessDenied` | IAM 用户/角色缺少权限 | 添加 [前置条件](#prerequisites) 中列出的只读权限 | | 扫描卡住或超时 | 账户过大、网络缓慢或触发限流 | 使用 `--checks` 和/或 `--region` 缩小范围;该工具已经实现了分页,只需在速率限制重置后重试一次即可 | | `--output html` 未生成文件 | 误使用了 `--output terminal`(默认选项)运行 | 明确使用 `--output html` 或 `--output json` 重新运行 | ## 📄 许可证 该项目基于 [MIT 许可证](LICENSE) 授权。
标签:AWS, Boto3, DPI, Python, 文档结构分析, 无后门, 逆向工具, 配置扫描