Предисловие
В данной статье рассматривается запуск сервиса RabbitMQ с ненулевой мандатной меткой (для примера используется мандатная метка с уровнем конфиденциальности 3, категориями доступа 0 и уровнем целостности 0, т.е. 3:0:0).
При этом сервис работает на одном и только одном уровне конфиденциальности, работа одного экземпляра сервиса одновременно на нескольких уровнях конфиденциальности невозможна, так как это противоречит требованиям мандатного разграничения доступа.
Однако, при необходимости, можно запустить несколько экземпляров сервиса, каждый из которых будет работать на своём изолированном уровне.
Установка пакета
Пакет rabbitmq-server, устанавливающий службу RabbitMQ, не входит в состав стандартного дистрибутива ОС СН Atra Linux SE Смоленск 1.6, поэтому для установки службы нужно подключить репозиторий Debian.
После подключения репозитория пакет может быть rabbitmq-server установлен с помощью графического менеджера пакетов или из командной строки командами
Command |
---|
apt update && apt install rabbitmq-server |
Настройка пакета
Настройка плагинов:
Command |
---|
rabbitmq-plugins enable rabbitmq_management |
Пример вывода команды:
Раскрыть |
---|
The following plugins have been enabled: |
Добавление пользователя для RabbitMQ, задание пароля, назначение прав
Command |
---|
rabbitmqctl add_user user password && \ rabbitmqctl set_user_tags user administrator && \ rabbitmqctl set_permissions -p / user ".*" ".*" ".*" |
Для выполнения дальнейших настроек остановить службу:
Command |
---|
systemctl stop rabbitmq-server |
Информация |
---|
Остановка службы может занимать довольно много временизанимает 90 секунд, это нормально. |
Создать каталоги для работы с мандатными метками ненулевой мандатной меткой и назначить их владельцем автоматически созданного при установке пакета пользователя rabbitmq:
Command |
---|
mkdir -p /opt/rabbitmq |
Переместить файлы настроек в ранее созданный каталог:
Command |
---|
mv /etc/rabbitmq/log mkdir * /opt/rabbitmq/runchown -R rabbitmq:rabbitmq /opt/rabbitmq/etc/ |
Предупреждение |
---|
В реальности редактируемые далее файлы представляют собой ссылки на внутренние файлы RabbitMQ, поэтому для их редактирования рекомендуется использовать какой-нибудь простой текстовый редактор (например, nano или mcedit). Использование продвинутых редакторов может привести к тому, что ссылки будут заменены на копии файлов, после чего служба полностью потеряет работоспособность. |
Отредактировать конфигурационный файл /etcopt/rabbitmq/etc/rabbitmq-env.conf, добавив или изменив следующие строки (в параметре NODE_IP_ADDRESS указать ip-адрес сервера):
Информация |
---|
NODENAME=example-rabbit NODE_IP_ADDRESS=<IP-address> NODE_PORT=5672 LOG_BASE=/opt/rabbitmq/log HOME=/opt/rabbitmq MNESIA_BASE=/var/lib/rabbitmq/mnesia |
Command |
---|
mv /etc/rabbitmq/* /opt/rabbitmq/etc/ |
Отредактировать юнит запуска службы в /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service, добавив в него параметр с нужной мандатной меткой:
Информация |
---|
[Unit] Description=RabbitMQ Messaging Server After=network.target [Service] PDPLabel=3:0:0 Type=simple User=rabbitmq SyslogIdentifier=rabbitmq LimitNOFILE=65536 ExecStart=/usr/binsbin/rabbitmq-server ExecStartPost=/usr/lib/rabbitmq/bin/rabbitmq-server-wait ExecStop=/usr/binsbin/rabbitmqctl stop [Install] WantedBy=multi-user.target |
После выполнения редактирования юнита запуска службы обновить конфигурацию для загрузки внесённых изменений:
Command |
---|
systemctl daemon-reload |
Отредактировать файл запуска службы в /etc/init.d/rabbitmq-server, исправив пути к файлам:
Информация |
---|
.... |
Отредактировать запускающий файл /usr/lib/rabbitmq/bin/rabbitmq-script-wrapper, исправив пути к файлам журналов:
Информация |
---|
if [ `id -u` = `id -u rabbitmq` -a "$SCRIPT" = "rabbitmq-server" ] ; then /usr/lib/rabbitmq/bin/rabbitmq-server "$@" > "/opt/rabbitmq/log/startup_log" 2> "/opt/rabbitmq/log/startup_err" |
Отредактировать файл переменных по умолчанию /usr/lib/rabbitmq/bin/rabbitmq-defaults. Изменить пути до файлов ENABLED_PLUGINS_FILE, CONF_ENV_FILE:
Информация |
---|
... |
Назначить уровень мандатных меток на директории и файлы
Информация |
---|
pdpl-file -v 3:0:0:CCNRA CCNR /opt/ pdpl-file -Rv R 3:0:0:CCNRA CCNR /opt/rabbitmq pdpl-file -v 3:0:0:CCNRA CCNR /usr pdpl-file -v 3:0:0:CCNRA CCNR /usr/lib pdpl-file -Rv R 3:0:0:CCNRA CCNR /usr/lib/rabbitmq pdpl-file -v 3:0:0:CCNRA /var pdpl-file -v 3:0:0:CCNRA CCNR /var/lib pdpl-file -Rv R 3:0:0:CCNRA CCNR /var/lib/rabbitmq |
Создать файлы журналов и назначить на них права доступа:
Command |
---|
touch /opt/rabbitmq/log/startup_log /opt/rabbitmq/log/startup_err chown -R rabbitmq:rabbitmq /opt/rabbitmq/ |
Запустить службу:
Информация |
---|
systemctl start rabbitmq-server |