Я пытаюсь ограничить пользователя демона резервного копирования (которому нужен root-доступ к клиентским машинам), чтобы он мог использовать только одну команду, которая ему нужна. Таким образом, в / etc / sudoers я использую
daemonuser ALL=NOPASSWD: /backup/command --with --args *
Я слышал от коллеги, что этот метод больше не считается безопасным, но я не смог найти никаких подробностей. Есть ли какие-либо вопросы безопасности, о которых мне нужно знать?
Вы предоставляете своему демону-пользователю доступ без пароля. Вы должны убедиться, что никто, кроме root, не имеет права записи в скрипт. Кроме того, это должно быть достаточно безопасно. Вы всегда можете попросить своего коллегу сослаться на «услышанное».
Единственная проблема со списками аргументов, о которой я знаю, - это когда люди пытаются объединить разрешенную команду с попыткой исключить определенные аргументы, используя !
. Например, позволяя кому-то rm
как root, но не позволяя им стереть всю систему, можно попробовать с помощью списка команд, например
/bin/rm, !/bin/rm -rf /
за исключением того, что это не решило бы проблему, поскольку пользователь все еще мог запускать rm -fr /
или rm -r -f /
или rm -rf .
находясь в корневом каталоге, или rm -rf ../../../../../../..
и так далее.
Для вас это, наверное, и ежу понятно, но для полноты картины:
Вам нужно будет убедиться, что / backup / command защищен от экранирования оболочки и подобных символов. Распространенной ошибкой является, например, наличие '\ n' в именах файлов, что позволяет вставлять произвольные строки во входные данные xargs и тому подобное. Многие решения для резервного копирования не принимают высоких мер предосторожности для защиты своих входных данных, поэтому вы, возможно, захотите проверить правильность сценария резервного копирования.
Обычное правило - вы должны доказать, что то, что вы делаете, безопасно.
Я могу вам сказать, что ваш вопрос является «безопасным» с двумя основными оговорками:
Вы установили NOPASSWD
поэтому система никогда не спросит демонпользователь пользователь для пароля для выполнения этой команды. Поскольку это для демона (вероятно, не интерактивного), это кажется мне разумным.
(также вы должны специально установить NOPASSWD
, и, предположительно, вы знаете, что делаете…)
Если в установленной вами версии sudo есть брешь в безопасности, вы подвержены ей.
Проверьте установленную версию sudo и убедитесь, что она актуальна.
Ваш поясняющий комментарий звучит так: "У меня есть друг, друг, который слышал о дыре в системе безопасности. foo
, но мы не знаем, что это такое ". Безопасность - это то, к чему нужно относиться очень серьезно, но при отсутствии известного недостатка мы можем говорить о том, что кто-то действует на основании информации 5-летней давности о недостатках безопасности в sudo
и машут руками ...