Запуск процессов с привилегиями PARSEC
Выложена в открытый доступ утилита 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 на предмет наличия запускаемого бинарника в оном списке.
В остальном, все как обычно.
Как это всё прикрутить к собственному проекту?
- Добавьте в зависимости вашего пакета с init.d скриптом наш пакет (parsec-daemon).
- В скрипте используйте start-stop-parsec-daemon вместо start-stop-daemon .
- Укажите привилегии с помощью параметра —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.
Privsock conf astra linux
Настройка разрешений PARSEC
В дистрибутивах Linux, оснащенных подсистемой безопасности PARSEC, доступ приложений к файлам зависит от уровня привилегий. Поэтому по умолчанию SpIDer Guard может перехватывать события доступа к файлам ровно в той мере, в которой это предусмотрено его уровнем привилегий.
Кроме того, в случае если пользователь работает на отличном от нуля уровне привилегий, интерфейс пользователя Dr.Web для Linux не может взаимодействовать со SpIDer Guard и сервисными компонентами антивируса, работающими на других уровнях привилегий, в том числе может отсутствовать доступ к консолидированному карантину .
Если в ОС используется PARSEC и имеются учетные записи пользователей, работающих на уровнях привилегий, отличных от нулевого, необходимо выполнить специальную настройку Dr.Web для Linux, чтобы обеспечить взаимодействие его компонентов, запускаемых на различных уровнях привилегий.
В этом разделе рассматриваются следующие настройки PARSEC, обеспечивающие корректную работу Dr.Web для Linux:
• Настройка взаимодействия компонентов, запущенных на разных уровнях привилегий.
• Настройка автоматического запуска компонентов Dr.Web для Linux на уровне привилегий пользователя.
• Настройка SpIDer Guard для перехвата событий доступа к файлам.
Для осуществления этих операций необходимы права суперпользователя (пользователя root ). Для получения прав суперпользователя воспользуйтесь командой смены пользователя su или командой выполнения от имени другого пользователя sudo .
Настройка взаимодействия компонентов, запущенных на разных уровнях привилегий
Для ОС Astra Linux SE версии 1.6
Внесите изменения в системный файл /etc/parsec/privsock.conf , наделив демон управления конфигурацией Dr.Web для Linux ( drweb-configd ) правом на использование механизма privsock . drweb-configd — сервисный компонент Dr.Web для Linux, обеспечивающий взаимодействие всех антивирусных компонентов между собой. Механизм privsock предназначен для обеспечения функционирования системных сетевых сервисов, не осуществляющих обработку информации с использованием мандатного контекста, но взаимодействующих с процессами, работающими в мандатном контексте субъекта доступа. Для этого выполните следующее:
1. В любом текстовом редакторе откройте файл /etc/parsec/privsock.conf . Добавьте в этот файл указанные строки:
2. Сохраните файл и перезагрузите систему.
Для ОС Astra Linux SE версии 1.5 и менее
Внесите изменения в скрипт запуска демона управления конфигурацией Dr.Web для Linux ( drweb-configd ). Для этого выполните следующее:
1. Совершите вход в систему с использованием учетной записи, обладающей нулевым уровнем привилегий.
2. В любом текстовом редакторе откройте файл скрипта /etc/init.d/drweb-configd .
3. Найдите в этом файле определение функции start_daemon() , в которой замените строку
«$DAEMON» -d -p «$PIDFILE» >/dev/null 2>&1
execaps -c 0x100 — «$DAEMON» -d -p «$PIDFILE» >/dev/null 2>&1
4. В некоторых ОС (например, Astra Linux SE 1.3) может потребоваться указать дополнительно зависимость запуска компонента от подсистемы PARSEC. В этом случае также необходимо модифицировать в этом файле строку:
# Required-Start: $local_fs $network
Измените данную строку следующим образом:
# Required-Start: $local_fs $network parsec
5. Сохраните файл и перезапустите систему.
Настройка автоматического запуска компонентов на уровне привилегий пользователя
Для того, чтобы компоненты Dr.Web для Linux, с которыми взаимодействует пользователь, были доступны в его окружении (при работе пользователя на уровне привилегий, отличном от нулевого), внесите изменения в файлы настроек PAM для автоматического запуска требуемых компонентов Dr.Web для Linux при начале сессии пользователя и их завершения при окончании сессии (используется специальный PAM-модуль pam_drweb_session.so , разработанный Doctor Web, который запускает компонент-посредник drweb-session , связывающий между собой локальные копии компонентов, запущенных в окружении пользователя, с компонентами, работающими на нулевом уровне привилегий и запускающимися автоматически при загрузке ОС).
Для внесения изменений в настройки PAM вы можете использовать утилиту конфигурирования drweb-configure , входящую в состав Dr.Web для Linux (рекомендуется), либо внести изменения в необходимые файлы конфигурации вручную.
1. Использование утилиты drweb-configure
Для удобства настройки некоторых сложных параметров, обеспечивающих работоспособность Dr.Web для Linux, разработана специальная вспомогательная утилита drweb-configure .
1. Для включения или отключения автоматического запуска необходимых компонентов Dr.Web для Linux в окружении пользователя при его работе на уровне привилегий, отличном от нулевого, используйте следующую команду:
$ sudo drweb-configure session
где может принимать одно из следующих значений:
• enable — включить режим автоматического запуска нужных компонентов в сессии пользователя на его уровне привилегий.
• disable — отключить режим автоматического запуска нужных компонентов в сессии пользователя на его уровне привилегий (при этом ряд функций Dr.Web для Linux окажется недоступным).
Для получения справки по использованию drweb-configure для настройки PAM используйте команду:
$ drweb-configure —help session
2. Изменение файлов конфигурации PAM вручную
Для Аstra Linux и других дистрибутивов, использующих модуль PAM pam_parsec_mac.so
1. Чтобы изменить настройки PAM, нужно отредактировать хранящиеся в каталоге каталоге /etc/pam.d конфигурационные файлы, в которых вызывается модуль PAM pam_parsec_mac.so . Для получения полного списка таких файлов выполните команду:
# grep -R pam_parsec_mac.so /etc/pam.d
В каждый файл из списка добавьте добавьте следующие записи типа session :
• Перед первой записью типа session :
session optional pam_drweb_session.so type=close
• После последней записи типа session :
session optional pam_drweb_session.so type=open
2. Сохраните измененные файлы.
3. Создайте символическую ссылку на файл pam_drweb_session.so из системного каталога, содержащего PAM-модули. Файл pam_drweb_session.so располагается в каталоге библиотек Dr.Web для Linux /opt/drweb.com/lib/ (например, для 64-разрядных ОС — в каталоге /opt/drweb.com/lib/x86_64-linux-gnu/pam/ ).
Для Альт 8 CП и других дистрибутивов, использующих модуль pam_namespace.so
1. Чтобы изменить настройки PAM, нужно отредактировать хранящиеся в каталоге /etc/pam.d конфигурационные файлы, в которых вызывается модуль PAM pam_namespace.so . Для получения полного списка таких файлов выполните команду:
# grep -R pam_namespace.so /etc/pam.d
2. В каждый файл добавьте такие же записи типа session , что и для дистрибутивов, использующих модуль pam_parsec_mac.so (см. предыдущий параграф).
Настройка SpIDer Guard для перехвата событий доступа к файлам
Для предоставления файловому монитору SpIDer Guard возможности обнаруживать доступ к файлам, имеющим любой уровень привилегий доступа, необходимо перевести SpIDer Guard в режим работы Fanotify .
Чтобы перевести SpIDer Guard в режим работы Fanotify , выполните следующую команду :
# drweb-ctl cfset LinuxSpider.Mode Fanotify
Для получения дополнительной информации используйте команду: