
CloudMapper vous aide à analyser vos environnements Amazon Web Services (AWS).
Note : la fonctionnalité de visualisation réseau (commande prepare) n'est plus maintenue.
CloudMapper vous aide à analyser vos environnements Amazon Web Services (AWS). Le but initial était de générer des diagrammes réseau et de les afficher dans votre navigateur (fonctionnalité qui n'est plus maintenue). Il contient désormais beaucoup plus de fonctionnalités, y compris l'audit des problèmes de sécurité.
audit : Vérifie les erreurs de configuration potentielles.collect : Collecte les métadonnées d'un compte. Plus de détails ici.find_admins : Examine les politiques IAM pour identifier les utilisateurs et rôles administrateurs, ou les entités disposant de privilèges spécifiques. Plus de détails ici.find_unused : Recherche les ressources inutilisées dans le compte. Trouve les groupes de sécurité, adresses IP élastiques, interfaces réseau, volumes et équilibreurs de charge élastiques inutilisés.prepare/webserver : Voir Visualisations réseaupublic : Trouve les hôtes publics et les plages de ports. Plus de détails ici.sg_ips : Obtient des informations geoip sur les CIDR approuvés dans les groupes de sécurité. Plus de détails ici.stats : Affiche les comptages de ressources pour les comptes. Plus de détails ici.weboftrust : Affiche la toile de confiance. Plus de détails ici.report : Génère un rapport HTML. Inclut un résumé des comptes et des constatations d'audit. Plus de détails ici.iam_report : Génère un rapport HTML pour les informations IAM d'un compte. Plus de détails ici.Si vous souhaitez ajouter vos propres commandes privées, vous pouvez créer un répertoire private_commands et les y ajouter.
|
Prérequis :
pip, et virtualenvjq (https://stedolan.github.io/jq/) et de la bibliothèque pyjq (https://github.com/doloopwhile/pyjq), qui nécessitent quelques outils supplémentaires qui seront installés.Sur 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
Sur 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 petit ensemble de données de démonstration est fourni. Cela affichera le même environnement que le site de démonstration 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
Cela exécutera un serveur web local à http://127.0.0.1:8000/ Visualisez la carte réseau à partir de ce lien, ou consultez le rapport à http://127.0.0.1:8000/account-data/report.html
Copiez le fichier config.json.demo en config.json et modifiez-le pour inclure votre ID de compte et son nom (ex. « prod »), ainsi que les noms de CIDR externes. Un CIDR est une plage IP telle que 1.2.3.4/32, qui signifie uniquement l'IP 1.2.3.4.
Cette étape utilise la CLI pour effectuer des appels describe et list et enregistre le json dans le dossier spécifié par le nom du compte sous account-data.
Vous devez avoir des informations d'identification AWS configurées pouvant être utilisées par la CLI avec des droits de lecture pour les différentes métadonnées à collecter. Je recommande d'utiliser aws-vault. CloudMapper collectera les informations IAM, ce qui signifie que vous DEVEZ utiliser MFA. Seule l'étape collect nécessite un accès AWS.
Vous devez disposer des privilèges suivants (ils accordent divers accès en lecture aux métadonnées) :
arn:aws:iam::aws:policy/SecurityAuditarn:aws:iam::aws:policy/job-function/ViewOnlyAccessLa collecte des données s'effectue comme suit :
python cloudmapper.py collect --account my_account
À partir de là, essayez d'exécuter les différentes commandes, par exemple :
python cloudmapper.py report --account my_account
python cloudmapper.py webserver
Consultez ensuite le rapport dans votre navigateur à 127.0.0.1:8000/account-data/report.html
Au lieu de modifier config.json directement, il existe une commande pour configurer les données qui s'y trouvent, au cas où cela serait nécessaire :
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
Cela vous permettra de définir les différents comptes AWS que vous utilisez dans votre environnement et les IP CIDR connues.
Si vous utilisez AWS Organizations, vous pouvez également ajouter automatiquement les comptes membres de l'organisation à config.json en utilisant :
python cloudmapper.py configure discover-organization-accounts
Vous devez être authentifié auprès de la CLI AWS et disposer de l'autorisation organization:ListAccounts avant d'exécuter cette commande.
Il se peut que certains éléments d'audit ne vous intéressent pas. Vous pouvez ignorer complètement la vérification, ou seulement des ressources spécifiques. Copiez config/audit_config_override.yaml.example vers config/audit_config_override.yaml et modifiez le fichier en fonction des commentaires qui s'y trouvent.
Le conteneur Docker créé est destiné à être utilisé de manière interactive.
docker build -t cloudmapper .
Cloudmapper doit effectuer des appels IAM et ne peut pas utiliser des informations d'identification de session pour la collecte, vous ne pouvez donc pas utiliser le serveur aws-vault si vous souhaitez collecter des données, et vous devez transmettre directement les informations d'identification de rôle ou configurer manuellement les informations d'identification AWS à l'intérieur du conteneur. Le code suivant expose vos informations d'identification brutes à l'intérieur du conteneur.
(
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
)
Cela vous placera dans le conteneur. Exécutez aws sts get-caller-identity pour confirmer que tout est correctement configuré. Les données de démonstration de Cloudmapper ne sont pas copiées dans le conteneur Docker, vous devrez donc collecter des données réelles de votre système. Notez que les paramètres par défaut de Docker peuvent limiter la mémoire disponible pour votre conteneur. Par exemple, sur Mac OS, la valeur par défaut est 2 Go, ce qui peut ne pas être suffisant pour générer le rapport sur un compte de taille moyenne.
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
Vous devriez alors pouvoir consulter le rapport en visitant http://127.0.0.1:8000/account-data/report.html
Une application CDK pour déployer CloudMapper via Fargate afin qu'il s'exécute toutes les nuits, envoie les constatations d'audit sous forme d'alertes vers un canal Slack et génère un rapport sauvegardé sur S3, est décrite ici.
Pour les diagrammes réseau, vous pouvez essayer https://github.com/lyft/cartography ou https://github.com/anaynayak/aws-security-viz
Pour les outils d'audit et de sécurité AWS, voir https://github.com/toniblyx/my-arsenal-of-aws-security-tools
|
|
|
|
|