DevSecOps Talks – Telegram
DevSecOps Talks
7.44K subscribers
85 photos
95 files
1.23K links
Рассказываем об актуальном в мире DevSecOps. Канал DevSecOps-команды "Инфосистемы Джет"
Download Telegram
Привет!

Хорошая обзорная статья про Persistent Volume и как его настроить. Каждый pod, по умолчанию, потеряет данные после того, как будет воссоздан заново.

Для того, чтобы исправить это используются механизмы Volume (грубо говоря – папку на worker node) и Persistent Volume.

Именно о вторых и пойдет речь в статье:
🍭 Что такое Persistent Volume (PV) и принципы его работы
🍭 В чем разница между Storage Class, Persistent Volume и Persistent Volume Claim
🍭 Режимы доступа (Access Modes): ROX, RWO, RWX, RWOP. Приводится краткое описание каждого режима доступа
🍭 Описание процесса выделения дискового пространства pod’у: выбор подходящего Storage Class, определение требуемого объема памяти (Persistent Volume), создание Persistent Volume Claim, чтобы у pod была возможность использования внешнего хранилища данных

В завершении статьи приводится пример того, как это можно реализовать. Как всегда, с кодом, командами и небольшими пояснениями ☺️
Всем привет!

В repo доступна ссылка на Container Security Checklist от Carol Valencia, участницы команды Aqua Security.

Подборка сделана с привязкой к жизненному циклу контейнера и покрывает аспекты ИБ, значимые как при создании образа, так и при последующей его эксплуатации в качестве контейнера (workload).

Подборка структурирована по категориям:
🍭 Secure the Build. Повышение защищенности образов во время сборки, использование Hadolint для проверки Dockerfile, сканирование образов на наличие уязвимостей, подпись образов
🍭 Secure the Container Registry. Использование private registry, управление доступом с использованием RBAC
🍭 Secure the Container Runtime. Настройка runtime в соответствии с лучшими практиками (CIS Benchmark)
🍭 Secure the Infrastructure. Управление уязвимостями и обновлениями для хостов, настройка хостов в соответствии с рекомендациями CIS Benchmark
🍭 Secure the Data. Контроль доступа к файловой системе, корректная инъекция секретов
🍭 Secure the Workloads. Контроль действий контейнеров, применение практик контроля drift prevention для обеспечения неизменяемости (immutable) контейнеров

Подборка содержит как общие советы по информационной безопасности, так и вполне конкретные действия. Также можно найти ссылки на open source инструменты и статьи, которые могут быть использованы для выполнения ряда требований
👍4
Привет!

Вчера мы писали про лучшие практики по защите контейнеров на разных этапах жизненного цикла. Одной из таких практик, применимой для runtime, является контроль drift prevention.

Есть один занимательный способ, как это можно реализовать при помощи… Admission Controller и инструмента kube-exec-controller!

Идея ребят из Box простая и достаточно элегантная:
🍭 У нас есть Validating Webhook, который срабатывает для [pods/exec, pods/attach]. Он их «пропускает», но событие мы регистрируем
🍭 Чтобы понять, к какому именно pod было «обращение» средствами kube-exec-controller вешается метка (label), в которой содержится информация о времени exec, об инициаторе
🍭 Дальше – интересней! Все pods, обладающие такой «черной меткой» начнут eviction process. Авторы подумали о том, что иногда exec бывает удобен и нужен, например, при debug. По этой причине они добавили Pod Time-To-Life (TTL), который больше для Dev-окружений и крайне мал для Prod-окружений

Чтобы с этим инструментом было проще работать ребята сделали kubectl plugin, получивший имя kubectl pi (сокращенно от pod interaction), который может показывать «меченых» и управлять временем TTL.

Если интересно – то можно почитать статью в официальном блоге Kubernetes, где детализируется этот концепт и есть наглядные схемы ☺️
👍3
Всем привет!

В статье рассказывается про то, как можно использовать возможности LinkerD для контроля трафика внутри K8S кластера.

