Выложена в открытый доступ утилита start-stop-parsec-daemon, пропатченная версия  обычного start-stop-daemon для Astra Linux Special Edition. В отличии от стандартной версии умеет запускать процессы с привилегиями PARSEC под любым пользователем.

Зачем нужна?

Штатные возможности Astra Linux Special Edition не позволяют запускать процессы (демоны) со сменой UID/GID и при этом ставить привилегии PARSEC. Невозможно, например, запускать немодифицированные программы с привилегией PRIVSOCK (возможность подключения пользователей с ненулевой мандатной меткой) с UID/GID отличными от 0 (root).

Столь плачевное положение возможно имеет причиной: а) забывчивость Русбитеха; б) вера в то, что все привилегированные процессы должны запускаться от рута. Как бы то ни было, вся обвязка связанная с запуском процессов с привилегиями PARSEC, полна тлена и баш-скриптов и порой приводит к потере работоспособности скриптов запуска.

Посему мы это все решили прекратить и сделать свой start-stop-daemon с PARSEC привилегиями, но без скриптов.

Как это работает

Пакет устанавливает команду start-stop-parsec-daemon, полностью совместимую со штатным start-stop-daemon, но позволяющую указывать привилегии PARSEC с помощью параметра --capability. Для совместимости со штатным механизмом Астры privsock, если указана привилегия 0x100 (PRIVSOCK), то команда дополнительно сверяется с файлом /etc/parsec/privsock.conf на предмет наличия запускаемого бинарника в оном списке.

В остальном, все как обычно.

Как это всё прикрутить к собственному проекту?

  1. Добавьте в зависимости вашего пакета с init.d скриптом наш пакет (parsec-daemon).
  2. В скрипте используйте start-stop-parsec-daemon вместо start-stop-daemon.
  3. Укажите привилегии с помощью параметра --capability.

Пакеты можно собрать самостоятельно из исходников, а можно взять готовые для Astra Linux Special Edition 1.3/1.4 из нашего репозитория.

Рекомендация: если вы хотите таким образом адаптировать сторонние пакеты, то наилучшим способом будет создание пакета <пакет>-parsec, в котором будет правильный LSB скрипт запуска. А postints/postrm скрипты будут отключать стандартный демон и работать с /etc/parsec/privsock.conf.

Пример

Конкретного примера не будет, смотрите нашу обвязку для RabbitMQ.

P.S. Наша версия start-stop-daemon войдет в версию 1.5 Astra Linux Special Edition.

2 комментария

  1. Господа, а вот скажите мне как художник художнику.

    Нужно мне использовать астровский apache (1.5 Смоленск) как frontend (или reverse proxy) к сервису, работающему на другом хосте.
    Причем, apache работает в среде ALD с набором мандатных меток, а сервис — вообще вне мандатного контекста.

    При этом web-юзеры работают в ALD и заходят с различными мандатными метками.
    Если метка ненулевая, имеем Service unavailable. То есть apache не может достучаться до backend.
    С нулевой меткой все работает.

    Прописывал apache в privsock, запускал его через execaps -c 0x100.
    Проверял эффективные capabilities через pscaps — все выставляется правильно.

    Но с ненулевыми мандатными метками — не работает.

    Предполагаю багу. Но все же есть еще надежда на мою криворукость.
    Need help.

Что у нас
нового

Блог

Репозиторий с обновлениями безопасности Astra Linux Special Edition

Лаборатория 50 на протяжении 5 лет поддерживает репозиторий с обновлениями безопасности Astra Linux Special Edition.

«Моно» для Astra Linux Special Edition 1.7

2 марта 2022

Выпущена версия программного комплекса «Моно» для Astra Linux Special Edition 1.7. 

Наши
контакты

Связаться с нами

Телефон 8 (812) 981-68-09
Электронная почта team@lab50.net





    Заполняя данную форму, вы принимаете условия Соглашения об использовании сайта, и соглашаетесь
    с Правилами обработки и использования персональных данных