Назад | Перейти на главную страницу

Как вы можете предотвратить изменение пароля root в Linux?

Я настраиваю сервер, к которому другие люди будут иметь доступ sudo через ssh. Они могут устанавливать что-то и вносить изменения по своему усмотрению, но мне все еще нужно управлять сервером, устанавливать патчи, обновления программного обеспечения и т. Д.

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

Вы должны думать об этом вот так. Если вы дадите им пароль root или путь к нему, вы по существу спросите: «Как я могу дать им root, кроме тех случаев, когда я волшебным образом не хочу, чтобы они его имели». И ответ: «Вы не можете. Компьютеры так не работают».

Вы можете выборочно разрешить определенные команды с помощью sudo, но вы должны быть осторожны, чтобы не разрешать программы, которые разрешают доступ к оболочке, запись в символьные ссылки или одну из нескольких десятков других проблем. Вот страница о безопасных сценариях sudo: http://www.kramse.dk/projects/unix/security-sudo-script_en.html

Всегда можно было надеяться, что они не знают о команде chattr ;-)

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

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

Есть несколько вариантов:

  • Вы могли бы использовать PAM (Подключаемые модули аутентификации), чтобы вы могли войти в систему как root, независимо от того, какой пароль они установили. Есть много доступные модули, так что я просто оставлю это висеть.
  • Вы создаете «второго пользователя root», открыв / etc / passwd и добавление нового пользователя с тем же UID, что и root (0). Затем добавьте пароль в / etc / shadow файл для этого конкретного пользователя. Это позволит вам войти в систему как root, и даже если они изменят пароль на «root», ваш логин все равно будет работать.
  • Создайте сценарий оболочки, который периодически запускается, чтобы проверить, есть ли хеш пользователя root в / etc / shadow для root совпадает с тем, которым вы хотите его видеть. Если это не так, хеш изменяется обратно.

Как отмечали другие, предоставление root-доступа позволит им делать в системе все, что им нравится, и если они действительно хотят заблокировать вас; они могут. Однако приведенные выше параметры делают его труднее или менее прозрачным для них.

Solaris решил эту проблему, сделав root в качестве «роли», так что никто не имеет пароля root, а пользователь root не может войти в систему. Чтобы никто не заблокировал вас, существует множество детализированных опций безопасности; так что вы можете сделать так, чтобы они выполняли большинство рутинных операций с помощью "pfexec" (эквивалент sudo), но вы можете предотвратить их отмену ваших привилегий sudo.

[[Я не фанат Solaris, но в Solaris есть несколько очень хороших вещей, помимо ZFS и DTrace. Жаль, если оракул потушит пламя]]

Вместо того, чтобы мешать им изменять пароль, просто сделайте политику, что им это не разрешено. Затем вы можете настроить что-то вроде аудит чтобы просмотреть файл паролей и уведомить вас об изменениях.

То, что вы хотите, не разумно. Предоставление root права людям в любой форме позволит им разрушить вашу систему. Даже если их доступ осуществляется через строго регулируемый sudo, умный, злонамеренный или действительно ненормальный идиот сможет устроить хаос.

Вы либо доверяете им, либо нет.

Если вы поддерживаете их потребности, а фирма платит вам за их поддержку, это их машина, не твоя; вы здесь только для того, чтобы он работал, несмотря на все их глупости. Может быть, после того, как они его пару раз обжаривают, вы можете спросить своего босса, можете ли вы предоставить клиентам меньший доступ, или в противном случае фирме придется продолжать платить вам, чтобы исправить беспорядок. Как бы то ни было - это их копейки.

Если это ваш компьютер, и вы оказываете другим услугу, вежливо попросите их быть вежливыми.

Тем не менее, вы всегда можете загрузиться с компакт-диска (или другого носителя, предназначенного только для чтения). Они по-прежнему смогут уничтожать другие файловые системы или монтировать поверх / etc с их собственным / etc, но все, что вам нужно сделать, чтобы вернуть систему к некоторому элементарному уровню функциональности.

Вы также можете использовать что-то вроде openvz и дать каждому пользователю свой экземпляр. Они не смогут уничтожить всю систему и смогут установить собственное программное обеспечение на свой срез. Многие места используют это для веб-хостинга, где они предоставляют клиентам «корень» в VZ-срезе.

Если вы не можете использовать систему с RBAC, например Solaris, HP-UX или AIX, вы можете реализовать RBAC в Linux с помощью grsec патч.

Вот где и нужен тип пользователя доступа среднего уровня. Я думаю, если бы существовал тип пользователя с настраиваемыми привилегиями (стандартный доступ плюс некоторые корневые доступы), это было бы хорошо. Также, чтобы этот пользователь не мог изменить, например, файл паролей (поскольку Linux основан на файлах), мы могли бы ограничить права доступа к файлу паролей, поскольку они недоступны этому пользователю. затем введите пароль для BIOS, чтобы запретить пользователю изменять файл / etc / shadow с помощью сторонней загрузочной флеш-памяти или компакт-диска.

Вышесказанное - всего лишь теория для разработчиков Linux, и я не уверен, возможно ли это ...

предотвратить изменение любого пароля:

chattr +i /etc/shadow

Неважно, почему пользователи задают вопросы. Ответ «Нельзя» неверен! Ответ фактически указан внизу страницы "man sudoers". Это называется «Белый список за исключением», и я фактически внедряю его для компании, в которой работаю. Вот что ты делаешь -

  1. Добавьте пользователей, которых вы хотите заблокировать, в группу
  2. Отредактируйте файл sudoer - visudo
  3. Добавьте это в файл sudoer (testgroup - это группа, в которую вы добавили пользователей)

%testgroup ALL = (ALL) ALL

%testgroup ALL = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

%testgroup ALL = !/usr/sbin/visudo

  1. Готово

Это не позволяет пользователям sudo изменять пароль root, но позволяет изменять все остальные И не позволяет им редактировать файл sudoers. Есть и другие вещи, которые вы, вероятно, должны добавить к этому, например, запретить пользователю изменять группу, в которой он находится, но, надеюсь, вы уловили суть.