Насколько sudo безопаснее, чем непосредственное использование su, если пользователю предоставлен доступ ко всем командам?

Так что я читал о различиях между использованием su а также sudoи все, похоже, согласны с тем, что sudo подход безопаснее, чем разрешение доступа к самой учетной записи root. Они говорят, что с учетной записью root вы можете взломать всю систему с помощью одной команды. Это я понимаю НО первоначальный пользователь, созданный в системе, также имеет доступ ко всем командам, использующим sudo. Это я могу узнать, запустив su -l, Если это так, то я могу просто запустить sudo <game-ending command> разрушить мою систему. Так как же этот подход лучше или безопаснее, чем прямой доступ к учетной записи суперпользователя? Я могу запустить все те же команды...

Это потому, что с помощью sudo в командной строке я явно говорю компьютеру, я думаю, что я знаю, что я делаю? Они думают, что люди забудут, что находятся под учетной записью суперпользователя, если они прямо не скажут это?

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

6 ответов

Решение

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

Преимущества (в произвольном порядке):

  • У sudo превосходное ведение журнала. Судо регистрирует каждую команду.
  • sudo позволяет лучше контролировать зерно Можно настроить sudo для предоставления корневого доступа к некоторым, но не ко всем командам.
  • sudo использует пароль для входа. Это защищает от необходимости давать пароль root (как это было бы с su) и относится к пункту выше, касающемуся более тонкого контроля / доступа к root.
  • В Ubuntu по умолчанию корневая учетная запись заблокирована. Это удерживает взломщиков, так как для входа в систему (удаленно через, скажем, ssh) им приходится угадывать как имя пользователя, так и пароль. Если учетная запись root не заблокирована, как в случае с su, им нужно только взломать пароль root.
  • sudo -i это, вероятно, лучший способ изолировать переменные среды root от вашего пользователя. Это приходит время от времени, но умеренно эзотерично. Смотрите https://help.ubuntu.com/community/RootSudo
  • некоторые люди чувствуют, что необходимость вводить sudo перед каждой командой, которую они хотят запустить от имени пользователя root, или время ожидания sudo позволяет им более четко остановиться и мыслить, а также уменьшить количество ошибок или выполнить ошибочные команды. Если это поможет вам, это тоже будет полезно.

Есть, вероятно, больше преимуществ, но это основные из них, ИМХО.

Смотрите также - https://help.ubuntu.com/community/RootSudo

Чтобы попытаться ответить на некоторые другие ваши мысли:

  • Ни в su, ни в sudo нет ничего, что мешало бы запускать вредоносный код, если вы знаете пароль. Ни безопаснее, ни лучше.
  • Взломщики могут получить доступ к оболочке несколькими способами. Когда вы видите "запустить произвольный код" в уведомлении о безопасности - https://usn.ubuntu.com/usn/ - это означает, что взломщик может запустить / bin / bash или любой другой код. Таким образом, взломщик, используя различные эксплойты, может получить доступ к оболочке, не зная вашего логина или пароля. Ни sudo, ни su не помогают в этом.
  • Если взломщик имеет доступ к оболочке, он может нанести большой ущерб без прав root. Например, вымогатель, который шифрует все ваши личные данные.
  • Если взломщик имеет доступ к оболочке к учетной записи с правами суперпользователя через su или sudo, взломщик может получить root-доступ с помощью ряда методов, выходящих за рамки этого обсуждения. В этом отношении ни sudo, ни su не превосходят.

Так что, хотя у вас есть проблемы или недостатки с sudo, su имеет точно такие же уязвимости, и su не превосходит sudo в этих аспектах, IMHO

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

Случайно набираешь