Для этого используется механизм Traffic Policy (не путать с Network Policy), который в отличие от своего «K8S аналога» позволяет в том числе реализовать mTLS.

Статья разбита на несколько частей:
🍭 Принципы работы и способы конфигурации
🍭 Наглядный пример контроля трафика: запрет между namespace, разрешение внутри namespace, исключение из правила для некоторого трафика между namespace (например, health checks, metrics)

В завершении – подробная инструкция, «шаг за шагом», как это можно реализовать с примерами YAML и описанием действий
👍1
Всем привет!

Небольшой longread (~ 10 минут), посвященный использованию sigstore stack (Cosign, Rekor и Fulcio) для подписи и проверки подписи образов контейнеров.

Все происходит постепенно:
🍭 Сперва демонстрируются возможности Cosign для подписи «локального» образа с использованием «локальных» ключей
🍭 Далее – добавляем Rekor в качестве альтернативного/дополнительного источника истины. Схема взаимодействия и количество компонентов сильно меняется
🍭 В завершении – концепт keyless sign с использованием Fulcio и Cosign

В статье приведены наглядные схемы взаимодействия компонентов и приводится много примеров и, конечно же, код, код и еще раз код. Рекомендуем к прочтению!
👍1
Привет!

Поиск проблем в сетевом взаимодействии – не самый тривиальный процесс, особенно когда дело касается контейнеров.

Именно для этого ребята сделали netshoot, который описали, как «швейцарский нож» для идентификации проблем в сети.

Он может быть полезен для выявления причин:
🍭 Проблем с latency
🍭 Некорректного routing
🍭 Ошибок в DNS resolution
🍭 Некорректной конфигурации firewall
🍭 Ошибок в ARP

Внутри repo есть перечень всего, что включено в netshoot, а также удобная графическая диаграмма,
описывающая варианты применения инструментов и объектов для анализа.

Кроме того, в repo можно найти примеры использования netshoot (use case): iperf, tcpdump, netstat, nmap и другие.

Еще один вариант подобного инструмента - Network-MultiTool. Он является более актуальным, если смотреть по обновлениям repo.

Как и Netshoot, Network-MultiTool содержит в себе большое количество утилит для поиска проблем в сети. Есть несколько вариантов, которые отличаются набором утилит: Minimal и Extra.

Детальное описание "состава" можно найти в repo.
Всем привет!

Некоторое время назад SUSE купила NeuVector. А в январе 2022 года она сделала его open source: «The work to fully open source a formerly proprietary technology is a testament to SUSE’s open-source culture and our commitment to deliver open, interoperable and innovative solutions to our partners and customers»

NeuVector - комплексное решение по защите сред контейнерной оркестрации. У него достаточно много функций, в том числе по защите runtime:
🍭 Контроль сетевых соединений (monitor/prevent)
🍭 Контроль запускаемых процессов внутри контейнеров (monitor/prevent)
🍭 Сканирование образов контейнеров на наличие уязвимостей
🍭 Compliance-проверки для nodes
🍭 Admission controller для анализа запускаемых в кластере сущностей и многое другое

Описывать все функции в TG-посте вряд ли получится, это не полезная утилита, а полноценное решение, которое ранее было enterprise.
Если вам интересно узнать больше о его возможностях – рекомендуем почитать документацию.

P.S. Ссылка на новость о покупке NeuVector компанией SUSE
P.P.S Ссылка на новость о том, что NeuVector стал open source
Привет!

В продолжение темы анализа сетевой связности для идентификации проблем. Если вы не хотите использовать для этого контейнеры и вам удобнее работать через kubectl… то есть отличный plugin ksniff!

Он крайне прост в использовании: перенаправление tcpdump в локальный instance Wireshark.

Далее – используем привычный инструмент для разбора трафика.

Если хотите направить информацию в stdout – это также возможно (пример есть в repo).

Важно (!): согласно описанию ksniff пока лучше не использовать в production-окружениях.

