
CloudMapper ti aiuta ad analizzare i tuoi ambienti Amazon Web Services (AWS).
Nota la funzionalità Network Visualization (comando prepare) non è più mantenuta.
CloudMapper ti aiuta ad analizzare i tuoi ambienti Amazon Web Services (AWS). Lo scopo originale era generare diagrammi di rete e mostrarli nel tuo browser (funzionalità non più mantenuta). Ora contiene molte più funzionalità, inclusa la verifica di problemi di sicurezza.
audit: Controlla potenziali configurazioni errate.collect: Raccoglie metadati su un account. Maggiori dettagli qui.find_admins: Analizza le policy IAM per identificare utenti e ruoli amministratori, o entità con privilegi specifici. Maggiori dettagli qui.find_unused: Cerca risorse inutilizzate nell'account. Trova Security Group, Elastic IP, interfacce di rete, volumi e bilanciatori di carico elastici inutilizzati.prepare/webserver: Vedi Visualizzazioni di retepublic: Trova host pubblici e intervalli di porte. Maggiori dettagli qui.sg_ips: Ottieni informazioni geoip sui CIDR fidati nei Security Group. Maggiori dettagli qui.stats: Mostra conteggi di risorse per account. Maggiori dettagli qui.weboftrust: Mostra Web Of Trust. Maggiori dettagli qui.report: Genera report HTML. Include riepilogo degli account e risultati di audit. Maggiori dettagli qui.iam_report: Genera report HTML per le informazioni IAM di un account. Maggiori dettagli qui.Se vuoi aggiungere i tuoi comandi privati, puoi creare una directory private_commands e aggiungerli lì.
|
Requisiti:
pip, e virtualenvjq (https://stedolan.github.io/jq/) e della libreria pyjq (https://github.com/doloopwhile/pyjq), che richiedono alcuni strumenti aggiuntivi che verranno mostrati.Su macOS:
# clone the repo
git clone https://github.com/duo-labs/cloudmapper.git
# Install pre-reqs for 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
Su Linux:
# clone the repo
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.):
# You may additionally need "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
Un piccolo set di dati demo è fornito. Questo mostrerà lo stesso ambiente del sito demo https://duo-labs.github.io/cloudmapper/
# Generate the data for the network map
python cloudmapper.py prepare --config config.json.demo --account demo
# Generate a report
python cloudmapper.py report --config config.json.demo --account demo
python cloudmapper.py webserver
Questo avvierà un webserver locale all'indirizzo http://127.0.0.1:8000/ Visualizza la mappa di rete da quel link, oppure visualizza il report all'indirizzo http://127.0.0.1:8000/account-data/report.html
Copia config.json.demo in config.json e modificalo per includere l'ID e il nome del tuo account (es. "prod"), insieme a eventuali nomi CIDR esterni. Un CIDR è un intervallo IP come 1.2.3.4/32 che significa solo l'IP 1.2.3.4.
Questo passaggio utilizza la CLI per effettuare chiamate describe e list e registra il json nella cartella specificata dal nome dell'account sotto account-data.
Devi avere credenziali AWS configurate che possono essere utilizzate dalla CLI con permessi di lettura per i vari metadati da raccogliere. Raccomando di usare aws-vault. CloudMapper raccoglierà informazioni IAM, il che significa che DEVI usare MFA. Solo il passo collect richiede accesso AWS.
Devi avere i seguenti privilegi (questi concedono vari accessi in lettura ai metadati):
arn:aws:iam::aws:policy/SecurityAuditarn:aws:iam::aws:policy/job-function/ViewOnlyAccessLa raccolta dei dati viene effettuata come segue:
python cloudmapper.py collect --account my_account
Da qui, prova a eseguire i vari comandi, come:
python cloudmapper.py report --account my_account
python cloudmapper.py webserver
Poi visualizza il report nel tuo browser all'indirizzo 127.0.0.1:8000/account-data/report.html
Invece di modificare config.json direttamente, c'è un comando per configurare i dati lì, nel caso fosse necessario:
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
Questo ti permetterà di definire i diversi account AWS che usi nel tuo ambiente e gli IP CIDR noti.
Se usi AWS Organizations, puoi anche aggiungere automaticamente gli account membri dell'organizzazione a config.json usando:
python cloudmapper.py configure discover-organization-accounts
Devi essere autenticato alla CLI AWS e avere il permesso organization:ListAccounts prima di eseguire questo comando.
Potresti scoprire che alcune voci di audit non ti interessano. Potresti voler ignorare completamente il controllo, o solo risorse specifiche. Copia config/audit_config_override.yaml.example in config/audit_config_override.yaml e modifica il file in base ai commenti presenti.
Il contenitore Docker creato è pensato per essere usato in modo interattivo.
docker build -t cloudmapper .
CloudMapper deve effettuare chiamate IAM e non può utilizzare credenziali di sessione per la raccolta, quindi non puoi usare il server aws-vault se vuoi raccogliere dati, e devi passare direttamente le credenziali del ruolo o configurare manualmente le credenziali AWS all'interno del contenitore. Il seguente codice espone le tue credenziali raw all'interno del contenitore.
(
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
)
Questo ti porterà all'interno del contenitore. Esegui aws sts get-caller-identity per confermare che sia stato configurato correttamente. I dati demo di CloudMapper non vengono copiati nel contenitore Docker, quindi dovrai raccogliere dati live dal tuo sistema. Nota che i default di Docker potrebbero limitare la memoria disponibile per il tuo contenitore. Ad esempio su Mac OS il default è 2GB, che potrebbe non essere sufficiente per generare il report su un account di medie dimensioni.
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
Dovresti quindi essere in grado di visualizzare il report visitando http://127.0.0.1:8000/account-data/report.html
Un'app CDK per distribuire CloudMapper tramite Fargate in modo che venga eseguita ogni notte, invii i risultati di audit come avvisi a un canale Slack e generi un report salvato su S3, è descritta qui.
Per diagrammi di rete, potresti provare https://github.com/lyft/cartography o https://github.com/anaynayak/aws-security-viz
Per strumenti di audit e altri strumenti di sicurezza AWS vedi https://github.com/toniblyx/my-arsenal-of-aws-security-tools
|
|
|
|
|