Публикации Анализ безопасности в рамках системы deploy на базе отечественных ОС

Всероссийский сборник статей и публикаций института развития образования, повышения квалификации и переподготовки.


Скачать публикацию
Язык издания: русский
Периодичность: ежедневно
Вид издания: сборник
Версия издания: электронное сетевое
Публикация: Анализ безопасности в рамках системы deploy на базе отечественных ОС
Автор: Асхадулин Мансур Шамильевич

Авторы: Асхадулин Мансур Шамильевч – студент 4 курса Российского государственного университета нефти и газа (Национальный исследовательский университет) имени И.М. Губкина; Шевченко Сергей Александрович – студент 4 курса Российского государственного университета нефти и газа (Национальный исследовательский университет) имени И.М. ГубкинаКлючевые словаАвтоматизация, развертывание, Deploy, ALT Linux, управление сервисами, автоматизированное управление.ВведениеСовременные информационные системы постоянно увеличиваются в масштабах и сложности, что делает автоматизацию процессов важнейшей задачей для оптимизации ресурсов компании. Рост объемов информации, необходимость регулярного обслуживания систем и минимизация рисков, связанных с человеческим фактором, подчеркивают значимость внедрения автоматизации. Особенно важной становится задача автоматизированного развертывания и управления службами в корпоративной инфраструктуре.С учетом актуальности автоматизации, особое внимание заслуживает использование инструментов развертывания, работающих на базе операционных систем Linux, таких как ALT Linux. Такие инструменты позволяют стандартизировать процессы установки и настройки сервисов, эффективно управлять инфраструктурой, а также снижать операционные риски.Цель данной работы — изучение возможностей пакета Deploy для автоматизации развертывания системных утилит в операционной системе ALT Linux.Для достижения указанной цели в работе ставятся следующие задачи:
  • Анализ функциональных возможностей пакета Deploy;
  • Установка пакета Deploy в отечественной операционной системе ALT Linux;
  • Создание и развертывание системных приложений с использованием базовых и расширенных ролей;
  • Оценка работоспособности инструмента в различных сценариях;
  • Разработка рекомендаций по изменению конфигурации к безопасному виду и применению Deploy в бизнес-задачах.
  • Объект исследования — пакет автоматизированного развертывания Deploy.Предмет исследования — механизмы и процедуры автоматизации развертывания служб с использованием пакета Deploy.Обзор открытых инструментов автоматизации IAC, или Infrastructure as Code, представляет собой процесс подготовки (provisioning) и управления компьютерными центрами обработки данных с помощью машиночитаемых файлов определений, а не физической конфигурации оборудования или интерактивных инструментов конфигурации. Хотя область IAC является относительно новой по сравнению с конвейером автоматизации DevOps, уже существует достаточно много IAC-инструментов, и новые технологии продолжают развиваться даже в этот самый момент, что большинство из них — проекты с открытым исходным кодом. В данной главе хочется представить некоторые из наиболее известных и широко используемых IAC-инструментов, распространяемых по опенсорсным лицензиям.Эти инструменты можно разделить на две большие катергории по внутреннему устройству - Agentless и Мастер-АгентАnsible — это push agentless инструент автоматизации с открытым исходным кодом, Ansible был разработан корпорацией Red Hat и теперь является частью IBM. Один из главных преимуществ является огромное большое комьюнити, которое решало и решает типовые проблемы с которыми могут столкнуться DevOps инженеры и системные инженеры В качестве основы для конфигурирования используется протокол ssh, но также существует возможность использование других протоколов, что может быть полезно для настройки не только серверов, но и телекомунниционного оборудования, которое может не реализовывать распространенные протоколы взаимодействия. Состояние системы, ко которому мы хотим привести систему декларируется в файлах YAML – человекочитаемом формате, которые позволяет быстро анализировать состояние.Для подключения можно использовать открытые ключи ssh или аунтефикацию по паролю, что позволяет дать свободу использования на различных хостах. SaltStack, альтернативное названние - Salt, один из опенсорсных инструментов конфигурации ПО написанный на языке программирования Python, также использует модель master и slave, реализует pull модель конфигурирования. Основой Salt является то, что он имеет высокую скорость выполнения задач. Этот инструмент с открытым исходным кодом распространяется под лицензией Apache 2.0. У Salt есть большое количество поклонников и большое комьюнитиPulumi — это IAC-инструмент с открытым исходным кодом для создания и развертывания облачных сервисов и инфраструктуры. Он появился совсем недавно и уже зарекомендовал себя в кругу разработчиков. Подкупил внимание программистов тем что он очень гибкий, ведь он использует самые популярные языки программирования в отличии от других инструментов которые были рассмотрены в этом исследовании. Эти условия делают этот инструмент очень удобным и понятным для разработчиков Инструмент распространяется под лицензией Apache 2.0 и поддерживается на GitHub/Deploy на ALT Linux представляет собой автоматическое развертывание служб на локальных компьютерах.Его преимущества:Deploy устанавливает пакет из репозитория ALT Linux что дает гарантию что пакет был проверен заранее и не несет вирусов.Простота и удобство в использовании: Готовые шаблоны для установки служб, не нужно что то искать, не нужно думать что и как настраивать. Нужно просто запустить команду и все установится правильно.Таблица 1. Сравнение инструментов автоматизации.Использование линтера ansible-lint в качестве статического анализатора Ansible-lint это инструмент который помогает анализировать yaml-файлы на предмет ошибок или недочетов. На сегодняшний день разработчики должны пользоваться такими инструментами чтобы сделать свой код легчче в плане понимания, более структурированным и убрать шаблонные ошибки.В этом исследовании была выбрана утилита ansible-lint которая помогает в нахождении ошибок на любом уровне Ansible-файлов. Инструмент имеет свой стандарт который помогает делать другие Ansible-файлы такими же правильными. Самое главное что автоматический анализ файлов помогает сократить время на проверку файлов на предмет ошибок различного типа.Инструмент Ansible-lint обладает хорошо выраженными преимуществами, такими как простота в использовании, уже готовые шаблоны на проверку Ansible-файлов и настройку правил для проверки, все эти пункты делают ansible-lint очень удобным в использовании. Правила в этом инструменте можно менять так чтобы задавать порядок и способ проверку ansible-файлов. Один из плюсов является простота интеграции инструмента с процессами CI / CD, такими как Jenkins, GitLab CI / CD или GitHub Actions, вместе с другими службами намного легче создать автоматизированную систему.В первую очередь инстурмент помогает с ошибками вида: синтаксические и структурные. Гарантирует, что файлы отформатированы правильно и что нет критических ошибок, которые могут привести к ошибкам. Инструмент так же проверяет на выравнивание полей и тд что помогает избежать случайных ошибок связанных с написанием кода. Большое внимание уделяется вопросам безопасности, например, обнаружение потенциальных уязвимостей при использовании модуля оболочки без надлежащей проверки параметров. Ansible-lint помогает интегрировать проверенные файлы в большие проекты потому что ошибки уже исключены и добавление новой функции очень маловероятно повредит что то ещеРисунок 1. Проверки с ansible-lint файла main.yml в apacheБыло обнаружено много ошибок. Разберем все ошибки кроме ошибок связанных с именем файла:Yaml [truthy]: "Истинное значение должно быть одним из [false, true]" указывает на неправильное использование логических значений в файле. Альтернативное использование булевых значений, пример :”Истина”,”Ложь”. Такие значения могут восприняться не как булевое значени, а как строка что привет к ошибкам в логикеFqcn [Ядро действия]: "Использовать FQCN для действий интегрированной модуляции" Эта ошибка связана с отсутствием полного имени модуля (FQCN, полное имя коллекции). В Ansible все встроенные модули должны быть указаны с явным именем коллекции, это позволяет избежать конфликты модулей и повысить читаемость кодаСommand-instead-of-shell: "Use shell only when shell functionality is required" указывает на неправильное использование модуля оболочки, который следует использовать только в тех случаях, когда функции оболочки действительно необходимы (например, с использованием операторов &&, || или конвейеры |). В остальных случаях следует использовать командный модуль, он более безопасен, так как не дает исполнять лишний кодNo-free-form: "Avoid using free-form when calling module actions" возникает, когда используется неструктурированный вызов модулей Ansible. Неструктурированные команды приводят к ошибкам в интерпретации файла и снижают удобочитаемость файла. Yaml[indentation]: "Improper indentation detected" данная ошибка указывает на неправильный формат, не хватает отступов, это может привести к ошибкам, так как ansible-файл может запуститься неправильно.Risky-file-permissions: "Permissions may expose sensitive files" указывают на рискованные настройки прав доступа к файлам или каталогам. Выдаются слишком высокие права на файлы, что может привести в будущем к ошибкам и проблемам. Так же снижает безопасность Risky-shell-pipe: "Avoid using risky shell pipelines" сигнализирует о наличии небезопасных конструкций, связанных с использованием командных конвейеров в оболочке. Такие конструкции могут быть уязвимы для подмены данных или других атак. No-changed-when: "Commands should not change things if nothing needs doing" Ошибка указывает на отсутствие проверки состояния changed_when, которая показывает менял ли что то Ansible и завершилось ли предыдущее действие полностью. Это приводит к тому что Ansible может подумать что предыдущее действие что то изменило, что может быть не так и начать следуещееЗАКЛЮЧЕНИЕВ этом исследовании поставленная задача была выполнена, анализ yaml-файлов показал насколько он полезен при автоматизации действий. Ansible-lint показал себя отлично как инструмент с помощью которого можно найти ошибки как в логическом так и в структурном плане. Такие инструменты как ansible-lint и другие автоматические анализаторы кода очень помогают для выявления ошибок на ранних стадиях разработки. Основная задача исследования была в развертывании служб на ALT Linux. Такая утилита как deploy была найдена только на ALT Linux. В данной утилите содержаться Ansible-файлы которые помогают разворачивать службы на компьютере без их настройки. Пройдя по Ansible-файлам с помощью утилиты которую мы рассмотрели выше было выявлено много ошибок которые делают систему уязвимой и из за которых могут возникать ошибки с другими файлами или с настройкой служб. ЛИТЕРАТУРА
  • Официальная документация ALT Linux. Deploy в ALT Linux. URL: (дата обращения: 22.01.2025).
  • Руководство по установке Nextcloud на ALT Linux. Настройка Nextcloud в ALT Linux. URL: (дата обращения: 22.01.2025).
  • Руководство по настройке репозитория ALT Linux. Настройка репозитория ALT Linux. URL: Настройка_репозитория_AltLinux (дата обращения: 22.01.2025).
  • Официальная документация Ansible. Ансибл: автоматизация управления конфигурацией и развертывания приложений. URL: (дата обращения: 22.01.2025).
  • Официальный репозиторий ansible-lint. Руководство по ansible-lint. URL: (дата обращения: 22.01.2025)
  • Уймин, А. Г. Периферийные устройства ЭВМ: Практикум / А. Г. Уймин. – Москва: Ай Пи Ар Медиа, 2023. – 429 с. – ISBN 978-5-4497-2079-5. – EDN KQQFAG (дата обращения: 16.01.2025)
  • -