
CloudMapper ajuda você a analisar seus ambientes Amazon Web Services (AWS).
Nota A funcionalidade de Visualização de Rede (comando prepare) não é mais mantida.
CloudMapper ajuda você a analisar seus ambientes Amazon Web Services (AWS). O objetivo original era gerar diagramas de rede e exibi-los no seu navegador (funcionalidade não mais mantida). Agora contém muito mais funcionalidades, incluindo auditoria de problemas de segurança.
audit: Verifica possíveis configurações incorretas.collect: Coleta metadados sobre uma conta. Mais detalhes aqui.find_admins: Examina políticas IAM para identificar usuários e funções de administrador, ou diretores com privilégios específicos. Mais detalhes aqui.find_unused: Procura recursos não utilizados na conta. Encontra Security Groups, Elastic IPs, interfaces de rede, volumes e balanceadores de carga elásticos não usados.prepare/webserver: Veja Visualizações de Redepublic: Encontra hosts públicos e faixas de portas. Mais detalhes aqui.sg_ips: Obtém informações geoip sobre CIDRs confiáveis em Security Groups. Mais detalhes aqui.stats: Mostra contagens de recursos para contas. Mais detalhes aqui.weboftrust: Mostra a Web de Confiança. Mais detalhes aqui.report: Gera relatório HTML. Inclui resumo das contas e descobertas de auditoria. Mais detalhes aqui.iam_report: Gera relatório HTML para as informações IAM de uma conta. Mais detalhes aqui.Se você quiser adicionar seus próprios comandos privados, pode criar um diretório private_commands e adicioná-los lá.
|
Requisitos:
pip e virtualenvjq (https://stedolan.github.io/jq/) e da biblioteca pyjq (https://github.com/doloopwhile/pyjq), que exigem algumas ferramentas adicionais que serão mostradas.No macOS:
# clone o repositório
git clone https://github.com/duo-labs/cloudmapper.git
# Instale pré-requisitos para 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
No Linux:
# clone o repositório
git clone https://github.com/duo-labs/cloudmapper.git
# (AWS Linux, Centos, Fedora, RedHat etc.):
# sudo yum install autoconf automake libtool python3-devel.x86_64 python3-tkinter python-pip jq awscli
# (Debian, Ubuntu etc.):
# Você pode precisar adicionalmente de "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
Um pequeno conjunto de dados de demonstração é fornecido. Isso exibirá o mesmo ambiente do site de demonstração https://duo-labs.github.io/cloudmapper/
# Gere os dados para o mapa de rede
python cloudmapper.py prepare --config config.json.demo --account demo
# Gere um relatório
python cloudmapper.py report --config config.json.demo --account demo
python cloudmapper.py webserver
Isso executará um servidor web local em http://127.0.0.1:8000/ Veja o mapa de rede a partir desse link, ou veja o relatório em http://127.0.0.1:8000/account-data/report.html
Copie o config.json.demo para config.json e edite-o para incluir o ID da sua conta e o nome (ex. "prod"), junto com quaisquer nomes de CIDR externos. Um CIDR é um intervalo de IP como 1.2.3.4/32, que significa apenas o IP 1.2.3.4.
Este passo usa a CLI para fazer chamadas describe e list e registra o json na pasta especificada pelo nome da conta em account-data.
Você deve ter credenciais AWS configuradas que possam ser usadas pela CLI com permissões de leitura para os diferentes metadados a coletar. Recomendo usar aws-vault. O CloudMapper coletará informações IAM, o que significa que você DEVE usar MFA. Apenas o passo collect requer acesso AWS.
Você deve ter os seguintes privilégios (que concedem várias leituras de metadados):
arn:aws:iam::aws:policy/SecurityAuditarn:aws:iam::aws:policy/job-function/ViewOnlyAccessA coleta de dados é feita da seguinte forma:
python cloudmapper.py collect --account minha_conta
A partir daqui, tente executar diferentes comandos, como:
python cloudmapper.py report --account minha_conta
python cloudmapper.py webserver
Depois veja o relatório no seu navegador em 127.0.0.1:8000/account-data/report.html
Em vez de modificar config.json diretamente, existe um comando para configurar os dados lá, caso seja necessário:
python cloudmapper.py configure {add-account|remove-account} --config-file CONFIG_FILE --name NOME --id ID [--default DEFAULT]
python cloudmapper.py configure {add-cidr|remove-cidr} --config-file CONFIG_FILE --cidr CIDR --name NOME
Isso permitirá definir as diferentes contas AWS que você usa no seu ambiente e os IPs CIDR conhecidos.
Se você usa AWS Organizations, também pode adicionar automaticamente contas membros da organização ao config.json usando:
python cloudmapper.py configure discover-organization-accounts
Você precisa estar autenticado na AWS CLI e ter a permissão organization:ListAccounts antes de executar este comando.
Você pode achar que não se importa com alguns itens de auditoria. Pode querer ignorar a verificação completamente, ou apenas recursos específicos. Copie config/audit_config_override.yaml.example para config/audit_config_override.yaml e edite o arquivo com base nos comentários lá.
O contêiner Docker criado é destinado a ser usado interativamente.
docker build -t cloudmapper .
O Cloudmapper precisa fazer chamadas IAM e não pode usar credenciais de sessão para coleta, então você não pode usar o servidor aws-vault se quiser coletar dados, e deve passar as credenciais de função diretamente ou configurar as credenciais AWS manualmente dentro do contêiner. O código a seguir expõe suas credenciais brutas dentro do contêiner.
(
export $(aws-vault exec SEU_PERFIL --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
)
Isso o colocará dentro do contêiner. Execute aws sts get-caller-identity para confirmar que foi configurado corretamente. Os dados de demonstração do Cloudmapper não são copiados para o contêiner Docker, então você precisará coletar dados ativos do seu sistema. Observe que os padrões do Docker podem limitar a memória disponível para o seu contêiner. Por exemplo, no Mac OS, o padrão é 2 GB, o que pode não ser suficiente para gerar o relatório em uma conta de tamanho médio.
python cloudmapper.py configure add-account --config-file config.json --name SUA_CONTA --id NUMERO_DA_SUA_CONTA
python cloudmapper.py collect --account SUA_CONTA
python cloudmapper.py report --account SUA_CONTA
python cloudmapper.py prepare --account SUA_CONTA
python cloudmapper.py webserver --public
Você deve então ser capaz de ver o relatório visitando http://127.0.0.1:8000/account-data/report.html
Um aplicativo CDK para implantar o CloudMapper via Fargate para que seja executado todas as noites, enviar descobertas de auditoria como alertas para um canal Slack e gerar um relatório salvo no S3 é descrito aqui.
Para diagramas de rede, você pode tentar https://github.com/lyft/cartography ou https://github.com/anaynayak/aws-security-viz
Para auditoria e outras ferramentas de segurança AWS, veja https://github.com/toniblyx/my-arsenal-of-aws-security-tools
|
|
|
|
|