✍️ Рассказ про интерпретатор
🤔 Возможно, вы знаете, что скрипт должен начинаться с символов #!. Эта штуковина называется SheBang.
В общем после #! нужно указать путь до интерпретатора, обычно там фигурирует /bin/bash или python, например.
Данная конструкция будет использована системными вызовами семейства exec для запуска нужного интерпретатора, который в свою очередь запустит скрипт.
Если из командной строки запустить скрипт и системный вызов execve возвратит ошибку ENOEXEC. Процесс оболочки bash будет сам пытаться выполнить скрипт.
EXECVE() — выполняет программу, заданную параметром filename. Программа должна быть или бинарником или скриптом, начинающимся с #!
ENOEXEC — исполняемый файл в неизвестном формате, для другой архитектуры, или же встречены какие-то ошибки, препятствующие его выполнению.
В большинстве случаев ENOEXEC возвращается если первая строка не начинается с #! либо первая строка начинается с #! и в строке больше нет символов кроме пробелов и табуляций.
Это запустится:
#!
echo 'Have a nice day'
exit
И это тоже запустится:
# super comment
echo 'Have a nice day'
exit
И это тоже:
echo 'Have a nice bashdays'
exit
🤓 Так что не обязательно указывать #!/bin/bash, интерпретатор сам учитывает такие нюансы.
#гайд
🤔 Возможно, вы знаете, что скрипт должен начинаться с символов #!. Эта штуковина называется SheBang.
В общем после #! нужно указать путь до интерпретатора, обычно там фигурирует /bin/bash или python, например.
Данная конструкция будет использована системными вызовами семейства exec для запуска нужного интерпретатора, который в свою очередь запустит скрипт.
Если из командной строки запустить скрипт и системный вызов execve возвратит ошибку ENOEXEC. Процесс оболочки bash будет сам пытаться выполнить скрипт.
EXECVE() — выполняет программу, заданную параметром filename. Программа должна быть или бинарником или скриптом, начинающимся с #!
ENOEXEC — исполняемый файл в неизвестном формате, для другой архитектуры, или же встречены какие-то ошибки, препятствующие его выполнению.
В большинстве случаев ENOEXEC возвращается если первая строка не начинается с #! либо первая строка начинается с #! и в строке больше нет символов кроме пробелов и табуляций.
Это запустится:
#!
echo 'Have a nice day'
exit
И это тоже запустится:
# super comment
echo 'Have a nice day'
exit
И это тоже:
echo 'Have a nice bashdays'
exit
🤓 Так что не обязательно указывать #!/bin/bash, интерпретатор сам учитывает такие нюансы.
#гайд
👍10❤7👏4🔥3🥰3
🙋 Grafana Beyla
Часто для правильной интеграции инструментов мониторинга в приложение приходится добавлять агент мониторинга Observability в развёртывание или пакет. А в таких языках, как Go, нужно вручную добавлять точки трассировки. В любом случае после добавления инструментов придётся выполнить повторное развёртывание в промежуточную или производственную среду.
Автоинструментарий упрощает внедрение Observability. Grafana Beyla — автоинструментарий eBPF с открытым исходным кодом, который сейчас в стадии публичного тестирования. Beyla сообщает данные о задержках для основных запросов, а также метрики RED (Rate-Errors-Duration) для сервисов Linux HTTP/S и gRPC — и всё это без модификации кода для ручной вставки зондов.
В этой статье рассматривается, как установить и настроить Grafana Beyla с помощью Grafana Cloud для улучшения наблюдаемости приложений.
#туториал
Часто для правильной интеграции инструментов мониторинга в приложение приходится добавлять агент мониторинга Observability в развёртывание или пакет. А в таких языках, как Go, нужно вручную добавлять точки трассировки. В любом случае после добавления инструментов придётся выполнить повторное развёртывание в промежуточную или производственную среду.
Автоинструментарий упрощает внедрение Observability. Grafana Beyla — автоинструментарий eBPF с открытым исходным кодом, который сейчас в стадии публичного тестирования. Beyla сообщает данные о задержках для основных запросов, а также метрики RED (Rate-Errors-Duration) для сервисов Linux HTTP/S и gRPC — и всё это без модификации кода для ручной вставки зондов.
В этой статье рассматривается, как установить и настроить Grafana Beyla с помощью Grafana Cloud для улучшения наблюдаемости приложений.
#туториал
❤5👍2
Forwarded from Библиотека питониста | Python, Django, Flask
☁️🧩 ТОП-10 бессерверных фреймворков
Существует множество различных бессерверных фреймворков, каждый из которых предназначен для определенных задач. В этой статье рассмотрим 10 наиболее популярных из них.
Читать статью
Существует множество различных бессерверных фреймворков, каждый из которых предназначен для определенных задач. В этой статье рассмотрим 10 наиболее популярных из них.
Читать статью
👍3🔥2❤1
🤔 Очередной #дайджест для DevOps
💡 Vet — повышение безопасности при использовании open source компонентов
💡 GitOps используя Flux и Flagger — как просто реализовать в проекте Progressive Delivery
💡 Сервисы Kubernetes: ClusterIP, Nodeport и LoadBalancer — механизм предоставления доступа к внутренним и внешним приложениям
💡 Как мигрировать DoorDash из StatsD в Prometheus — как уйти от проблемы из-за пиковых сбоев трафика при использовании устаревшей StatsD-инфраструктуры
💡 Secrets Leak в CI/CD Pipelines — безопасная передача данных в сторонних ресурсах в CI/CD пайплайнах
💡 Vet — повышение безопасности при использовании open source компонентов
💡 GitOps используя Flux и Flagger — как просто реализовать в проекте Progressive Delivery
💡 Сервисы Kubernetes: ClusterIP, Nodeport и LoadBalancer — механизм предоставления доступа к внутренним и внешним приложениям
💡 Как мигрировать DoorDash из StatsD в Prometheus — как уйти от проблемы из-за пиковых сбоев трафика при использовании устаревшей StatsD-инфраструктуры
💡 Secrets Leak в CI/CD Pipelines — безопасная передача данных в сторонних ресурсах в CI/CD пайплайнах
👍7🥰4🤩3🎉2🔥1
Используете ли вы Terraform cloud?
Anonymous Poll
17%
Да, использую
1%
Нет, использую альтернативу (scalr, env0) т. к. в tfcloud нет фичей, которые мне нужны
2%
Нет, использую альтернативу (scalr, env0) т. к. tfcloud дорого юзать
10%
Нет, использую альтернативу т. к. не слышал про tfcloud
52%
Нет, у меня есть стэйт на s3/local/etc и фичи мне не нужны
17%
Свой вариант
❤3🔥1
📐📏 Протокол RADIUS: Управление доступом и безопасность в сетях
Протокол RADIUS используется для аутентификации, авторизации и учета (AAA) пользователей, пытающихся получить доступ к сетевым ресурсам, таким как сети с доступом по модему, беспроводные сети или VPN. RADIUS предназначен для управления доступом пользователей к сетевым ресурсам и обеспечения безопасности сети.
Основные функции протокола RADIUS:
🔻 Authentication: RADIUS проверяет подлинность пользователей, запросив их учетные данные, такие как имя пользователя и пароль, и сравнив их с данными, хранящимися в центральной базе данных или директории. Это позволяет сетевому оборудованию или серверам убедиться, что пользователь имеет право получить доступ к сетевым ресурсам.
🔻 Authorization: После успешной аутентификации RADIUS определяет, какие ресурсы и услуги пользователь может использовать после подключения к сети. Это включает в себя определение прав доступа, скорости соединения и других параметров.
🔻 Accounting: RADIUS отслеживает использование сетевых ресурсов пользователями, регистрируя информацию о времени, продолжительности сеанса, объеме переданных данных и других деталях. Эти данные могут использоваться для учета и мониторинга использования сети.
RADIUS широко используется в корпоративных и провайдерских сетях для обеспечения безопасности и управления доступом пользователей к сетевым ресурсам. Этот протокол также может интегрироваться с различными типами сетевого оборудования и программными решениями, что делает его важным инструментом для управления сетевой инфраструктурой.
#обучалка
Протокол RADIUS используется для аутентификации, авторизации и учета (AAA) пользователей, пытающихся получить доступ к сетевым ресурсам, таким как сети с доступом по модему, беспроводные сети или VPN. RADIUS предназначен для управления доступом пользователей к сетевым ресурсам и обеспечения безопасности сети.
Основные функции протокола RADIUS:
🔻 Authentication: RADIUS проверяет подлинность пользователей, запросив их учетные данные, такие как имя пользователя и пароль, и сравнив их с данными, хранящимися в центральной базе данных или директории. Это позволяет сетевому оборудованию или серверам убедиться, что пользователь имеет право получить доступ к сетевым ресурсам.
🔻 Authorization: После успешной аутентификации RADIUS определяет, какие ресурсы и услуги пользователь может использовать после подключения к сети. Это включает в себя определение прав доступа, скорости соединения и других параметров.
🔻 Accounting: RADIUS отслеживает использование сетевых ресурсов пользователями, регистрируя информацию о времени, продолжительности сеанса, объеме переданных данных и других деталях. Эти данные могут использоваться для учета и мониторинга использования сети.
RADIUS широко используется в корпоративных и провайдерских сетях для обеспечения безопасности и управления доступом пользователей к сетевым ресурсам. Этот протокол также может интегрироваться с различными типами сетевого оборудования и программными решениями, что делает его важным инструментом для управления сетевой инфраструктурой.
#обучалка
🔥13👍3❤1
😱🔥 Очень монументальная статья со шпаргалками по протоколам коммуникации, DevOps, CI/CD, архитектурным паттернам, базам данных, кэшированию, микросервисам (и монолитам), платежным системам, Git, облачным сервисам etc.
Особую ценность представляют диаграммы — рекомендуем уделить им пристальное внимание. Инфа будет интересна всем, кто хоть как-то связан с разработкой программного обеспечения и, прежде всего, веб-приложений.
Каждая технология описывается на базовом уровне, объясняются основные вещи и подкрепляется все это информативной диаграммой.
Читать статью
#гайд
Особую ценность представляют диаграммы — рекомендуем уделить им пристальное внимание. Инфа будет интересна всем, кто хоть как-то связан с разработкой программного обеспечения и, прежде всего, веб-приложений.
Каждая технология описывается на базовом уровне, объясняются основные вещи и подкрепляется все это информативной диаграммой.
Читать статью
#гайд
👍25❤4🔥2
📦📦 Контейнеры: Rootful, Rootless, Privileged и Super Privileged
Эта статья посвящена контейнерам, различным типам (в зависимости от того, какие привилегии мы им предоставляем) и тому, как создана их изоляция: в основном пространствам имен ядра и возможностям, оверлейным файловым системам, seccomp и SELinux.
Статья подойдет для начинающих инженеров. В ней приведено очень много дополнительных ссылок на полезные материалы и ролики по теме, чтобы немного лучше понять, как комбинация механизмов изоляции контейнеров и привилегий влияет (увеличивая или уменьшая) на риск возникновения дефектов ядра.
#гайд
Эта статья посвящена контейнерам, различным типам (в зависимости от того, какие привилегии мы им предоставляем) и тому, как создана их изоляция: в основном пространствам имен ядра и возможностям, оверлейным файловым системам, seccomp и SELinux.
Статья подойдет для начинающих инженеров. В ней приведено очень много дополнительных ссылок на полезные материалы и ролики по теме, чтобы немного лучше понять, как комбинация механизмов изоляции контейнеров и привилегий влияет (увеличивая или уменьшая) на риск возникновения дефектов ядра.
#гайд
❤5🔥1
#вопросы_с_собеседований
Как процессы в системе взаимодействуют между собой?
🔹 Пайпы — связь между двумя взаимосвязанными процессами. Механизм является полудуплексным, что означает, что первый процесс связан со вторым. Для взаимодействия второго процесса с первым процессом требуется другой канал.
🔹 FIFO — Связь между двумя не связанными процессами. FIFO — это полный дуплекс, что означает, что первый процесс может взаимодействовать со вторым процессом и наоборот одновременно.
🔹 Очереди сообщений — связь между двумя или более процессами с полной дуплексной пропускной способностью. Процессы будут связываться друг с другом, отправляя сообщение и извлекая его из очереди. Полученное сообщение больше не доступно в очереди.
🔹 Совместно используемая память. Связь между двумя или более процессами достигается за счет совместного использования памяти всеми процессами. Совместно используемая память должна быть защищена друг от друга путем синхронизации доступа ко всем процессам.
🔹 Семафоры — предназначены для синхронизации доступа к нескольким процессам. Когда один процесс хочет получить доступ к памяти (для чтения или записи), он должен быть заблокирован (или защищен) и освобожден при удалении доступа. Это должно быть повторено всеми процессами для защиты данных.
🔹 Сигналы — это механизм связи между несколькими процессами посредством сигнализации. Это означает, что исходный процесс отправит сигнал (распознанный по номеру), а целевой процесс обработает его соответствующим образом.
Как процессы в системе взаимодействуют между собой?
👍11🔥2
🤔 Подготовили очередной #дайджест полезностей для DevOps
❎ Что такое утечка памяти — будет рассмотрено понимание утечек памяти, распространенные причины, инструменты и методы обнаружения утечек памяти
❎ Struggling Pods с нуля — как траблшутить Kubernetes, Refinery, OpenTelemetry Collector и Honeycomb
❎ Awesome Cyber Security University — список крутых и бесплатных образовательных ресурсов, которые фокусируются на обучении на практике
❎ Развертывание контейнеров с помощью контейнерных инструментов — основы работы с podman и контейнерами
❎ Развертывание Kubernetes на двух старых ноутбуках с помощью Gentoo — как запилить Kubernetes на Gentoo
❎ Что такое утечка памяти — будет рассмотрено понимание утечек памяти, распространенные причины, инструменты и методы обнаружения утечек памяти
❎ Struggling Pods с нуля — как траблшутить Kubernetes, Refinery, OpenTelemetry Collector и Honeycomb
❎ Awesome Cyber Security University — список крутых и бесплатных образовательных ресурсов, которые фокусируются на обучении на практике
❎ Развертывание контейнеров с помощью контейнерных инструментов — основы работы с podman и контейнерами
❎ Развертывание Kubernetes на двух старых ноутбуках с помощью Gentoo — как запилить Kubernetes на Gentoo
🔥16👍3❤1
🚍⏱️ Миграция с минимальным простоем виртуальных машин KVM между отдельными кластерами Proxmox VE
Автор статьи подробно рассказывает как решить задачу по переносу виртуальных машин KVM с одного кластера Proxmox VE на другой.
В PVE «из коробки» такой возможности нет, но онлайн‑миграцию виртуальных машин между кластерами можно выполнить средствами KVM.
Важные замечания
⚠️ Процедура протестирована для Proxmox VE 6.x
⚠️ На серверы кластера между которыми производится миграция должен быть настроен вход по SSH без пароля
Условные обозначения
✏️ pve-01 — сервер с которого будет выполняться миграцию
✏️ pve-02 — сервер на который будет выполняться миграции
✏️ 100 — исходный ID виртуальной машины
✏️ 120 — ID виртуальной машины после миграции
✏️ pc-i440fx-2.11 — чипсет виртуальной машины, в вашем случае может отличаться
✏️ 192.168.0.3 — IP-адрес сервера на который будет мигрироваться виртуалка
Подробнее тут
#гайд
Автор статьи подробно рассказывает как решить задачу по переносу виртуальных машин KVM с одного кластера Proxmox VE на другой.
В PVE «из коробки» такой возможности нет, но онлайн‑миграцию виртуальных машин между кластерами можно выполнить средствами KVM.
Важные замечания
⚠️ Процедура протестирована для Proxmox VE 6.x
⚠️ На серверы кластера между которыми производится миграция должен быть настроен вход по SSH без пароля
Условные обозначения
✏️ pve-01 — сервер с которого будет выполняться миграцию
✏️ pve-02 — сервер на который будет выполняться миграции
✏️ 100 — исходный ID виртуальной машины
✏️ 120 — ID виртуальной машины после миграции
✏️ pc-i440fx-2.11 — чипсет виртуальной машины, в вашем случае может отличаться
✏️ 192.168.0.3 — IP-адрес сервера на который будет мигрироваться виртуалка
Подробнее тут
#гайд
❤🔥11👍9
IT Elements — конференция про инфраструктуру и сеть — базовые элементы, которые создают надежный ИТ-фундамент компании
22-23 ноября на IT Elements будет 1000 экспертов, 50 спикеров, 20 кейсов, 20 демо, выставка ИТ-решений, обмен отраслевым опытом и нетворкинг.
Среди тем:
🔹 Есть ли в России SD-WAN?
🔹 DevNetOps. Автоматизация процесса эксплуатации и внедрения сети
🔹 Чем сервисная поддержка сетевого оборудования отличается от сервисной поддержки инфраструктуры?
🔹 Корпоративный ЦОД и Colocation. Разница в подходах: проектирование, строительство, эксплуатация
🔹 Состояние рынка WI-FI в России: доступные решения и перспективы
🔹 Классический подход к построению ЦОД или интеграция новых решений: практический смысл
Кому будет полезно
👉 Руководители инфраструктурных подразделений
👉 ИТ-архитекторы и инженеры по ИТ-инфраструктуре
👉 Сетевые инженеры и системные администраторы
#мероприятие
22-23 ноября на IT Elements будет 1000 экспертов, 50 спикеров, 20 кейсов, 20 демо, выставка ИТ-решений, обмен отраслевым опытом и нетворкинг.
Среди тем:
🔹 Есть ли в России SD-WAN?
🔹 DevNetOps. Автоматизация процесса эксплуатации и внедрения сети
🔹 Чем сервисная поддержка сетевого оборудования отличается от сервисной поддержки инфраструктуры?
🔹 Корпоративный ЦОД и Colocation. Разница в подходах: проектирование, строительство, эксплуатация
🔹 Состояние рынка WI-FI в России: доступные решения и перспективы
🔹 Классический подход к построению ЦОД или интеграция новых решений: практический смысл
Кому будет полезно
👉 Руководители инфраструктурных подразделений
👉 ИТ-архитекторы и инженеры по ИТ-инфраструктуре
👉 Сетевые инженеры и системные администраторы
#мероприятие
👍3❤1🔥1👏1
Linux Privilege Escalation Cheatsheet
Эта шпаргалка с примерами, предназначена тех, кто готовится к OSCP, чтобы помочь им понять различные методы повышения привилегий на компьютерах под управлением Linux и CTFS. Существует несколько способов выполнения одной и той же задачи.
В материале разбираются следующие темы:
➖ Абьюз прав Sudo
➖ SUID Binaries
➖ Capabilities
➖ Эскалация привилегий Lxd
➖ Эскалация привилегий Docker
➖ Эксплоит джобов Cron
➖ Запись в /etc/passwd
➖ Неправильно сконфигурированный NFS
➖ Эксплоит Wildcard
➖ Эскалация привилегий LD_Preload
➖ Эксплоит PATH Variable
➖ Python Library Hijacking
➖ Polkit (CVE 2021-3560)
➖ PwnKit (CVE 2021-4034)
➖ DirtyPipe (CVE 2022-0847)
#туториал
Эта шпаргалка с примерами, предназначена тех, кто готовится к OSCP, чтобы помочь им понять различные методы повышения привилегий на компьютерах под управлением Linux и CTFS. Существует несколько способов выполнения одной и той же задачи.
В материале разбираются следующие темы:
➖ Абьюз прав Sudo
➖ SUID Binaries
➖ Capabilities
➖ Эскалация привилегий Lxd
➖ Эскалация привилегий Docker
➖ Эксплоит джобов Cron
➖ Запись в /etc/passwd
➖ Неправильно сконфигурированный NFS
➖ Эксплоит Wildcard
➖ Эскалация привилегий LD_Preload
➖ Эксплоит PATH Variable
➖ Python Library Hijacking
➖ Polkit (CVE 2021-3560)
➖ PwnKit (CVE 2021-4034)
➖ DirtyPipe (CVE 2022-0847)
#туториал
❤🔥13👍8👏2❤1
SadServers — это SaaS, где пользователи могут проверить свои навыки устранения неполадок на реальных серверах Linux.
Там есть наборы сценариев, описание того, что не так, и тест, чтобы проверить, была ли проблема решена. Сервер запускается на лету, пользователи получают SSH через веб (уничтожаемый по истечении отведенного на решение задачи времени), а затем можно пытаться решить проблему.
Проблемы включают в себя распространенное ПО, работающее под управлением Linux, такое как БД или веб-сервера. Также включены сценарии, в которых необходимо быть знакомым с технологией, связанной с проблемой, например, вопросы по Docker. Задачи по большей части соответствуют «боевым», из реальной серверной.
Сервис ориентирован на пользователей, которые являются профессиональными разработчиками ПО, системными администраторами, инженерами DevOps/SRE и смежными должностями, требующими навыков отладки серверов и устранения неполадок.
#полезный софт
Там есть наборы сценариев, описание того, что не так, и тест, чтобы проверить, была ли проблема решена. Сервер запускается на лету, пользователи получают SSH через веб (уничтожаемый по истечении отведенного на решение задачи времени), а затем можно пытаться решить проблему.
Проблемы включают в себя распространенное ПО, работающее под управлением Linux, такое как БД или веб-сервера. Также включены сценарии, в которых необходимо быть знакомым с технологией, связанной с проблемой, например, вопросы по Docker. Задачи по большей части соответствуют «боевым», из реальной серверной.
Сервис ориентирован на пользователей, которые являются профессиональными разработчиками ПО, системными администраторами, инженерами DevOps/SRE и смежными должностями, требующими навыков отладки серверов и устранения неполадок.
#полезный софт
👍19👏2
Очередной #дайджест, но теперь с уроками по Django для админов
🌕 Что это такое, порядок установки. Что из себя представляет фреймворк, создание виртуального окружения и способы запуска тестового веб-сервера
🌕 Маршрутизация, обработка исключений запросов. Определение шаблонов для маршрутов, типы параметров: int, str, slug, uuid, path, функция re_path()
🌕 CRUD — основы ORM. Рассматриваются базовые операции добавления, чтения, изменения и удаления записей из таблицы БД с использованием ORM-интерфейса
🌕 Формирование URL-адресов. Способы формирования динамических и статических маршрутов в шаблонах с помощью тега url и метода модели get_absolute_url()
🌕 ForeignKey. Узнаете как создавать связи между таблицами (моделями) БД
🌕 Что это такое, порядок установки. Что из себя представляет фреймворк, создание виртуального окружения и способы запуска тестового веб-сервера
🌕 Маршрутизация, обработка исключений запросов. Определение шаблонов для маршрутов, типы параметров: int, str, slug, uuid, path, функция re_path()
🌕 CRUD — основы ORM. Рассматриваются базовые операции добавления, чтения, изменения и удаления записей из таблицы БД с использованием ORM-интерфейса
🌕 Формирование URL-адресов. Способы формирования динамических и статических маршрутов в шаблонах с помощью тега url и метода модели get_absolute_url()
🌕 ForeignKey. Узнаете как создавать связи между таблицами (моделями) БД
❤🔥14🔥3👍2