
CloudMapper hilft Ihnen, Ihre Amazon Web Services (AWS)-Umgebungen zu analysieren.
Hinweis Die Netzwerkvisualisierungsfunktion (Befehl prepare) wird nicht mehr weiterentwickelt.
CloudMapper hilft Ihnen bei der Analyse Ihrer Amazon Web Services (AWS)-Umgebungen. Der ursprüngliche Zweck war die Erstellung von Netzwerkdiagrammen und deren Anzeige in Ihrem Browser (Funktion nicht mehr gepflegt). Es enthält jetzt viel mehr Funktionen, einschließlich der Überprüfung auf Sicherheitsprobleme.
audit: Überprüfung auf potenzielle Fehlkonfigurationen.collect: Sammelt Metadaten über ein Konto. Weitere Details hier.find_admins: Untersucht IAM-Richtlinien, um Administratoren und Rollen oder Prinzipalen mit bestimmten Berechtigungen zu identifizieren. Weitere Details hier.find_unused: Sucht nach ungenutzten Ressourcen im Konto. Findet ungenutzte Sicherheitsgruppen, elastische IPs, Netzwerkschnittstellen, Volumes und elastische Load Balancer.prepare/webserver: Siehe Netzwerkvisualisierungenpublic: Findet öffentliche Hosts und Portbereiche. Weitere Details hier.sg_ips: Ruft GeoIP-Informationen über in Sicherheitsgruppen vertrauenswürdige CIDRs ab. Weitere Details hier.stats: Zeigt Ressourcenzahlen für Konten an. Weitere Details hier.weboftrust: Zeigt Web of Trust an. Weitere Details hier.report: Erstellt HTML-Bericht. Enthält Zusammenfassung der Konten und Audit-Ergebnisse. Weitere Details hier.iam_report: Erstellt HTML-Bericht für die IAM-Informationen eines Kontos. Weitere Details hier.Wenn Sie eigene private Befehle hinzufügen möchten, können Sie ein private_commands-Verzeichnis erstellen und diese dort hinzufügen.
|
Requirements:
pip und virtualenvjq (https://stedolan.github.io/jq/) und die Bibliothek pyjq (https://github.com/doloopwhile/pyjq), die einige zusätzliche zu installierende Werkzeuge erfordern, die angezeigt werden.On 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
On 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
Es wird ein kleiner Satz von Beispieldaten bereitgestellt. Dadurch wird dieselbe Umgebung wie auf der Demo-Seite https://duo-labs.github.io/cloudmapper/ angezeigt.
# 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
Dadurch wird ein lokaler Webserver unter http://127.0.0.1:8000/ gestartet. Zeigen Sie die Netzwerkkarte über diesen Link an oder den Bericht unter http://127.0.0.1:8000/account-data/report.html
Kopieren Sie config.json.demo nach config.json und bearbeiten Sie es, um Ihre Konto-ID und den Kontonamen (z. B. "prod") sowie externe CIDR-Namen aufzunehmen. Ein CIDR ist ein IP-Bereich wie 1.2.3.4/32, was bedeutet, dass nur die IP 1.2.3.4 zulässig ist.
Dieser Schritt verwendet die CLI, um describe- und list-Aufrufe durchzuführen und zeichnet das JSON im durch den Kontonamen angegebenen Ordner unter account-data auf.
Sie müssen AWS-Anmeldeinformationen konfiguriert haben, die von der CLI mit Leseberechtigungen für die zu sammelnden Metadaten verwendet werden können. Ich empfehle die Verwendung von aws-vault. CloudMapper sammelt IAM-Informationen, was bedeutet, dass Sie MFA verwenden MÜSSEN. Nur der Schritt collect erfordert AWS-Zugriff.
Sie müssen über die folgenden Berechtigungen verfügen (diese gewähren diversen Lesezugriff auf Metadaten):
arn:aws:iam::aws:policy/SecurityAuditarn:aws:iam::aws:policy/job-function/ViewOnlyAccessDas Sammeln der Daten erfolgt wie folgt:
python cloudmapper.py collect --account my_account
Führen Sie von hier aus die verschiedenen Befehle aus, z. B.:
python cloudmapper.py report --account my_account
python cloudmapper.py webserver
Zeigen Sie dann den Bericht in Ihrem Browser unter 127.0.0.1:8000/account-data/report.html an
Anstatt config.json direkt zu ändern, gibt es einen Befehl, um die Daten dort zu konfigurieren, falls dies erforderlich ist:
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
Dadurch können Sie die verschiedenen AWS-Konten definieren, die Sie in Ihrer Umgebung verwenden, sowie die bekannten CIDR-IPs.
Wenn Sie AWS Organizations verwenden, können Sie auch automatisch Organisations-Mitgliedskonten zu config.json hinzufügen mit:
python cloudmapper.py configure discover-organization-accounts
Sie müssen bei der AWS CLI authentifiziert sein und die Berechtigung organization:ListAccounts besitzen, bevor Sie diesen Befehl ausführen.
Möglicherweise stellen Sie fest, dass Sie sich für einige der Audit-Elemente nicht interessieren. Möglicherweise möchten Sie die Prüfung vollständig ignorieren oder nur bestimmte Ressourcen. Kopieren Sie config/audit_config_override.yaml.example nach config/audit_config_override.yaml und bearbeiten Sie die Datei basierend auf den dortigen Kommentaren.
Der erstellte Docker-Container ist für die interaktive Nutzung gedacht.
docker build -t cloudmapper .
Cloudmapper muss IAM-Aufrufe tätigen und kann für die Sammlung keine Sitzungsanmeldeinformationen verwenden. Daher können Sie den aws-vault-Server nicht verwenden, wenn Sie Daten sammeln möchten, und müssen Rollenanmeldeinformationen direkt übergeben oder AWS-Anmeldeinformationen manuell im Container konfigurieren. Der folgende Code gibt Ihre rohen Anmeldeinformationen innerhalb des Containers preis.
(
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
)
Dadurch gelangen Sie in den Container. Führen Sie aws sts get-caller-identity aus, um zu bestätigen, dass dies korrekt eingerichtet wurde. Die Cloudmapper-Demodaten werden nicht in den Docker-Container kopiert, daher müssen Sie Live-Daten von Ihrem System sammeln. Beachten Sie, dass die Docker-Standardeinstellungen den für Ihren Container verfügbaren Speicher begrenzen können. Auf Mac OS beträgt der Standardwert beispielsweise 2 GB, was möglicherweise nicht ausreicht, um den Bericht für ein mittelgroßes Konto zu generieren.
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
Sie sollten dann den Bericht unter http://127.0.0.1:8000/account-data/report.html anzeigen können.
Eine CDK-App zur Bereitstellung von CloudMapper über Fargate, sodass es nachts ausgeführt wird, Audit-Ergebnisse als Alarme an einen Slack-Kanal sendet und einen Bericht erstellt, der auf S3 gespeichert wird, wird hier beschrieben.
Für Netzwerkdiagramme können Sie https://github.com/lyft/cartography oder https://github.com/anaynayak/aws-security-viz ausprobieren.
Für Auditing und andere AWS-Sicherheitstools siehe https://github.com/toniblyx/my-arsenal-of-aws-security-tools
|
|
|
|
|