💾 Archived View for tilde.team › ~rami › susudo.gmi captured on 2023-07-22 at 17:25:41. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-03-20)
-=-=-=-=-=-=-
רמי
SUBJECT: Почему sudo используют только (ч)удаки?
AUTHOR: Rami Rosenfeld
DATE: 22/01/22; upd.10/02/2023
TIME: 00.00
LANG: ru
LICENSE: CC BY-NC-ND 4.0.
TAGS: gnu, linux, software, opensource, security, privacy, system, su, sudo
Version 1.1.2
Вначале приведу несколько цитат из интернета, утверждающих обратное, мол sudo - это более новое, прогрессивное и безопасное средство администрирования! Логин и пароль root'a не используются в принципе, а значит - жизнь чудесна и замечательна!
Допустим, с русскоязычного сайта/форума техподдержки Ubuntu (раздел "Официальная документация"):
"Когда нужно работать под пользователем root?
Ответ - прост: НИКОГДА.
Более того, в дистрибутивах на основе Debain (к коим относится и Ubuntu) работа под пользователем root заблокирована - интерактивно залогиниться в консоль или GUI под ним нельзя".
... Увы, но кроме данного голословного и категоричного заявления администраторы форума не приводят никаких доказательств.
Еще одна цитата, почерпнутая с какого-то сайта, найденного наобум по ключевым словам "su" и "sudo", несколько проясняет "радости жизни" с sudo:
"Использование по умолчанию sudo вместо su имеет некоторые преимущества. Пользователям Ubuntu необходимо помнить только один пароль, в то время как пользователям Fedora и других дистрибутивов требуется создавать отдельные аккаунты для root и обычного пользователя, каждый со своим паролем".
Таким образом, мы видим, что за главное преимущество в работе выдается "удобство" исполнения административных и, следовательно - потенциально опасных функций. В системах, подобных Ubuntu и ее многочисленным форкам, практически любой пользователь, включая, конечно же, первого зарегистрированного в системе (при ее инсталляции), может с легкостью, используя свой собственный(!), а отнюдь не администраторский пароль, управлять ОС... Кто вообще решил, что такая ситуация нормальна?! Кто вообще решил, что ОДИН пароль на ВСЕ случаи - это нормально?! С точки зрения безопасности - это полный бред!
1. Главная опасность - резкое повышение административных прав пользователя с урезанными полномочиями. Причем для этого нет нужды применять отдельный пароль root: пользователь вводит свой обычный пароль!
2. Дискредитация обычного пользователя, имеющего права запускать sudo, однозначно приводит к дискредитации и последующему несанкционированному доступу к системе.
3. Атакующей стороне нет необходимости получать доступ к паролю root'a - единственного(!) человека, обязанного отвечать за администрирование и безопасность ОС. Достаточно заполучить пароль некомпетентного или безответственного пользователя.
4. Практически невозможно предотвратить следующую ситуацию (я остановлюсь на ней более подробно): когда уполномоченные лица - сборщик, системный администратор и т.п. - занимающиеся массовой установкой и подготовкой компьютеров для последующей работы на них людей с низкой квалификацией или недостаточным уровнем подготовки, могли бы заблокировать некорректное выполнением ими административных команд.
Примеры: OEM-продажи или массовая установка ОС на компьютеры в пределах какого-либо внутреннего подразделения (бухгалтерия, отдел кадров и т.п.). В таких случаях при инсталляции ОС на компьютерах традиционно создается одна(!) пользовательская учетная запись, и она неизбежно обладает администраторскими правами! ... Что может натворить некомпетентный человек, обладающий неограниченными правами, всецело зависит только от его фантазии!
5. Возможность "беспарольного" использования sudo - если при инсталляции ОС от пароля отказались, либо он намеренно был отключен впоследствии. Это - жутчайшая дыра в безопасности, тем не менее, я знал многих пользователей "Убунточки", которые с радостью отказывались от паролей: "А зачем он мне нужен?"
Пример: Для нормальных и уважающих себя дистрибутивов GNU/Linux, ориентированных на безопасность, такая ситуация невозможна в принципе! Более того, даже при инсталляции система (такая, как RHEL, CentOS, Fedora и ее "спины") не даст назначить слабый, короткий или априорно уязвимый пароль.
6. Система какое-то время помнит введённый пароль (сохраняет открытой sudo-сессию, инициированную обычным пользователем). В случае с "истинным" компетентным root'ом, запускающим административную сессию, последний, как правило, более внимательно относится и к ее корректному и своевременному завершению.
7. "Привычность" возникновения множественных запросов на использование sudo и, особенно, ее графического аналога - gksu, в тривиальных ситуациях: при изменении даты/времени и т.п. может привести к тому, что при появлении нового запроса, исходящего от вредоносного ПО, "обычный" пользователь так же привычно и особо не разбираясь в ситуации, введет свой пароль.
8. Пароль обычного (первого зарегистрированного при инсталляции ОС) пользователя, использующего sudo, применяется ВО ВСЕХ ситуациях. В частности - и для частичного(!) дискового шифрования ОС (если, конечно, поклонники Ubuntu вообще обременяют себя подобными "мелочами"). Это означает, что при завладении паролем первого пользователя, зарегистрированного в ОС при ее инсталляции, будет получен доступ к разделу /home на HDD, зашифрованного подобным паролем. Примечание: системные разделы в Ubuntu НЕ шифруются никогда - да и зачем, правда ведь? :)
Примеры: В Red Hat такая ситуация невозможна в принципе:
а) там существует полноценное шифрование всех разделов, включая "/", "/swap", "/home";
б) пароли root и первого "обычного" пользователя запрашиваются на этапе инсталляции ОС. И они, конечно же, различны;
в) сразу после исполнения GRUB дальнейшая загрузка ОС прекращается - до правильного введения ОТДЕЛЬНОГО пароля, расшифровывающего системный раздел и раздел подкачки. Обращаю особое внимание: этот пароль НЕ имеет никакого отношения к паролю root'a или к паролям непривилегированных пользователей;
г) после загрузки ОС пользователю предлагается ввести свой отдельный логин и пароль, не имеющие ни малейшего отношения к выполнению root-привилегий. Эта связка расшифровывает ТОЛЬКО пользовательский "домашний" каталог /username на отдельной партиции /home и предоставляет доступ ТОЛЬКО к нему;
д) при получении злоумышленниками физического доступа к компьютеру не сработает даже принудительный сброс пароля root'a сразу после запуска GRUB (да-да, такая возможность предусмотрена и документирована самими разработчиками!) ... Почему? Да потому что, даже если сбросить пароль root'a, при полнодисковом шифровании все вышеперечисленные разделы все равно окажутся зашифрованными старыми паролями - не зависящими от пароля root.
Подтверждение пункта "д" с официального сайта (раздел "Сброс администраторского пароля):
Encrypted partitions
Whichever GRUB version your system has, if you have an encrypted partition, you are prompted for the pass phrase before mounting the filesystems. If have more than one encrypted partition and they all share a global pass phrase, select the option for global pass phrase. Otherwise, enter the pass phrase separately for each partition.
9. Любой обычный пользователь многопользовательской системы (т.е. равный среди многих), имеющий возможность повышения привилегий (т.е. используя sudo), может с легкостью перехватить на себя "истинно" рутовские функции, задав ему явный пароль и активировав в lightdm отображение окна ввода логина/пароля. Даже несмотря на заверения, что root в Ubuntu якобы "запрещен! Вот как просто это осуществляется (информация почерпнута с русскоязычного сайта поддержки Ubuntu):
1) Устанавливаем root пароль. Введите в терминал:
sudo passwd root
2) Включаем пункт «Введите логин». Введите в терминал:
gksu gedit /etc/lightdm/lightdm.conf
В конце файла допишите: greeter-show-manual-login=true
3) Перезагружаем lightdm. Введите в терминал:
sudo service lightdm restart
http://help.ubuntu.ru/wiki/суперпользователь_в_ubuntu
И еще, "вредные советы" от них же (взгляните сами, какие дыры в безопасности!):
sudo -i переводит пользователя в сессию под root-ом. Это аналог команды su), за тем исключением, что пароль требуется пользователя, а не root-а. Выход из сессии - exit.
sudo -s переводит пользователя в сессию под root-ом, но при этом текущий каталог не меняется /root 2) а остается тем же что был до вызова команды. Выход из сессии - exit.
Кошмар!
Таким образом, активировав учетную запись root, любой злонамеренный пользователь может полностью перехватить на себя административные функции в многопользовательской среде - со всеми вытекающими последствиями. От пользователя, заполучившего полновесные права root'a, "isolates permission between multiple sudoers" НЕ спасет!
10. На русскоязычном сайте поддержки Ubuntu честно признаются (см. предыдущую ссылку):
sudo без пароля — чудовищная дыра в безопасности, кому попало разрешено делать что угодно. Если вы разрешили это намеренно — срочно верните обратно как было. Однако, в некоторых случаях sudo внезапно перестаёт требовать пароль само по себе. Если сделать visudo, то можно увидеть примерно такую строку, которую пользователь вроде бы не добавлял:
ALL ALL=(ALL) NOPASSWD:ALL
Лично я - в полном ужасе! Даже и не знаю, как прокомментировать!
Так что ребята с рускозычного сайта поддержки Ubuntu явно неправильно истолковали давнее правило "НИКОГДА не РАБОТАЙ из-под рута!" (тут имеется в виду обыденная и повседневная пользовательская работа с прикладным ПО), вот почему придумали свое: "НИКОГДА НЕ ИСПОЛЬЗУЙ права рута!"
Надеюсь, что для всех вменяемых и трезвомыслящих людей они очевидны:
man su
ОБЯЗАТЕЛЬНО, СРАЗУ ЖЕ после установки системы, выполните следующее (если это не предложено в процессе инсталляции):
1. Установка пароля администратора:
sudo passwd root
2. Запрет исполненения критично-административных команд пользователями, запрет пустого пароля, запрет смены пароля root пользователями (посредством sudo):
visudo
## Allows people in group wheel to run all commands # %wheel ALL=(ALL) ALL, !/usr/bin/passwd root # ALL ALL=(ALL) NOPASSWD:ALL
Удаление текущего (и иных) пользователей из группы wheel:
Предварительная проверка наличия пользователей в группе wheel:
cat /etc/group
(...)
wheel:x:10:user_name user_name1 user_name2
Удаление пользователя из группы:
gpasswd -d user_name wheel
© Rami Rosenfeld, 2022. CC BY-NC-ND 4.0.