P.S. О контейнерах, в которых собраны необходимые инструменты для анализа сетевого трафика мы писали тут
👍1
Всем привет!

Хорошая обзорная статья от ребят из Flant, посвященная Kube-Bench и Kube-Hunter. Это open source утилиты, которые можно использовать при анализе ИБ сред контейнерной оркестрации.

🍭 Kube-Bench анализирует узлы кластера на соответствие требованиям CIS-benchmark. Можно включать и отключать проверки на усмотрение аналитика
🍭 Kube-Hunter позволяет взглянуть на кластер «глазами атакующего». Работает в нескольких режимах: Passive и Active. При этом в Active-режиме может изменить состояние кластера

В статье автор рассказывает про общие принципы работы, про возможности запуска (локально, в виде контейнера, внутри анализируемого кластера), про возможности настройки и, что самое интересное – приводит свои мысли по поводу результатов.

Вывод простой
– использовать инструменты можно и нужно, но «слепо» следовать рекомендациям лучше не стоит. Ко всему стоит подходить с критическим мышлением и анализом возможных последствий
👍2
Всем привет!

Недавно была опубликована новая уязвимость – CVE-2022-0847, получившая имя «Dirty Pipe». Ее эксплуатация позволяет модифицировать файлы, которые должны быть доступны только для чтения.

Интересный анализ влияния этой уязвимости на контейнеры провел Rory McCune из команды Aqua Security. Он применил ее для модификации файлов в используемых образах контейнеров.

Если упростить, то модификация существующего файла в контейнере никак не должна модифицировать этот самый файл в используемом образе, что обусловлено использованием overlay filesystems.

Для проверки гипотезы Rory сделал следующее:
🍭 Взял самый обычный образ Ubuntu 21.04 с Dockerhub
🍭 При помощи exploit, подготовленного Max Kellerman, добавил “Hello world” в /etc/shells, находясь внутри контейнера [1]
🍭 Запустил новый контейнер [2] из того же самого образа Ubuntu 21.04 и… “Hello world” был в /etc/shells

Детали, screenshots и т.д. – можно посмотреть в статье по ссылке. Также рекомендуем почитать пост в блоге Max Kellerman, в котором приведено детальное описание Dirty Pipe, информация о способах противодействия (как обычно – patch) и пример рабочего exploit

P.S. Ссылка на саму CVE-2022-0847 в NVD
👍1
Привет!

В последнее время участились случаи добавления в open source проекты модификаций, применимых при использовании на территории РФ.

Они могут быть безобидными для ИТ
- например, вставка каких-то сообщений в логи, а могут быть и достаточно "ощутимыми" - например, перезапись содержимого файла (пример с VueJS).

Одним из выходов (по возможности) может быть явное указание версий (проверенных) используемого open source без обновления до последних/актуальных версий.

Второй - контроль и аналитика используемого open source в сборке и создание SBOM, чтобы оперативно понять - присутствует ли уязвимый компонент у вас или нет.

Есть инициатива по ведению реестра такого "искаженного" open source, пока что просто в google-документах. Если у вас есть, что добавить в этот перечень, нужно воспользоваться формой.
👍3
NSA_CISA_K8S.PDF
1.8 MB
Всем привет!

В марте 2022 года CISA и NSA обновили свой Kubernetes Hardening Guide.

Первая версия была выпущена в августе 2021
и получила смешанные отзывы. Отчасти это связано с тем, что первая версия рассматривала способы повышения ИБ кластера, которые были deprecated, например, Pod Security Policy.

Ребята прислушались к мнению community и доработали документ. Он состоит из следующих частей:
🍭 Threat Model
🍭 Kubernetes Pod Security
🍭 Network Separation and Hardening
🍭 Authentication and Authorization
🍭 Audit Logging and Threat Detection

Кстати, некоторые «артефакты» первой версии все еще есть в Приложениях, однако, там теперь явно указано о статусе «Deprecated». Сам документ прилагаем.
🔥3
Всем привет!

