Салют 👋,
Данная лабораторная работа посвящена изучению аудита безопасности Docker при использовании Docker Bench Security. Мы рассмотрим как с ним работать. Мы разберем как проверить конфигурации безопасности и выявить их не корректность, как произвести чекап с CIS Docker Benchmark v1.6.0.
Для сдачи данной работы также будет требоваться ответить на дополнительные вопросы по описанным темам.
lab06
├── audit.sh
├── config
│ └── nginx.conf
├── docker-compose.yml
├── README.md
└── vulnerable-app.yml-
Docker Bench Security - официальным инструментом аудита безопасности от Docker, который проверяет наличие практик при развертывания на
CIS Docker Benchmark -
Реальный аудит контейнерной безопасности выполняется на Linux‑хосте / WSL2 с нативным Docker Engine», что соответствует методике CIS и практике промышленного Docker hardening
-
Рассматриваемые вопросы безопасности
- Привилегированные контейнеры
- Захардкоженные данные учеток
- Отключенные профили безопасности (AppArmor, Seccomp)
- Прямое монтирования файловой системы
- Устаревшие образы и явный запуск сервисов от привилегированного пользователя
- Дополнительные сервисы, лишние утилиты
- Расширенные volume‑маунты
- env и SQL‑инициализации
- Примеры анти‑паттернов privileged, host‑network, docker.sock, secrets-in-env, outdated images
-
Контекст безопасности
- Не задавать пользователей с правами «root» для работы сервисов внутри контейнеров.
- Не запускать контейнеры в привилегированном режиме.
- Не отключать профили безопасности Docker.
- Не допускать запуск контейнеров, использующих тип сети «host»
- Не разрешать доступ к docker.socket изнутри контейнера. Не подключать docker socket в контейнер без необходимости, либо с использованием плагинов авторизации.
- Не использовать секреты в открытом виде в Docker-файлах образов. По возможности не использовать переменные окружения и не хранить секреты внутри контейнера. Хранение и управление секретами возложить на сторонний сервис.
- Ограничивать и контролировать использование ресурсов контейнерами. Указывать ограничения на уровне самого ПО или на уровне контейнеров для использования ресурсов хоста.
- Контролировать качество базовых образов контейнеров. Использовать официальные образы и использовать образы с минимально необходимым набором инструментов.
- Сканировать образы на наличие уязвимостей и проверки требований ИБ (Compliance Checks)
- Сбрасывание capabilities уменьшает поверхность атаки
- Файловые системы только для чтения предотвращают фальсификацию
- Пространства имен пользователя улучшает изоляцию
- 1. Необходимо установить
Docker Engineдля Linux
$ sudo apt-get update
$ sudo apt-get install -y docker.io
$ sudo usermod -aG docker "$USER"
$ sudo systemctl start docker
$ docker pull docker/docker-bench-security- 2. Проверьте работу докера и сделать скрипт
audit.shисполняемым - 3. Развернуть уязвимое приложение как отдельные стенды
$ docker compose up -d # основной web, app, postgres
$ docker-compose -f vulnerable-app.yml up -d # поверх для vulnerable-web, debug-shell
-f # file
up # создает и поднимает файлы из compose
-d # фоновый режим- 4. Запустите скрипт из
venvи проанализируйте то, что вывело на терминале и что вывело при конвертировании
$ python3 -m venv venv
$ source venv/bin/activate
$ pip install openpyxl odfpy
$ ./audit.sh
$ deactivate # или $ deactivate 2>/dev/null || true- 5. Проведите анализ уязвимостей, опишите их причину возникновения
- 6. Опишите влияния уязвимостей, их сценарий атаки
- 7. Оцените риски ИБ и предложите меры для их снижения:
- Следует разобрать
.yamlописав, что в них считается не безопасным и почему- Опишите сценарии реализации рисков CR, DL
- Предложили исправленные
.yaml
- 8. Сделайте анализ уязвимостей из сгенерированных файлов .odt, .xlsx и опишите их в отчете. Файлы конвертируются в эти директории
"├── json/ (Trivy JSON outputs)"
"├── text/ (CIS audit text outputs)"
"├── xlsx/ (Excel spreadsheets)"
"└── odt/ (OpenDocument Text files)"- 9. Подготовьте отчет
gist. - 10. Почистите кеш от
venvи остановите уязвимостей приложение, почистите контейнера
$ rm -rf venv
$ docker-compose -f demo-vulnerable-app.yml down
$ docker system prune -fПомимо аудита конфигурации (CIS Benchmark), важно сканировать сами образы на известные CVE в OS-пакетах и языковых зависимостях.
- 11. Установите Trivy и просканируйте образы из
docker-compose.yml
# установка (macOS)
$ brew install aquasecurity/trivy/trivy
# установка (Linux)
$ curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
# сканирование образа из compose
$ trivy image --severity HIGH,CRITICAL <image_name>:<tag>
# JSON-отчёт для анализа
$ trivy image --format json --output audit_reports/json/trivy-report.json <image_name>:<tag>- 12. Проанализируйте результаты Trivy: определите, из каких слоёв приходят уязвимости — из базового образа или из установленных зависимостей. Предложите меры снижения: обновление base image, пиннинг версий, multi-stage build
- 13. Сравните подходы: CIS Benchmark (конфигурация хоста) vs Trivy (CVE в образах). В каких ситуациях нужен каждый?
- Права для исполнения скрипта
$ chmod +x xxx.sh # разрешение прав при permission denied- На macOS/AArch64 docker-bench-security может не запускаться из‑за ограничений Docker Desktop и это работает для Linux‑VM. На Mac используем Trivy‑скан и разбор конфигурации compose‑файлов.