SOWA Install manager (im-sowa)#
Утилита Install manager расположена в дистрибутиве в каталоге /owned-distrib/im/(altlinux|rhel)/.
Требуется предоставить обычному пользователю sudo права на инсталляционные скрипты, выполняющие привилегированные действия. При этом необходимо избежать модификации этих скриптов с целью повышения привилегий. Для решения этой проблемы можно использовать следующие подходы:
Сделать скрипт нередактируемым для пользователя (chown root. или chattr +i);
Проверка контрольной суммы с помощью sudo;
Скрипт-обертка с проверкой контрольной суммы;
Однако, первый подход малореалистичен ввиду того, что пользователь должен иметь возможность самостоятельно и с некоторой периодичностью выкачивать свежий дистрибутив, содержащий актуальные версии инсталляционных скриптов. Оставшиеся два подхода предполагают модификацию прав в sudoers с пересчетом контрольных сумм для каждой новой версии дистрибутива, что тоже затрудняет процесс обновления.
В качестве решения поставленной задачи и избежания описанных выше проблем был реализован подход, базирующийся на внедрении ЭЦП для скриптов, которые необходимо защитить от модификации и при этом сохранить возможность выполнять заданные в них привилегированные действия.
Для этого была разработана утилита im-sowa, выступающая в качестве обертки при запуске инсталляционных скриптов, но при этом она не обладает вышеописанными недостатками, так как не содержит в себе контрольных сумм. Для ее использования достаточно выполнить инсталляцию rpm-пакета и однократно прописать в sudoers путь к исполняемому бинарнику с указанием его хеш-суммы. Например, для текущей версии утилиты D-01.001.0201 наполнение sudoers для условного пользователя sowaspo будет выглядеть следующим образом:
Cmnd_Alias SOWASPO_ALLOW_CMD_001 = sha256:2a2e471de9e393809c844ad24238d5c8497f5ceb99d2d8ac66d4be876a03e607 /usr/bin/im-sowa *
sowaspo ALL=(root) NOPASSWD : SOWASPO_ALLOW_CMD_001
Для того чтобы запустить скрипт с помощью этой утилиты, необходимо, чтобы рядом с ним был расположен файл подписи с тем же именем, что и сам скрипт и дополнительным расширением .sig
Например:
install.sh
install.sh.sig
Пример запуска скрипта install.sh:
sudo im-sowa /path/to/install.sh
Утилита im-sowa доступна в составе дистрибутива СПО SOWA, начиная с версии D-2.5-0903. Утилита расположена в дистрибутиве в папке /IM.
Хеш-сумма, необходимая для заполнения sudoers, содержится в дистрибутиве в файле im-sowa.sha256.
Стоит отметить, что в общем случае обновление утилиты не требуется, чем обусловлено удобство ее применения. Единственный случай, когда это может потребоваться - это компрометация ключа, которым были сформированы ЭЦП инсталляционных скриптов.