Грэм Хелтон только что опубликовал раскрытие уязвимости Kubernetes, которая позволяет выполнять произвольные команды в любом pod’е в кластере, используя распространённое «read-only» RBAC-разрешение. И этой уязвимости не будет присвоен CVE, а значит, Kubernetes не получит фикс 🤷♂️ 🤷♂️ 🤷♂️
https://grahamhelton.com/blog/nodes-proxy-rce
Но есть и хорошая новость. Грэм подготовил короткий вспомогательный пост, целиком посвящённый воспроизведению уязвимости, и он оформлен как туториал в iximiuz Labs:
https://labs.iximiuz.com/tutorials/nodes-proxy-rce-c9e436a9
- Скрипт для анализа кластера на наличие таких прав у SA
👉 DevOps Portal
https://grahamhelton.com/blog/nodes-proxy-rce
Но есть и хорошая новость. Грэм подготовил короткий вспомогательный пост, целиком посвящённый воспроизведению уязвимости, и он оформлен как туториал в iximiuz Labs:
https://labs.iximiuz.com/tutorials/nodes-proxy-rce-c9e436a9
- Скрипт для анализа кластера на наличие таких прав у SA
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5
Dockadvisor - быстрый, легковесный линтер Dockerfile написанный на Go, который помогает найти различные общие проблемы и анти-паттерны.
В его составе порядка 60 правил, все достаточно стандартно для подобных инструментов (Dockle*, Hadolint, KICS, Checkov, Semgrep). Из приятного есть наличие красивого web-интерфейса с подсветкой и при этом можно использовать как и чисто go библиотеку.
GitHub: dockadvisor
👉 DevOps Portal
В его составе порядка 60 правил, все достаточно стандартно для подобных инструментов (Dockle*, Hadolint, KICS, Checkov, Semgrep). Из приятного есть наличие красивого web-интерфейса с подсветкой и при этом можно использовать как и чисто go библиотеку.
GitHub: dockadvisor
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍3
Kubelet – это "руки и ноги" Kubernetes: компонент, который работает на каждом узле и приводит желаемое состояние к фактическому
Следующий урок курса «Kubernetes the Very Hard Way» даёт углублённое представление о kubelet
Доступно на iximiuz Labs: https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997/worker-node/kubelet
👉 DevOps Portal
Следующий урок курса «Kubernetes the Very Hard Way» даёт углублённое представление о kubelet
Доступно на iximiuz Labs: https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997/worker-node/kubelet
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Простой YAML для деплоя EKS-кластера
В этом туториале по Kubernetes вы научитесь за несколько минут создавать AWS EKS-кластер с помощью YAML-конфига eksctl.
Также будут рассмотрены ключевые концепции eksctl.
Так как же работает eksctl?
Когда вы применяете YAML-файл eksctl или выполняете команду создания кластера, под капотом деплоятся шаблоны CloudFormation.
По сути, именно шаблоны CloudFormation и разворачивают кластер.
eksctl – это всего лишь обёртка над CloudFormation.
Читайте подробнее:
https://devopscube.com/create-aws-eks-cluster-eksctl/
👉 DevOps Portal
В этом туториале по Kubernetes вы научитесь за несколько минут создавать AWS EKS-кластер с помощью YAML-конфига eksctl.
Также будут рассмотрены ключевые концепции eksctl.
Так как же работает eksctl?
Когда вы применяете YAML-файл eksctl или выполняете команду создания кластера, под капотом деплоятся шаблоны CloudFormation.
По сути, именно шаблоны CloudFormation и разворачивают кластер.
eksctl – это всего лишь обёртка над CloudFormation.
Читайте подробнее:
https://devopscube.com/create-aws-eks-cluster-eksctl/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
А вы знали, что можно запускать поды на ноде Kubernetes без control plane?
Или что с kubelet можно общаться напрямую через его API?
Зацените следующий урок курса «Kubernetes the Very Hard Way». В нём подробно разбирается, как работает kubelet изнутри:
https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997/worker-node/kubelet
👉 DevOps Portal
Или что с kubelet можно общаться напрямую через его API?
Зацените следующий урок курса «Kubernetes the Very Hard Way». В нём подробно разбирается, как работает kubelet изнутри:
https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997/worker-node/kubelet
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍1
etcd — это высокодоступное и строго согласованное key-value хранилище, которое обеспечивает работу Kubernetes, храня в нём всё состояние кластера.
Следующий урок из серии «Kubernetes the Very Hard Way», посвящённый etcd, доступен на iximiuz Labs:
https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997/control-plane/etcd
👉 DevOps Portal
Следующий урок из серии «Kubernetes the Very Hard Way», посвящённый etcd, доступен на iximiuz Labs:
https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997/control-plane/etcd
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍4
Forwarded from Между инцидентами
Тренировка для линуксоидов ⚔️ 👁 ⚔️
Всего 34 уровня. Ваша задача на каждом из них — найти ключ к следующему.
Примеры уровней:
🟢 Дан файл, внутри которого лежит hexdump несколько раз сжатого разными алгоритмами контента. Вам нужно, соответственно, реверснуть хекс и несколько раз правильными утилитами (gzip, bzip2, tar) разжать файл.
🟢 На локалхосте несколько процессов слушают порты в диапазоне от 31000 до 32000. Вам нужно найти правильный порт и отправить на него ключ от текущего уровня, используя SSL/TLS-шифрование.
Я залип на день в этой штуке. Всем советую☺️
https://overthewire.org/wargames/bandit/
P.S. Ссылка не открывается без VPN, хотя к самим тачкам-уровням по SSH без него подключиться можно.
Больше полезных материалов для девопсов/линуксоидов в канале @davydovpage
Всего 34 уровня. Ваша задача на каждом из них — найти ключ к следующему.
Примеры уровней:
Я залип на день в этой штуке. Всем советую
https://overthewire.org/wargames/bandit/
P.S. Ссылка не открывается без VPN, хотя к самим тачкам-уровням по SSH без него подключиться можно.
Больше полезных материалов для девопсов/линуксоидов в канале @davydovpage
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤6
Перестаньте вручную опрашивать Pod’ы на предмет их готовности
Используйте команду
👉 DevOps Portal
Используйте команду
kubectl wait в своих CI/CD пайплайнах или скриптах. В связке с нативными sidecar-контейнерами образца 2026 года это поможет гарантировать, что ваши logging/security агенты уже поднялись до старта основного приложенияPlease open Telegram to view this post
VIEW IN TELEGRAM
❤14👍3
Почему Zsh такой крутой 😍
В стандартных шеллах вроде bash, чтобы поработать со строками, обычно приходится пайпить переменные в
Да, это ломает переносимость скриптов из-за несовместимости с POSIX. Но для интерактивной работы и личных конфигов это на порядок быстрее и удобнее.
Самый полезный модификатор?
Синтаксис такой:
Допустим, нужно передать имя файла (
Используем
Запуск
Как только начинаешь активно использовать модификаторы, назад уже не хочется.
Ещё полезные модификаторы:
И да, снова: переносимость скриптов ограничена из-за несовместимости с POSIX.
👉 DevOps Portal
В стандартных шеллах вроде bash, чтобы поработать со строками, обычно приходится пайпить переменные в
sed, basename и прочие утилиты. В Zsh эта логика встроена прямо в синтаксис расширения переменных.Да, это ломает переносимость скриптов из-за несовместимости с POSIX. Но для интерактивной работы и личных конфигов это на порядок быстрее и удобнее.
Самый полезный модификатор?
:r (root) — отрезает расширение файла.Синтаксис такой:
${file:r}Допустим, нужно передать имя файла (
game.cpp) и чтобы итоговый бинарник назывался так же (game), не прописывая имя дважды.Используем
${1:r}, чтобы автоматически убрать расширение из аргумента. Пример функции в Zsh:function grun() {
# $1 это "game.cpp"
# ${1:r} станет "game"
g++ -Wall -std=c++17 "$1" -o "${1:r}" && ./"${1:r}"
}Запуск
grun main.cpp скомпилирует и сразу запустит main – одним махом.Как только начинаешь активно использовать модификаторы, назад уже не хочется.
Ещё полезные модификаторы:
:e — получить только расширение:a — получить абсолютный путь:h — получить имя родительской директории:t — получить basenameИ да, снова: переносимость скриптов ограничена из-за несовместимости с POSIX.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5🔥4🌚3🌭1
This media is not supported in your browser
VIEW IN TELEGRAM
Как превратить init-container в sidecar-container?
В Kubernetes 1.28 появилась нативная поддержка sidecar-контейнеров через механизм init-containers.
Это стало возможным благодаря новому полю
Фича основана на концепции "персистентного init-контейнера". Init-container стартует первым, а за счёт
Такой контейнер работает на протяжении всего жизненного цикла Pod’а.
Проще говоря, чтобы превратить init-container в sidecar, достаточно добавить в его спецификацию атрибут:
Это опциональная настройка. Если restartPolicy не указан, контейнер будет работать как обычный init-container.
Нативный sidecar поддерживает поля
Чтобы подробнее разобраться в init-контейнерах и нативных sidecar-контейнерах, читайте статью:
https://devopscube.com/kubernetes-init-containers/
👉 DevOps Portal
В Kubernetes 1.28 появилась нативная поддержка sidecar-контейнеров через механизм init-containers.
Это стало возможным благодаря новому полю
restartPolicy, которое устанавливается в значение "Always".Фича основана на концепции "персистентного init-контейнера". Init-container стартует первым, а за счёт
restartPolicy получает поведение sidecar-контейнера.Такой контейнер работает на протяжении всего жизненного цикла Pod’а.
Проще говоря, чтобы превратить init-container в sidecar, достаточно добавить в его спецификацию атрибут:
restartPolicy: Always
Это опциональная настройка. Если restartPolicy не указан, контейнер будет работать как обычный init-container.
Нативный sidecar поддерживает поля
livenessProbe, readinessProbe и startupProbe. Также можно добавить lifecycle-хуки PostStart и PreStop.Чтобы подробнее разобраться в init-контейнерах и нативных sidecar-контейнерах, читайте статью:
https://devopscube.com/kubernetes-init-containers/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9
Kide — это платформа наблюдаемости (observability), которая в реальном времени принимает и индексирует логи и метрики, позволяя вам искать, анализировать данные кластеров и приложений и настраивать алерты без ожидания.
GitHub: kide
👉 DevOps Portal
GitHub: kide
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Как работает NAT?
Несколько устройств внутри сети используют приватные IP-адреса.
Маршрутизатор применяет NAT, чтобы сопоставить их с одним публичным IP-адресом в интернете.
Исходящий трафик → NAT подменяет приватный IP на публичный IP
Входящий ответ → NAT подменяет публичный IP обратно на приватный IP
👉 DevOps Portal
Несколько устройств внутри сети используют приватные IP-адреса.
Маршрутизатор применяет NAT, чтобы сопоставить их с одним публичным IP-адресом в интернете.
Исходящий трафик → NAT подменяет приватный IP на публичный IP
Входящий ответ → NAT подменяет публичный IP обратно на приватный IP
Please open Telegram to view this post
VIEW IN TELEGRAM
😁27❤10🔥4🌚3👍2
Можно ли защитить непреднамеренно открытый порт сервера с помощью файрвола?
Очевидно, что такого вообще не должно было произойти, но это уже случилось. Теперь у вас есть проблема, и при этом нет возможности перезапустить сервис с корректной конфигурацией.
Удачи: https://labs.iximiuz.com/challenges/linux-protect-ports
👉 DevOps Portal
Очевидно, что такого вообще не должно было произойти, но это уже случилось. Теперь у вас есть проблема, и при этом нет возможности перезапустить сервис с корректной конфигурацией.
Удачи: https://labs.iximiuz.com/challenges/linux-protect-ports
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁43🥱8👍5👀2🤯1
Небольшое, но интересное упражнение по отладке Kubernetes — сможете ли вы отредактировать файл в уже запущенном pod’е?
Если задача кажется слишком простой, попробуйте пройти её:
https://labs.iximiuz.com/challenges/edit-file-in-running-kubernetes-pod
Почему-то этот челлендж помечен как «hard»😉
👉 DevOps Portal
Если задача кажется слишком простой, попробуйте пройти её:
https://labs.iximiuz.com/challenges/edit-file-in-running-kubernetes-pod
Почему-то этот челлендж помечен как «hard»
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2
Кладезь практических материалов по изучению eBPF 🐝
Эта насыщенная иллюстрациями серия от Теодора Подобника поможет вам быстро войти в eBPF-разработку и начать писать собственные программы. Теодор стартует с самых основ и последовательно проводит вас путь от полного нуля в eBPF до написания сначала простых, а затем и гораздо более продвинутых программ:
Серия построена на реальных production-кейcах, а примеры из статей гарантированно компилируются и запускаются вне зависимости от вашего Linux-дистрибутива и версии ядра.
Happy hacking!🚀
👉 DevOps Portal
Эта насыщенная иллюстрациями серия от Теодора Подобника поможет вам быстро войти в eBPF-разработку и начать писать собственные программы. Теодор стартует с самых основ и последовательно проводит вас путь от полного нуля в eBPF до написания сначала простых, а затем и гораздо более продвинутых программ:
От нуля до первого eBPF-приложения
https://labs.iximiuz.com/tutorials/my-first-ebpf-program-5120140e
Хранение данных в eBPF: создаём первую eBPF map
https://labs.iximiuz.com/tutorials/ebpf-maps-tutorial-3efd4617
Инспекция и мониторинг eBPF-приложений
https://labs.iximiuz.com/tutorials/inspecting-ebpf-using-bpftool-43dfa319
eBPF Verifier: почему ядро может безопасно выполнять eBPF-программы
https://labs.iximiuz.com/tutorials/ebpf-verifier-3bd2e199
eBPF-челлендж для начинающих
https://labs.iximiuz.com/challenges/ebpf-beginner-challenge-89ffd924
eBPF Tracepoints, Kprobes или Fprobes: что выбрать?
https://labs.iximiuz.com/tutorials/ebpf-tracing-46a570d1
Почему eBPF-программа работает на одном ядре и падает на другом?
https://labs.iximiuz.com/tutorials/portable-ebpf-programs-46216e54
Разработка по-настоящему переносимых eBPF-программ и BTFHub
https://labs.iximiuz.com/tutorials/truly-portable-ebpf-a7554c66
Разные способы доставки событий ядра из eBPF в user space
https://labs.iximiuz.com/tutorials/user-space-event-delivery-2197d020
Rate limiting сетевого трафика с помощью eBPF/XDP
https://labs.iximiuz.com/tutorials/ebpf-ratelimiting-dbc12915
Практика с XDP: eBPF для высокопроизводительного сетевого стека
https://labs.iximiuz.com/tutorials/ebpf-xdp-fundamentals-6342d24e
Разработка firewall на базе eBPF с матчингом диапазонов IP через LPM trie
https://labs.iximiuz.com/tutorials/ebpf-firewall-ed03d648
С нуля: L4 load balancer на базе eBPF/XDP с использованием NAT
https://labs.iximiuz.com/tutorials/xdp-load-balancer-700a1d74
С нуля: L2 Direct Server Return load balancer на eBPF/XDP
https://labs.iximiuz.com/tutorials/xdp-dsr-layer2-lb-92b02f3e
С нуля: IP-in-IP Direct Server Return load balancer на eBPF/XDP
https://labs.iximiuz.com/tutorials/xdp-dsr-load-balancer-b701a95a
Серия построена на реальных production-кейcах, а примеры из статей гарантированно компилируются и запускаются вне зависимости от вашего Linux-дистрибутива и версии ядра.
Happy hacking!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
Прочитай это – и ты больше никогда не забудешь разницу между CMD и ENTRYPOINT в Docker.
Ответ:
🔹 ENTRYPOINT → Думай об этом как об основной команде, которая всегда выполняется при старте контейнера.
🔹 CMD → Это аргументы по умолчанию для этой команды (их можно переопределить при запуске контейнера).
Пример на картинке
➡️ Когда контейнер запускается → он выполняет ping http://google.com
➡️ Если переопределить CMD →
тогда выполнится
Запомни:
- ENTRYPOINT = что запускать
- CMD = с какими аргументами
👉 DevOps Portal
Ответ:
Пример на картинке
docker run myimage http://yahoo.comтогда выполнится
ping http://yahoo.comЗапомни:
- ENTRYPOINT = что запускать
- CMD = с какими аргументами
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤5😁2