Мониторинг контейнеров
2//Что такое контейнеризация?
3//Что такое контейнеризация?
4// Контрольные вопросы (1)
5// Контрольные вопросы (1)
6// Контрольные вопросы (2)
7// Контрольные вопросы (2)
8// Контрольные вопросы (3)
9// Контрольные вопросы (3)
10//Безопасность контейнеров
11//Типы атак на контейнеры
12//Атака на цепочку поставок
13//Атака на привилегированные контейнеры
14// Угрозы, связанные с уязвимыми образами
15// Эксплуатация неправильных настроек безопасности
16//Базовые методы защиты
17// Базовые методы защиты
18// Базовые методы защиты
19// Базовые методы защиты
20// Использование AppArmor, Seccomp и SELinux
21//Пример безопасного Dockerfile
22// Почему нужно мониторить контейнеры?
23//Мониторинг кластеров Kubernetes
24//Сбор метрик Kubernetes
25//Prometheus
26//Сканирование контейнеров
27//Trivy
28//Docker Scout CLI
29//Контрольные вопросы
30//Полезные ссылки
1.85M
Categories: informaticsinformatics softwaresoftware

Мониторинг контейнеров. Лекция 3. Программно-аппаратные средства защиты информации

1. Мониторинг контейнеров

Лекция 3.
Программно-аппаратные средства защиты информации

2. 2//Что такое контейнеризация?

3. 3//Что такое контейнеризация?

• Контейнеризация — метод, с помощью которого программный
код упаковывается в единый исполняемый файл вместе с
библиотеками и зависимостями, чтобы обеспечить его
корректный запуск. Такие файлы называют контейнерами.

4. 4// Контрольные вопросы (1)

• Для чего нужен Docker?

5. 5// Контрольные вопросы (1)

• Для чего нужен Docker?
• Позволяет создавать, развертывать, запускать, обновлять и
управлять контейнерами — стандартизированными
исполняемыми компонентами, объединяющими исходный код
приложения с библиотеками операционной системы (ОС) и
зависимостями, необходимыми для запуска этого кода в любой
среде.

6. 6// Контрольные вопросы (2)

• Для чего нужен Kubernetes? Что такое k8s?

7. 7// Контрольные вопросы (2)

• Для чего нужен Kubernetes? Что такое k8s?
• Kubernetes - операционная система для облачных решений,
представляющая собой открытую платформу для управления
кластерами контейнерных приложений и сервисов.
• Kubernetes = k8s (это сокращенное наименование)

8. 8// Контрольные вопросы (3)

• Из каких компонентов состоит архитектура Kubernetes?

9. 9// Контрольные вопросы (3)

• Из каких компонентов состоит архитектура Kubernetes?
• Кластер (состоит как минимум из одной ноды)
• Нода (состоит из набора машин, которые запускают
контейнерные приложения)
• Контейнеры (запускаются в ноде)

10. 10//Безопасность контейнеров

• Контейнеры и сам Kubernetes предоставляет широкие
возможности по организации и наблюдению за происходящим.
• Взломы зачастую происходят по недосмотру конфигурации
оборудования, операционных систем и ПО.

11. 11//Типы атак на контейнеры

12. 12//Атака на цепочку поставок

13. 13//Атака на привилегированные контейнеры

• Часто разработчики не
заморачиваются с определением
минимальных прав для запуска
контейнеров и запускают их с
максимальными привелегиями.
• В таких случаях атакующий может
захватить контроль над хостовой
машиной

14. 14// Угрозы, связанные с уязвимыми образами

• Образы на Docker Hub
не всегда безопасны, а
разработчики часто
пренебрегают
сканированию на
уязвимости, патчингу

15. 15// Эксплуатация неправильных настроек безопасности

1. Избегайте ненужных привилегий (контейнеры с процессами,
запущенными от root, root владелец всех исполняемых файлов
и может в них делать запись)
2. Объемный Dockerfile (безступенчатые сборки без
промежуточного контейнера, непроверенные базовые образы,
креды в докерфайле)
3. Не используется Docker/Kubernetes secrets для передачи
авторизационных данных

16. 16//Базовые методы защиты

• Минимизация привилегий — критически важный аспект
безопасности контейнеров.
• Параметр --cap-drop сбрасывает ненужные разрешения,
ограничивая возможности контейнера только теми, которые
действительно необходимы для его функционирования.
Например,
docker run --cap-drop=NET_RAW --cap-drop=MKNOD <image_name>

17. 17// Базовые методы защиты