rm -rf /*

вместо

rm -rf ./*

Ваша система теперь работает само по себе, и у вас есть 10 минут до истечения срока.

Если вы явно выберете, когда вам нужен root, вы можете минимизировать вероятность этого. Корень может не понадобиться для rm -r ./* так зачем его использовать? Зачем рисковать?

Вот что значит "безопасность". Минимизация риска того, что пользователи (все пользователи, а не только новички) допустят фатальную ошибку.

Конечно, это крайний пример, который нельзя допустить в производственной среде (я гарантирую, что это произошло в среде prod).

В плане безопасности есть кое-что, для чего sudo тоже лучше. Как говорит @Panther - регистрация, ограничения, пароль root - SPOF и т. Д.)

Я хочу добавить немного исторической перспективы к другим ответам. К сожалению, у меня нет готовых источников, кроме моих собственных воспоминаний об обсуждениях Usenet и журнальных статьях.

Некоторое время назад, в 1990-х годах, дистрибутивы облегчали установку Linux на собственном оборудовании, даже не обладая достаточными компьютерными знаниями. Таким образом, Linux начал привлекать все больше и больше людей, которые на удивление ранее не проходили обучение в качестве системных администраторов. немного UN*X диалект. Вместо этого многие привыкли к (однопользовательским) системам, таким как Windows 95/98. И они узнали, что большинство задач системного администрирования Linux заставляют работать под этой странной учетной записью "root".

Таким образом, некоторые пользователи просто вошли в систему как root и использовали эту учетную запись для всей своей повседневной работы. Почему они должны печатать su и пароль root снова и снова или войдите в новый tty только для некоторых команд администратора? Но использование root для всего, конечно, не очень хорошая идея, так как вы можете нанести гораздо больший вред своей системе, если будете неумелой командой в неправильном месте. Это даже привело к тому, что некоторые дистрибутивы (это был SuSE?) Изменили фон рабочего стола для пользователя root, чтобы вывести большое предупреждение о том, что вы должны использовать эту учетную запись только для задач администратора.

Итак, способ Ubuntu с sudo имеет некоторые преимущества (в дополнение к уже перечисленным Panther).

  • Вы не можете напрямую войти в учетную запись root.²:-)
  • Процесс установки не будет запрашивать у вас (дополнительный) пароль root, вам нужен только один пароль (вашего пользователя).
  • sudo кэширует ваши учетные данные, поэтому для нескольких последовательных команд администратора вы должны ввести пароль только один раз (в отличие от su). Это уменьшает желание просто открыть оболочку или новый терминал с привилегиями root.
  • Кроме того, в Интернете и в документации пользователям легче указывать, какие команды им нужно вводить от имени администратора, а какие нет.

¹ А для тех, кто не решился сделать это самостоятельно, были организованы вечеринки.
² Но вы можете использовать такую ​​команду, как sudo -i или же sudo su - root получить корневую оболочку после того, как вы вошли в систему как обычный пользователь.
"Но вы, конечно, знаете, что не следует просто копировать и вставлять команды из Интернета, верно?

В течение десятилетий можно было отключить root-вход через ssh. Способ Ubuntu отключить корневую учетную запись и заставить людей sudo все - не более, чем трюк. Просто "sudo -s" и у вас есть корневая оболочка. Отключите root-логин через ssh и оставьте его там.

В зависимости от конфигурации, sudo <game ending command> не обязательно будет работать. Конечно, если sudoers Конфигурация гласит "пользователь ALL=(ALL) ALL", sudo не предложит никакой дополнительной защиты. Однако вы можете указать список привилегированных команд, которые вам нужно часто выполнять, например устанавливать новые пакеты, и не указывать такие опасные команды, как rm,

Таким образом, вы можете запустить все команды, если вы войдете как root, но так как это понадобится вам только изредка, риск <game ending command> будет существенно уменьшен.

То, что sudo позволяет вам разрешать только определенные команды, не единственное преимущество sudo перед su.

В большинстве магазинов это даже не самое главное преимущество.

С помощью sudo вы знаете, кто выполнял определенную команду.

Теперь, может быть, это не имеет значения для вас. Например, вы можете быть единственным пользователем вашего компьютера. Если так, то sudo возможно не лучше чем su.

Но множество хостов имеют более одного администратора.

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

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

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

Судо не идеален.

Если два человека делают "sudo sh" одновременно, тогда может быть трудно приписать команды одной или другой.

И злонамеренный администратор всегда может удалить или отредактировать журналы - хотя делать это аккуратно не всегда так просто, как думают люди, особенно если у вас централизованное ведение журнала.

Судо не обязательно останавливает глупое или злонамеренное действие по всем причинам, указанным в исходном вопросе.

Но это дает вам гораздо больше шансов предотвратить повторение.

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