Regula – простая и удобная утилита, которая позволяет идентифицировать недостатки в конфигурационных файлах Cloud Formation, Terraform, Azure Resource Management и Kubernetes.

"Из коробки" доступна часть правил, их можно добавлять самостоятельно. Есть небольшая инструкция с рекомендациями в официальной документации.

А если не хочется тестировать локально, но все равно интересно посмотреть на результаты, то можно почитать статью, в которой:
🍭 Используется простой pod-манифест, который «с первого взгляда» вроде и не очень опасен
🍭 Этот манифест анализируется при помощи Regula далее идет процесс по привидению в соответствие с комментариями от автора

Есть несколько вариантов использования: например, локальный анализ манифестов или встраивание Regula в pipeline для автоматизации указанных проверок
Способы интеграции HashiCorp Vault и Kubernetes

Всем привет!

В статье приводится сравнение способов интеграции HashiCorp Vault и Kubernetes, которое можно реализовать несколькими способами:
🍭 Использование Vault Sidecar Injector
🍭 Использованием Vault Container Storage Interface (CSI) Provider

Начинается статья с общего описания и принципов работы Vault Sidecar и Vault CSI, что они из себя представляют и как решают задачу по инъекции секретов в контейнеры.

Далее – описываются преимущества и недостатки подходов, а в конце – самое интересное! Сводная таблица, резюмирующая все, о чем говорится в статье.

Итого: станет понятно, в чем разница и какой способ является оптимальным для вас ☺️

Если кратко, то Vault Sidecar обладает большим функционалом, однако Vault CSI гораздо проще реализовать и поддерживать.
👍5
Профилирование приложений для оптимизации их работы

Привет!

Для поиска проблем в работающем ПО зачастую обращаются к логам. Но этого может быть не всегда достаточно.

В статье автор предлагает рассмотреть возможность профилирования приложения для идентификации «проблемных мест» (bottlenecks).

Основная цель профилирования – оптимизация эффективности работы, что достигается за счет анализа потребления памяти, времени выполнения отдельных функций и т.д.

В качестве инструмента рассматривается open source продуктPyroscope. Автор приводит принципы его работы, сведения о поддерживаемых языках и об архитектуре.

В завершении – установка, настройка и несколько примеров встраивания для Python, .Net и Golang.

Полученную информацию можно фильтровать и анализировать
для того, чтобы идентифицировать наиболее ресурсоемкие/длительные операции и разбираться «а должно ли оно быть так на самом деле?»

P.S. Ссылка на открытую документацию Pyroscope
👍1
Бесплатные курсы по Dev(Sec)Ops

Всем привет!

По ссылке приводится емкий обзор бесплатных курсов по тематике Dev(Sec)Ops. Примеры того, что можно найти «внутри»:
🍭 GitOps Fundamentals
🍭 Certified Calico Operator: Level 1
🍭 Gitlab 101 Certification
🍭 Elastic Observability Fundamentals
🍭 Introduction to Service Mesh with Linkerd

И много другое! Есть как «просто курсы», так и подборки материалов (видео/статей) по теме,
как, например, VMWare Kube Academy или Aqua Cloud Native Academy
🔥8👍1
Управление инфраструктурой через… Kubernetes!

Привет!

Любите Kubernetes, любите YAML (вы правда есть?), любите писать CRD и хотите управлять всей инфраструктурой, как сущностями Kubernetes?

Тогда проект Crossplane для вас! Согласно документации, он «превращает ваш K8S кластер в универсальный control plane, что позволяет ему (кластеру) управлять ИТ-инфраструктурой и managed-сервисами».

Работает все это через CRD, которых "из коробки" достаточно много, например:
🍭 Helm
🍭 Terraform
🍭 SQL
🍭 GitLab
🍭 Styra

И другие (полный перечень можно найти по ссылке). После установки и настройки Crossplane создаем YAML-файлы с описанием, например, БД, применяем их на кластере и «общаемся» с ними через знакомые kubectl get ... и т.д.

Возможно, такой подход покажется не самым удобным, но имеет место быть, да и сама идея достаточно оригинальная.

