
CloudMapper помогает вам анализировать ваши среды Amazon Web Services (AWS).
Примечание: Функциональность сетевой визуализации (команда prepare) больше не поддерживается.
CloudMapper помогает анализировать ваши окружения Amazon Web Services (AWS). Первоначальная цель заключалась в создании сетевых диаграмм и их отображении в браузере (функциональность больше не поддерживается). Сейчас инструмент включает гораздо больше возможностей, включая аудит на наличие проблем безопасности.
audit: Проверка на возможные неправильные конфигурации.collect: Сбор метаданных об аккаунте. Подробнее здесь.find_admins: Просмотр политик IAM для выявления административных пользователей и ролей, или субъектов с конкретными привилегиями. Подробнее здесь.find_unused: Поиск неиспользуемых ресурсов в аккаунте. Находит неиспользуемые группы безопасности, Elastic IP, сетевые интерфейсы, тома и балансировщики нагрузки.prepare/webserver: См. Сетевые визуализацииpublic: Поиск открытых хостов и диапазонов портов. Подробнее здесь.sg_ips: Получение geoip-информации о CIDR, которые доверяются группами безопасности. Подробнее здесь.stats: Отображение количества ресурсов для аккаунтов. Подробнее здесь.weboftrust: Отображение "Паутины доверия". Подробнее здесь.report: Генерация HTML-отчета. Включает сводку по аккаунтам и результаты аудита. Подробнее здесь.iam_report: Генерация HTML-отчета по информации IAM об аккаунте. Подробнее здесь.Если вы хотите добавить свои собственные частные команды, вы можете создать каталог private_commands и добавить их туда.
|
Требования:
pip и virtualenvjq (https://stedolan.github.io/jq/) и библиотека pyjq (https://github.com/doloopwhile/pyjq), которые требуют установки дополнительных инструментов, указанных ниже.На macOS:
# клонируем репозиторий
git clone https://github.com/duo-labs/cloudmapper.git
# Устанавливаем зависимости для 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
На Linux:
# клонируем репозиторий
git clone https://github.com/duo-labs/cloudmapper.git
# (AWS Linux, Centos, Fedora, RedHat и др.):
# sudo yum install autoconf automake libtool python3-devel.x86_64 python3-tkinter python-pip jq awscli
# (Debian, Ubuntu и др.):
# Возможно, дополнительно потребуется "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
Предоставляется небольшой набор демо-данных. Он отобразит то же окружение, что и демо-сайт https://duo-labs.github.io/cloudmapper/.
# Создаем данные для сетевой карты
python cloudmapper.py prepare --config config.json.demo --account demo
# Создаем отчет
python cloudmapper.py report --config config.json.demo --account demo
python cloudmapper.py webserver
Это запустит локальный веб-сервер по адресу http://127.0.0.1:8000/ Просмотрите сетевую карту по этой ссылке или отчет по адресу http://127.0.0.1:8000/account-data/report.html
Скопируйте config.json.demo в config.json и отредактируйте его, указав идентификатор аккаунта и имя (например, "prod"), а также любые внешние имена CIDR. CIDR — это диапазон IP, такой как 1.2.3.4/32, который означает только IP 1.2.3.4.
На этом шаге с помощью CLI выполняются вызовы describe и list, а json-данные записываются в папку, имя которой соответствует имени аккаунта, в каталоге account-data.
У вас должны быть настроены учетные данные AWS, которые могут использоваться CLI с правами на чтение для сбора различных метаданных. Я рекомендую использовать aws-vault. CloudMapper будет собирать информацию IAM, поэтому необходимо использовать MFA. Только шаг collect требует доступа к AWS.
Необходимо иметь следующие привилегии (они предоставляют разнообразные права на чтение метаданных):
arn:aws:iam::aws:policy/SecurityAuditarn:aws:iam::aws:policy/job-function/ViewOnlyAccessСбор данных выполняется следующим образом:
python cloudmapper.py collect --account my_account
Затем попробуйте выполнить различные команды, например:
python cloudmapper.py report --account my_account
python cloudmapper.py webserver
Затем просмотрите отчет в браузере по адресу 127.0.0.1:8000/account-data/report.html
Вместо прямого редактирования config.json существует команда для настройки данных в нем, если это необходимо:
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
Это позволит вам определить различные аккаунты AWS, используемые в вашем окружении, и известные CIDR IP.
Если вы используете AWS Organizations, вы также можете автоматически добавить аккаунты-участники организации в config.json с помощью:
python cloudmapper.py configure discover-organization-accounts
Перед выполнением этой команды необходимо пройти аутентификацию в AWS CLI и иметь разрешение organization:ListAccounts.
Возможно, некоторые пункты аудита вам не важны. Вы можете захотеть полностью игнорировать проверку или только определенные ресурсы. Скопируйте config/audit_config_override.yaml.example в config/audit_config_override.yaml и отредактируйте файл в соответствии с комментариями внутри.
Создаваемый Docker-контейнер предназначен для интерактивного использования.
docker build -t cloudmapper .
Cloudmapper должен выполнять вызовы IAM и не может использовать сессионные учетные данные для сбора, поэтому вы не сможете использовать сервер aws-vault для сбора данных и должны передавать учетные данные роли напрямую или настроить учетные данные aws вручную внутри контейнера. Следующий код предоставляет ваши сырые учетные данные внутри контейнера.
(
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
)
Это поместит вас внутрь контейнера. Выполните aws sts get-caller-identity, чтобы убедиться в правильности настройки. Демо-данные Cloudmapper не копируются в Docker-контейнер, поэтому вам потребуется собрать реальные данные из вашей системы. Обратите внимание, что настройки Docker по умолчанию могут ограничивать память, доступную контейнеру. Например, на Mac OS по умолчанию установлено 2 ГБ, чего может быть недостаточно для генерации отчета для аккаунта среднего размера.
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
Затем вы сможете просмотреть отчет, перейдя по адресу http://127.0.0.1:8000/account-data/report.html
CDK-приложение для развертывания CloudMapper через Fargate, которое запускается еженощно, отправляет результаты аудита в качестве оповещений в канал Slack и создает отчет, сохраняемый на S3, описано здесь.
Для сетевых диаграмм вы можете попробовать https://github.com/lyft/cartography или https://github.com/anaynayak/aws-security-viz
Для аудита и других инструментов безопасности AWS см. https://github.com/toniblyx/my-arsenal-of-aws-security-tools
|
|
|
|
|