Как настроить systemd на запуск сервисов с контекстом безопасности?
Механизм СЗИ, встроенный в systemd, позволяет запускать сервисы с контекстом безопасности.
В качестве примера рассмотрим сервис nginx.
По умолчанию nginx принимает соединения только с нулевого уровня конфиденциальности.
Для того чтобы nginx работал под первым уровнем необходимо добавить в файл nginx.service, открыв его командой:
следующую строку:
Данная строка позволяет сервису работать с первым уровнем конфиденциальности.
Далее необходимо отключить работу с IPv6 в nginx, открыв на редактирование файл /etc/nginx/sites-available/default:
где удалить или закомментировать строку: listen [::]:80 default_server;
Это необходимо, так как отсутствует стандарт на передачу мандатных меток на IPv6, работа с IPv6 возможна только под нулевым контекстом или с тегом EQU (что нежелательно и означает отключение МРД ).
Для избежания локальных утечек рекомендуется поменять контекст безопасности содержимого /var/www/html, чтобы доступ к этим файлам внутри системы был только у пользователей под первым (и выше) уровнем конфиденциальности. На работу nginx это не повлияет, так как nginx, работая на первом уровне, может читать данные с нулевого.
Для применения изменений необходимо перезагрузить сервис, набрав в командной строке:
sudo systemctl restart nginx
Теперь сайт не открывается для пользователя с нулевым уровнем конфиденциальности.
Под первым уровнем конфиденциальности сайт открывается корректно.
Посмотреть видеоурок: Настройка systemd на запуск сервисов с контекстом безопасности