Если хочется узнать больше про архитектуру, сценарии использования, рекомендуем почитать вот этот документ.

P.S. У Crossplane открытая документация, с которой можно ознакомиться по ссылке.
👍1
Управление правами Cluster Admin

Всем привет!

Некоторые утилиты, по умолчанию, требуют привилегий Cluster Admin. Это «удобно», но не всегда нужно и зачастую бывает избыточным.
Что можно делать в таких случаях? Вариантов несколько.

Первый – использование принципа «запрещено все, что явно не разрешено». Т.е. можно сделать Role, в которой явно прописать что и с чем можно делать. Однако, такой подход может быть достаточно ресурсоемким.

Второй вариант – использование принципа «разрешено все, что явно не запрещено». И тут появляется сложность: ролевая модель Kubernetes может давать права, но не может их отбирать. Как быть в таком случае?

Ребята из GiantSwarm решили использовать Admission Controller для решения задачи – Kyverno. Они написали политику, которая фильтровала запросы по параметрам – объект воздействия, автор запроса, действие. Таким образом, они смогли "отобрать права" на некоторые действия, даже у Cluster Admin.

Помимо рассматриваемого примера есть еще несколько use case применения Admission Controller применительно к управлению RBAC, которые описаны в статье.
👍2
Перечень container breakout уязвимостей

Привет!

По ссылке доступна сводная информация об уязвимостях, которые могут привести к несанкционированному доступу из контейнера на уровень хоста или к «побегу из контейнера».

Подборка структурирована следующим образом:
🍭 Linux CVE
🍭 runC CVE
🍭 Containerd CVE
🍭 CRI-O CVE
🍭 Docker CVE
🍭 Kubernetes CVE

Для некоторых уязвимостей, помимо общего описания, приводится дополнительная информация. Например, PoC-реализации или статьи с детальным описанием уязвимости.

Это может быть полезно, например, для изучения принципов «побега из контейнера» или для анализа сред контейнерной оркестрации на предмет отсутствия указанных CVE.
👍3
Уведомления о проблемах в pods

Привет!

Kwatch – утилита, которая позволяет получать информацию о некорректной работе приложений (с точки зрения pods) в режиме реального времени и направлять информацию, например, в Telegram!

Установка и настройка очень просты:
🍭 Необходимо определить количество строк лога, которые хочется получать. Или выбрать вариант – «покажи все!»
🍭 Указать интересующие namespace, pods которых будут проверяться на наличие проблем
🍭 Настроить интеграцию с интересующим messenger
🍭 И установить несколько флагов – например, игнорировать FailedGracefullShutdown или проверки на обновления Kwatch
🍭 Применить подготовленный манифест конфигурации и манифест самого Kwatch

Готово! Кстати, он не требует избыточных полномочий, только ClusterRole с ["get", "watch", "list"] для ["pods", "pods/log", "events"]
Анализ состояния ИБ Kubernetes

Всем привет!

В цикле статей (статья 1, статья 2) приводится общая информация о том, как можно получить доступ к кластеру Kubernetes и развить атаку.

Во многом статья базируется на постулате: «Обычно это отключено, но если конфигурация некорректна, тогда…». Приводится много примеров, в том числе команд и описание действий для самостоятельного анализа.

В частности, в статьях рассмотрены такие моменты, как:
🍭 Получение информации об exposed портах кластера
🍭 Взаимодействие с API-endpoints API-server/ETCD для получения информации
🍭 API-запросы к Kubelet, использование утилиты kubelectl для упрощения взаимодействия с API Kubelet
🍭 Получение сведений о Service Account Token и как его можно использовать для развития атаки
🍭 Способы совершения «побега» из контейнера
🍭 hostPathMount и его «особенности» с точки зрения ИБ
🍭 Использование конфигурационного файла kubectl (при условии, что он был компрометирован)

В статье нет «готовых рецептов» как и что сделать, но приводится много справочной информации, к тому же все достаточно удобно структурировано
👍1