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

Редактировал(а) Олеся 2021/10/04 12:29

Механизм СЗИ, встроенный в systemd, позволяет запускать сервисы с контекстом безопасности.

В качестве примера рассмотрим сервис nginx.

По умолчанию nginx принимает соединения только с нулевого уровня конфиденциальности.

Для того чтобы nginx работал под первым уровнем необходимо добавить в файл nginx.service, открыв его командой:

sudo mcedit /lib/systemd/system/nginx.service

следующую строку:

NESSCTX=l=1

image61.png

Данная строка позволяет сервису работать с первым уровнем конфиденциальности.

Далее необходимо отключить работу с IPv6 в nginx, открыв на редактирование файл /etc/nginx/sites-available/default:

sudo mcedit /etc/nginx/sites-available/default

где удалить или закомментировать строку: listen [::]:80 default_server;

Это необходимо, так как отсутствует стандарт на передачу мандатных меток на IPv6, работа с IPv6 возможна только под нулевым контекстом или с тегом EQU (что нежелательно и означает отключение МРД).

image62.png

Для избежания локальных утечек рекомендуется поменять контекст безопасности содержимого /var/www/html, чтобы доступ к этим файлам внутри системы был только у пользователей под первым (и выше) уровнем конфиденциальности. На работу nginx это не повлияет, так как nginx, работая на первом уровне, может читать данные с нулевого.

Для применения изменений необходимо перезагрузить сервис, набрав в командной строке:

sudo systemctl daemon-reload

sudo systemctl restart nginx

Теперь сайт не открывается для пользователя с нулевым уровнем конфиденциальности.

Под первым уровнем конфиденциальности сайт открывается корректно.


Посмотреть видеоурок: Настройка systemd на запуск сервисов с контекстом безопасности

 

strelets.net
telegram: @os_strelets