файл sudoers: позвольте sudo казнь группы только определенных двоичных файлов

Я пытаюсь ограничить sudo группу на своей установке Ubuntu 19.10 только на определенном выборе ouf исполняемые файлы.

sudoers файл теперь имеет следующую форму:

Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
#%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL) NOPASSWD: /usr/bin/apt,/usr/bin/apt-key,/usr/bin/apt-add-repository,/usr/bin/make

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

Печально программы все еще не могут быть выполнены с сообщением об ошибке, например, для apt update:

Sorry, user ubuntuuser is not allowed to execute '/usr/bin/env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin apt update' as root on Ubuntumachine.

Если я добавляю /usr/bin/env к исполняемому списку я могу снова выполниться каждый и не только ограниченный список команд с sudo.

1
задан 12 November 2019 в 17:29

1 ответ

, Поскольку Вы нашли , псевдоним оболочки сделал его так каждой командой, которую Вы выполнили с sudo, выполнил команду до env, а не непосредственно.

после редактирования /etc/sudoers для ограничения то, что управляет членами sudo, группа могла работать, весь sudo, команды сообщили, что Вам не разрешили работать env. Так по некоторым причинам, каждый раз, когда Вы работали sudo command, это попыталось выполнить команду с [1 111]. Кроме того, сообщение об ошибке всегда принимало эту точную форму:

Sorry, user ubuntuuser is not allowed to execute '/usr/bin/env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin command' as root on Ubuntumachine.

Используя [1 112] таким образом общая техника для того, чтобы сделать sudo, используют Ваш $PATH, а не значение secure_path опция. Некоторые пользователи определяют псевдоним оболочки или окружают функцию, вызванную sudo, чтобы заставить sudo command выполнить что-то как этот. В Bash, работая type -a sudo показал бы все эти sudo, команда могла бы означать со значением, что оболочка выбирает показанный сначала. (type sudo показал бы просто что один.)

вспоминавший псевдоним, который Вы определили, Вы смогли решить проблему путем изменения псевдонима для не использования env. Удаление псевдонима в целом, конечно, также работало бы.

<час>

После этих слов я поощряю Вас рассматривать не использование этого sudoers конфигурация , потому что это не обладает никаким преимуществом безопасности по сравнению с конфигурацией по умолчанию. На самом деле это несколько менее безопасно, чем конфигурация по умолчанию.

основная проблема состоит в том, что, в то время как Вы, кажется, предназначаете строку

%sudo   ALL=(ALL) NOPASSWD: /usr/bin/apt,/usr/bin/apt-key,/usr/bin/apt-add-repository,/usr/bin/make

для ограничения то, что управляет членами sudo, группа может работать, , доступ к тем командам достаточен для выполнения любого действия безотносительно . Как пример того, как это так - и это - всего один пример - член sudo, группа могла создать следующий Makefile:

.PHONY: elevate
elevate:
    su -

Затем выполнение sudo make дает корневую оболочку с тем же эффектом, так же успешно входящим в систему как корень. (Или su - мог быть заменен другой командой, такой как [1 128] для упрощения редактирования sudoers файл назад. Или они могли работать visudo от корневой оболочки, данной [1 131].)

Это не может быть решено путем ограничения того, какие аргументы передаются. В этом случае, make самостоятельно не получает параметров командной строки.

другие команды Вы позволяете членам sudo, группа для выполнения также достаточна для получения полного доступа к системе. Даже apt один достаточно, чтобы позволить пользователям установить любое программное обеспечение, которое они хотят, включая программное обеспечение, которое не является ни из какого настроенного репозитория (apt install ./package.deb). Не трудно сделать собственный .deb пакет, и (среди других строк нападения) .deb пакеты может включать сценарии, которые работают как корень в то время, когда установка выполняется.

И затем существует Polkit. , Если это - настольная система, Polkit в Ubuntu настроен, чтобы позволить членам sudo группа выполнять произвольные команды как корень:

pkexec command

Даже при том, что это настроено по умолчанию для совещания способностей к членам sudo, группа, pkexec незатронута содержанием [1 139] файлы.

Это - меньше проблемы, по крайней мере, в теории, в которой Вы могли реконфигурировать Polkit.

причина я говорю, что Ваша конфигурация меньше безопасна, чем значение по умолчанию - то, что Вы используете NOPASSWD. Это означает, что любая программа, работающая как член sudo группа, может выполнить любое действие вообще как корень, не требуя никакого взаимодействия с пользователем.

последствия безопасности [1 142], хотя значительный, иногда завышены. В конце концов, взломщик, который получает контроль над прогоном программы членом sudo группа, может уже поместить фальшивку sudo утилита на месте (например, при помощи псевдонима или окружить функцию), и получите пароль пользователя. Это, вероятно, успешно выполнится. Но это - стычка, и это не мгновенно. NOPASSWD удаляет эту стычку. Можно решить, что Вы хотите сделать это, но я рекомендую рассмотреть риски тщательно, особенно если это - многопользовательская система (который она кажется, что это).

<час>

От команд Вы хотите позволить членам sudo группа работать, она кажется, что те пользователи действительно выполняют роли в администрировании системы . Это имеет смысл - в конце концов, если бы они не сделали, то они, по-видимому, не были бы членами sudo группа. Даже в "духе" Вашего sudoers конфигурация, они могут включить произвольные репозитории, установить произвольное программное обеспечение от них в масштабе всей системы, и я предполагаю разрешение им работать make, как корень так, они могут сделать то же с программным обеспечением, которое они компилируют из источника с командами как [1 150].

, Если Вы полностью доверительный члены sudo группа (или возможно это - просто Вы), но просто хотят мешать им делать неправильные вещи случайно, затем один подход мог бы быть должен сделать им отдельные отчеты, которые не находятся в sudo группа для задач, которые не требуют что они sudo базироваться.

, Если Вы не доверяете им, затем маловероятно, что существует техническое решение. Даже если бы необходимо было заблокировать вниз их способности намного больше, то это не было бы достаточно. Способность управлять, какое программное обеспечение существует в целой системе для использования всеми пользователями, всегда эквивалентна способности выполнить произвольные действия как корень.

0
ответ дан 7 December 2019 в 18:09

Другие вопросы по тегам:

Похожие вопросы: