Работа во встроенном оборудовании зачастую должна соответствовать ряду требований и условий: заранее определенный набор задач; ограниченные вычислительные ресурсы; зачастую необслуживаемый режим работы; высокая надежность системы. Для решения задачи защиты и обеспечения надежности функционирования в указанных условиях для операционной системы Astra Linux Special Edition разработан особый режим системного киоска.
В данной статье описывается новый вариант реализации системного киоска в Astra Linux Special Edition, который в эксплуатационной документации называется kiosk2. Будут приведены основные особенности указанного решения и его место в комплексе средств защиты информации операционной системы
Операционная система Astra Linux позволяет реализовать многоуровневую модель защиты от эксплуатации уязвимостей за счет одновременного применения мандатного контроля целостности, замкнутой программной среды и ограничения программной среды посредством механизмов системного киоска (рис. 1).
Первым уровнем служит политика мандатного контроля целостности, реализованная в модуле ядра – parsec, который выполняет функции монитора обращений (диспетчера доступа).
Parsec обеспечивает разделение системных компонентов операционной системы по уровням доверия, существенно сокращая поверхность атаки для злоумышленника. За счет применения указанной технологии даже использование уязвимости в ряде системных компонентов не приведет к полной компрометации системы и скрытии следов взлома. К таким компонентам мы можем отнести графический сервер, сетевые сервисы, средства виртуализации.
За счет применения механизма мандатного контроля целостности мы получаем возможность разделить программные компоненты по уровням целостности и вынести настройки системного киоска на отдельный не нулевой уровень доверия.
Второй ключевой механизм контроля целостности – это подсистема замкнутой программной среды, реализованная посредством модуля ядра digsig_verif.
Инструменты замкнутой программной среды (ЗПС) предоставляют возможность внедрения цифровой подписи в исполняемые файлы формата ELF, входящие в состав устанавливаемого ПО и в расширенные атрибуты файловой системы. Механизм ЗПС позволяет реализовать запрет на открытие файлов и загрузки модулей ядра, поставленных на контроль, с неверной электронной подписью (ЭП) или без ЭП.
Пример профиля:
+file r o: /usr/bin
+file wr ou: /dev/tty
+file r o: /etc/ld.so.cache
+file r o: /bin/bash
+file r o: /lib/terminfo/*/*
+link r o: /lib/x86_64-linux-gnu/libpthread.so.0
+file r o: /etc/init.d
+file r o: /etc/bash_completion.d/*
+file r o: /etc/profile
За счет реализации механизма замкнутой программной среды обеспечивается надежная защита от подмены компонентов операционной системы, при этом отсутствует необходимость хранения закрытого ключа подписи в защищаемой системе.
Таким образом, формируется доверенная программная среда.
Финальным компонентом обеспечения целостности системы является реализованный механизм системного киоска, работающего по принципу белого списка приложений, функционал которого реализуется также модулем ядра parsec.
Степень ограничений прав пользователей задается специально в создаваемом профиле киоска.
Инструментарий Astra Linux позволяет сформировать профиль в автоматическом режиме за счет:
- режима глобальной записи событий от действий пользователя;
- режима записи событий от конкретного приложения.
системного киоска в Astra Linux
Применение профиля системного киоска аналогично действию маски umask с тем отличием, что если umask накладывается при создании новых объектов ФС, то маска киоска накладывается на права доступа к файлу при любой попытке пользователя получить доступ. При этом для загрузки списка разрешенных операций по определенному пользователю применяется единственный дополнительный системный вызов.
Сам «системный киоск» работает по принципу конечного автомата.
При применении правил ограничения «системного киоска» происходит компиляция препроцессором профиля в бинарный файл. В ходе компиляции обрабатываются директивы включения вложенных профилей, производится преобразование пользовательского синтаксиса в формат, пригодный для проверки операций, обработка мягких ссылок и многое другое.
При этом дальнейшая обработка правил осуществляется файловым фильтром в модуле ядра parsec.
«Файловый фильтр» в модуле ядра сопоставляет:
- комбинацию режима открытия файла (read/write/create);
- флага владения файлом (u=владелец o=остальные);
- имени файла со списком разрешенных режимов+имён для данного пользователя (uid).
В системе независимо и глобально переключаются настройки сигнализации о нарушении правил (complain) и предотвращения нарушения правил (enforce).
В режиме киоска (маска по умолчанию) пользователь, для которого создан пустой профиль, не имеет возможности запустить ни одну системную программу, так как эти действия замаскированы.
При этом применение или изменение профиля пользователя позволяет в удобной форме, в том числе через графический интерфейс, управлять профилями доступа пользователей к программным компонентам, включая возможность вложенных профилей.
Все действия пользователя в киоске попадают в журнал аудита подсистемы безопасности parsec и могут быть отфильтрованы по типам событий. На рис. 4 показан журнал аудита, в котором зафиксированы неудачные попытки запустить несколько приложений, доступ к которым у пользователя в режиме киоска отсутствует.
Включение контроля доступа |
1. Включение контроля доступа с сохранением данного состояния до перезагрузки ОС: echo 1 | sudo tee /sys/module/parsec/parameters/uc_enforce
|
2. Включение контроля доступа с сохранением данного состояния после перезагрузки ОС: echo 1 | sudo tee /etc/parsec/kiosk2_enforce
|
|
Отключение контроля доступа |
1. Отключение контроля доступа с сохранением данного состояния до перезагрузки ОС: echo 0 | sudo tee /sys/module/parsec/parameters/uc_enforce
|
2. Отключение контроля доступа с сохранением данного состояния после перезагрузки ОС: echo 0 | sudo tee /etc/parsec/kiosk2_enforce
|
|
Включение режима протоколирования |
1. Включение протоколирования с сохранением данного состояния до перезагрузки ОС: echo 1 | sudo tee /sys/module/parsec/parameters/uc_complain
|
2. Включение протоколирования с сохранением данного состояния после перезагрузки ОС: echo 1 | sudo tee /etc/parsec/kiosk2_complain
|
|
Отключение режима протоколирования |
1. Отключение протоколирования с сохранением данного состояния до перезагрузки ОС: echo 0 | sudo tee /sys/module/parsec/parameters/uc_complain
|
2. Отключение протоколирования с сохранением данного состояния после перезагрузки ОС: echo 0 | sudo tee /etc/parsec/kiosk2_complain
|
Таким образом мы последовательно:
- а) разделяем доверенную среду по уровням целостности (МКЦ);
- б) фиксируем доверенную среду (ЗПС);
- в) реализуем ограниченную программную среду для пользователя, от которого работает приложение для встроенного решения (киоск).
Системный киоск не зависит от процессорной архитектуры и типов аппаратных платформ и не увеличивает расход системных ресурсов при его активации, а его эффективность сложно переоценить, поскольку он обеспечивает применение профилей для разных сценариев без пересборки и изменения состава дистрибутива.
Из особенностей реализации системного киоска можно отразить следующие моменты:
- 1. Работает с шаблонами имён файлов, а не только с фиксированными именами. Это важно на фоне использования средства инициализации systemd, которое обращается при работе с пользователем к файлам с заранее неизвестными именами.
- 2. Предсказуемо реагирует на переименования файлов (при фильтрации учитывается только новое имя, разрешения не «прилипают» к inode файла и не сохраняются при переименовании).
- 3. Работает одинаково со всеми файловыми системами (в том числе proc, sysfs), не зависит от поддержки acl на файловой системе и от ее драйвера.
- 4. Позволяет фильтровать доступ к собственным файлам пользователя, сохраняя при этом общую работоспособность системы.
- 5. Не затрагивает процессы, не выполняющиеся от пользователей с ограниченной средой исполнения, например, системные сервисы под системными аккаунтами.
Для упрощения администрирования системного киоска разработчиками Astra Linux реализована графическая утилита fly-admin-kiosk, которая позволяет управлять системным киоском в графическом режиме, легко создавать и редактировать профили.
Важным отличием настройки «системного киоска» от ручного выставления дискреционных прав на исполняемые программы является отсутствие необходимости ручного контроля прав доступа для каждого из приложений системы (так как допускается запуск только явно разрешенных приложений), а также отсутствие необходимости ручного изменения прав при обновлении системы (так как фактически права доступа определяются профилем киоска).
В заключение следует отметить, что описанная разработка хорошо дополняет уровни защиты Astra Linux Special Edition для конечных потребителей в тех решениях, где требуется жестко ограничить выбор исполняемых приложений и их работу в особых условиях эксплуатации, в том числе и во встраиваемых системах.
Источник: Журнал «Системный администратор»