• Стоит придерживать rootless containers, которые запускаются от имени
обычного пользователя.
• Это минимизирует риск того, что злоумышленник получит root-доступ,
даже если ему удастся скомпрометировать контейнер. Использование
контейнеров не требующих права суперпользователя делает атаки на
уровень ядра практически невозможными и усиливает общую
безопасность системы.
sudo systemctl disable --now docker.service docker.socket
sudo rm /var/run/docker.sock
sudo apt-get install -y docker-ce-rootless-extras
dockerd-rootless-setuptool.sh install (от имени не root пользователя)

18. 18// Базовые методы защиты

• Изоляция и управление сетевыми политиками
• Network Policies играют ключевую роль в безопасности
контейнеров, особенно в сложных средах. Изоляция контейнеров
через настройки сети помогает предотвратить
несанкционированный доступ и утечку данных. Docker
поддерживает изоляцию через сети, что позволяет
контролировать, какие контейнеры могут взаимодействовать друг
с другом. В k8s для сетевых настроек существует Kubernetes
Network Policies

19. 19// Базовые методы защиты

• Пример запуска контейнера базы данных Redis, с Redis
запущенном на localhost, затем запуск redis-cli и подключение к
серверу Redis через интерфейс localhost.
docker run -d --name redis example/redis --bind 127.0.0.1
docker run --rm -it --network container:redis example/redis-cli -h
127.0.0.1
• Хорошим правилом является проброс только необходимых
портов из контейнера, использование доверенного DNS-сервера

20. 20// Использование AppArmor, Seccomp и SELinux

21. 21//Пример безопасного Dockerfile

FROM python:3.12-slim
RUN apt-get update && apt-get install -y --no-install-recommends gcc
COPY . /app
WORKDIR /app
RUN pip install --no-cache-dir -r requirements.txt
USER nobody
CMD ["python", "app.py"]

22. 22// Почему нужно мониторить контейнеры?

• Мониторинг ваших контейнеров в режиме реального времени
необходим для обеспечения максимальной производительности
приложения. Однако когда дело доходит до контейнеров Docker,
мониторинг помогает вам решать следующие задачи:
1. Выявлять и устранять проблемы на ранней стадии .
2. Безопасно внедрять изменения, поскольку вся среда
контролируется.
3. Точечно настраивать приложения для повышения
производительности и удобства работы пользователей.
4. Оптимизировать распределение ресурсов.

23. 23//Мониторинг кластеров Kubernetes

• Целью мониторинга в DevOps часто является упреждающее
обеспечение оптимальной производительности и работоспособности
контейнеров, чтобы предотвратить влияние проблем на качество
обслуживания клиентов.
1. Состояние кластера Kubernetes, такое как его состояние, запущенные
контейнеры, сетевой ввод/вывод и индикаторы потребления
ресурсов.
2. Время ответа на запросы к API.
3. Запуск и развертывание подов Kubernetes.
4. Метрики ресурсов, такие как загрузка ЦП, использование памяти и
использование диска.

24. 24//Сбор метрик Kubernetes

• В целом метрики Kubernetes собираются одним из двух способов:
• DaemonSets — это класс Kubernetes, которые запускают копии
необходимых подов на всех узлах. При этом на всех нужных
подах запускается агент мониторинга для сбора показателей
работоспособности и производительности.
• Сервер метрик устанавливается как под внутри кластера
Kubernetes для сбора данных и событий из модулей и
контейнеров внутри кластера. Серверы метрик — отличный
выбор, если вы работаете с большими рабочими нагрузками и
могут отслеживать кластеры, содержащие до 5000 узлов.

25. 25//Prometheus

26. 26//Сканирование контейнеров

• Одним из способов повысить безопасность сборки контейнеров –
использование специализированных программ для сканирования
контейнеров. Примером могут послужить Trivy, Docker Scout CLI и
отечественный PT Container Security

27. 27//Trivy

• trivy image
<image_name>
• Используйте Trivy для
поиска узяимостей (CVE)
& защита конфигурации
как кода (IaC), бинарных
артефактов, образов
контейнеров, Kubernetes
кластеров и другое

28. 28//Docker Scout CLI

• Основные возможности Docker Scout CLI:
• Мониторинг и анализ уязвимостей в реальном времени
• Рекомендации по обновлению и исправлению уязвимостей
• Возможность отслеживания состояния безопасности образов в
Docker Hub и Docker Desktop
• Пример команды для сканирования:
docker scout cves <image_name>

29. 29//Контрольные вопросы

• Какие бывают типы атак на контейнеры?
• Какие атаки можно выявить в процессе мониторинга
контейнеров?
• Техники написания безопасного Dockerfile, что используем?
• Назовите средства сканирования контейнеров на уязвимости?

30. 30//Полезные ссылки

• Trivy под капотом
https://habr.com/ru/companies/swordfish_security/articles/822705/
• Курс для начинающих от reg.ru (более технический)
https://www.reg.ru/blog/k8s-dlya-nachinayushchih/
English     Русский Rules