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.

Стоит отметить, что в общем случае обновление утилиты не требуется, чем обусловлено удобство ее применения. Единственный случай, когда это может потребоваться - это компрометация ключа, которым были сформированы ЭЦП инсталляционных скриптов.