
CloudMapper te ayuda a analizar tus entornos de Amazon Web Services (AWS).
Nota: La funcionalidad de Visualización de Red (comando prepare) ya no se mantiene.
CloudMapper te ayuda a analizar tus entornos de Amazon Web Services (AWS). El propósito original era generar diagramas de red y mostrarlos en tu navegador (funcionalidad ya no mantenida). Ahora contiene mucha más funcionalidad, incluyendo auditoría de problemas de seguridad.
audit: Verifica posibles configuraciones incorrectas.collect: Recopila metadatos de una cuenta. Más detalles aquí.find_admins: Examina las políticas de IAM para identificar usuarios y roles administradores, o principales con privilegios específicos. Más detalles aquí.find_unused: Busca recursos no utilizados en la cuenta. Encuentra Grupos de Seguridad, IPs Elásticas, interfaces de red, volúmenes y balanceadores de carga elásticos no utilizados.prepare/webserver: Consulta Visualizaciones de Redpublic: Encuentra hosts públicos y rangos de puertos. Más detalles aquí.sg_ips: Obtiene información geoip sobre CIDRs confiables en Grupos de Seguridad. Más detalles aquí.stats: Muestra conteos de recursos para cuentas. Más detalles aquí.weboftrust: Muestra la Red de Confianza (Web Of Trust). Más detalles aquí.report: Genera un informe HTML. Incluye un resumen de las cuentas y los hallazgos de auditoría. Más detalles aquí.iam_report: Genera un informe HTML para la información de IAM de una cuenta. Más detalles aquí.Si deseas agregar tus propios comandos privados, puedes crear un directorio private_commands y añadirlos allí.
|
Requisitos:
pip y virtualenvjq (https://stedolan.github.io/jq/) y la biblioteca pyjq (https://github.com/doloopwhile/pyjq), que requieren algunas herramientas adicionales que se mostrarán.En macOS:
# clonar el repositorio
git clone https://github.com/duo-labs/cloudmapper.git
# Instalar requisitos previos 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
En Linux:
# clonar el repositorio
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.):
# Es posible que también necesites "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
Se proporciona un pequeño conjunto de datos de demostración. Esto mostrará el mismo entorno que el sitio de demostración https://duo-labs.github.io/cloudmapper/
# Generar los datos para el mapa de red
python cloudmapper.py prepare --config config.json.demo --account demo
# Generar un informe
python cloudmapper.py report --config config.json.demo --account demo
python cloudmapper.py webserver
Esto ejecutará un servidor web local en http://127.0.0.1:8000/ Visualiza el mapa de red desde ese enlace, o visualiza el informe en http://127.0.0.1:8000/account-data/report.html
Copia config.json.demo a config.json y edítalo para incluir tu ID de cuenta y nombre (ej. "prod"), junto con cualquier nombre de CIDR externo. Un CIDR es un rango de IP tal como 1.2.3.4/32, que significa solo la IP 1.2.3.4.
Este paso utiliza la CLI para realizar llamadas describe y list y registra el json en la carpeta especificada por el nombre de la cuenta dentro de account-data.
Debes tener configuradas credenciales de AWS que puedan ser utilizadas por la CLI con permisos de lectura para los diferentes metadatos a recopilar. Recomiendo usar aws-vault. CloudMapper recopilará información de IAM, lo que significa que DEBES usar MFA. Solo el paso collect requiere acceso a AWS.
Debes tener los siguientes privilegios (que otorgan varios accesos de lectura de metadatos):
arn:aws:iam::aws:policy/SecurityAuditarn:aws:iam::aws:policy/job-function/ViewOnlyAccessLa recopilación de datos se realiza de la siguiente manera:
python cloudmapper.py collect --account my_account
A partir de aquí, prueba a ejecutar los diferentes comandos, como:
python cloudmapper.py report --account my_account
python cloudmapper.py webserver
Luego visualiza el informe en tu navegador en 127.0.0.1:8000/account-data/report.html
En lugar de modificar config.json directamente, hay un comando para configurar los datos allí, en caso de que sea necesario:
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
Esto te permitirá definir las diferentes cuentas de AWS que utilizas en tu entorno y las IPs CIDR conocidas.
Si usas AWS Organizations, también puedes agregar automáticamente cuentas miembro de la organización a config.json usando:
python cloudmapper.py configure discover-organization-accounts
Debes estar autenticado en la CLI de AWS y tener el permiso organization:ListAccounts antes de ejecutar este comando.
Puede que no te interesen algunos de los elementos de auditoría. Puede que quieras ignorar completamente la verificación, o solo recursos específicos. Copia config/audit_config_override.yaml.example a config/audit_config_override.yaml y edita el archivo según los comentarios que contiene.
El contenedor Docker que se crea está destinado a ser utilizado de forma interactiva.
docker build -t cloudmapper .
CloudMapper necesita realizar llamadas IAM y no puede usar credenciales de sesión para la recopilación, por lo que no puedes usar el servidor aws-vault si deseas recopilar datos, y debes pasar las credenciales de rol directamente o configurar las credenciales de AWS manualmente dentro del contenedor. El siguiente código expone tus credenciales sin procesar dentro del contenedor.
(
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
)
Esto te llevará al contenedor. Ejecuta aws sts get-caller-identity para confirmar que se configuró correctamente. Los datos de demostración de CloudMapper no se copian dentro del contenedor Docker, por lo que necesitarás recopilar datos en vivo de tu sistema. Ten en cuenta que los valores predeterminados de Docker pueden limitar la memoria disponible para tu contenedor. Por ejemplo, en macOS, el valor predeterminado es 2 GB, lo que puede no ser suficiente para generar el informe en una cuenta de tamaño mediano.
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
Deberías poder visualizar el informe visitando http://127.0.0.1:8000/account-data/report.html
Una aplicación CDK para desplegar CloudMapper a través de Fargate para que se ejecute cada noche, envíe hallazgos de auditoría como alertas a un canal de Slack y genere un informe que se guarde en S3, se describe aquí.
Para diagramas de red, puedes probar https://github.com/lyft/cartography o https://github.com/anaynayak/aws-security-viz
Para herramientas de auditoría y seguridad de AWS, consulta https://github.com/toniblyx/my-arsenal-of-aws-security-tools
|
|
|
|
|