注意:网络可视化功能(命令 prepare)已不再维护。
CloudMapper 可帮助您分析您的亚马逊云服务(AWS)环境。最初目的是生成网络图并在浏览器中显示(该功能已不再维护)。现在它包含更多功能,包括安全问题的审计。
audit:检查潜在的错误配置。collect:收集有关账户的元数据。更多详情见此处。find_admins:查看IAM策略以识别管理员用户和角色,或具有特定权限的主体。更多详情见此处。find_unused:查找账户中未使用的资源。查找未使用的安全组、弹性IP、网络接口、卷和弹性负载均衡器。prepare/webserver:参见网络可视化public:查找公共主机和端口范围。更多详情见此处。sg_ips:获取安全组中信任的CIDR的geoip信息。更多详情见此处。stats:显示账户资源计数。更多详情见此处。weboftrust:显示信任网络。更多详情见此处。report:生成HTML报告。包含账户摘要和审计结果。更多详情见此处。iam_report:为账户的IAM信息生成HTML报告。更多详情见此处。如果你想添加自己的私有命令,可以创建一个 private_commands 目录并在其中添加。
|
要求:
pip 和 virtualenvjq(https://stedolan.github.io/jq/)和 pyjq 库(https://github.com/doloopwhile/pyjq),它们需要安装一些额外的工具,如下所示。在 macOS 上:
# 克隆仓库
git clone https://github.com/duo-labs/cloudmapper.git
# 安装 pyjq 的依赖
brew install autoconf automake awscli freetype jq libtool python3
cd cloudmapper/
python3 -m venv ./venv && source venv/bin/activate
pip install --prefer-binary -r requirements.txt
在 Linux 上:
# 克隆仓库
git clone https://github.com/duo-labs/cloudmapper.git
# (AWS Linux, Centos, Fedora, RedHat 等):
# sudo yum install autoconf automake libtool python3-devel.x86_64 python3-tkinter python-pip jq awscli
# (Debian, Ubuntu 等):
# 你可能还需要 "build-essential"
sudo apt-get install autoconf automake libtool python3.7-dev python3-tk jq awscli
cd cloudmapper/
python3 -m venv ./venv && source venv/bin/activate
pip install -r requirements.txt
提供了一小套演示数据。这将显示与演示网站 https://duo-labs.github.io/cloudmapper/ 相同的环境。
# 生成网络映射数据
python cloudmapper.py prepare --config config.json.demo --account demo
# 生成报告
python cloudmapper.py report --config config.json.demo --account demo
python cloudmapper.py webserver
这将在本地运行一个网络服务器,地址为 http://127.0.0.1:8000/ 通过该链接查看网络映射,或通过 http://127.0.0.1:8000/account-data/report.html 查看报告。
将 config.json.demo 复制为 config.json 并编辑,包含您的账户ID和名称(例如 "prod"),以及任何外部CIDR名称。CIDR是一个IP范围,例如 1.2.3.4/32 表示只有IP 1.2.3.4。
此步骤使用CLI进行 describe 和 list 调用,并将json记录在 account-data 中由账户名称命名的文件夹中。
您必须配置好AWS凭证,这些凭证可以被CLI用于读取不同元数据的权限。我推荐使用 aws-vault。CloudMapper 将收集IAM信息,这意味着您必须使用MFA。只有 collect 步骤需要AWS访问权限。
您必须具有以下权限(这些权限授予各种元数据的读取访问权限):
arn:aws:iam::aws:policy/SecurityAuditarn:aws:iam::aws:policy/job-function/ViewOnlyAccess收集数据的方法如下:
python cloudmapper.py collect --account my_account
从这里开始,尝试运行不同的命令,例如:
python cloudmapper.py report --account my_account
python cloudmapper.py webserver
然后在浏览器中查看报告,地址为 127.0.0.1:8000/account-data/report.html
除了直接修改 config.json,还有一个命令可以配置其中的数据,如果需要的话:
python cloudmapper.py configure {add-account|remove-account} --config-file CONFIG_FILE --name NAME --id ID [--default DEFAULT]
python cloudmapper.py configure {add-cidr|remove-cidr} --config-file CONFIG_FILE --cidr CIDR --name NAME
这将允许您定义您在环境中使用的不同AWS账户以及已知的CIDR IP。
如果您使用 AWS Organizations,您还可以使用以下命令自动添加组织成员账户到 config.json:
python cloudmapper.py configure discover-organization-accounts
您需要先通过AWS CLI进行身份验证,并拥有 organization:ListAccounts 权限才能运行此命令。
您可能发现您不关心某些审计项目。您可能希望完全忽略检查,或者仅忽略特定资源。将 config/audit_config_override.yaml.example 复制为 config/audit_config_override.yaml 并根据文件中的注释进行编辑。
创建的docker容器旨在交互式使用。
docker build -t cloudmapper .
CloudMapper 需要调用IAM接口,并且不能使用会话凭证进行收集,因此如果您想收集数据,不能使用 aws-vault 服务器,必须直接传入角色凭证或在容器内手动配置aws凭证。以下代码会将您的原始凭证暴露在容器内。
(
export $(aws-vault exec YOUR_PROFILE --no-session -- env | grep ^AWS | xargs) && \
docker run -ti \
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
-p 8000:8000 \
cloudmapper /bin/bash
)
这将进入容器。运行 aws sts get-caller-identity 以确认设置正确。CloudMapper 演示数据不会被复制到docker容器中,因此您需要从系统收集实时数据。注意,docker默认可能会限制容器可用的内存。例如在Mac OS上,默认是2GB,对于中等规模的账户可能不足以生成报告。
python cloudmapper.py configure add-account --config-file config.json --name YOUR_ACCOUNT --id YOUR_ACCOUNT_NUMBER
python cloudmapper.py collect --account YOUR_ACCOUNT
python cloudmapper.py report --account YOUR_ACCOUNT
python cloudmapper.py prepare --account YOUR_ACCOUNT
python cloudmapper.py webserver --public
然后您应该能够通过访问 http://127.0.0.1:8000/account-data/report.html 查看报告。
有一个CDK应用程序,用于通过Fargate部署CloudMapper,使其每夜运行,将审计结果发送到Slack频道的警报,并生成报告保存在S3上,相关描述见此处。
对于网络图,您可以尝试 https://github.com/lyft/cartography 或 https://github.com/anaynayak/aws-security-viz
对于审计和其他AWS安全工具,请参见 https://github.com/toniblyx/my-arsenal-of-aws-security-tools
|
|
|
|
|