|
Компьютерный форум OSzone.net » Информационная безопасность » Защита компьютерных систем » Уязвимости - Почему не нужно использовать "sudo" на домашней Linux-системе |
|
|
Уязвимости - Почему не нужно использовать "sudo" на домашней Linux-системе
|
Ветеран Сообщения: 2029 |
Профиль | Отправить PM | Цитировать Очень часто можно встретить советы пользователям Linux не работать под учетной записю root, а пользоваться вместо этого командой "sudo".
Данные советы глубоко ошибочны. Попробуем разобраться, почему это именно так. Начнем с истории создания данной утилиты. А началась эта история 30 лет назад. Причем, за прошедшие 30 лет принципы её использования претерпели значительные изменения. Сам автор sudo говорил о ней так: «при существующей системе доступа к учетной записи суперпользователя „su” пользователи имеют тенденцию работать под этой записью независимо от того, необходимо это или нет. sudo направлена на решение этой проблемы путем предоставления системным администраторам удобного способа доступа к определенным возможностям суперпользователя на покомандной основе.» Однако, в то время не было и тысячной части такого количества сетевых угроз как сейчас. Да и не могло быть, поскольку практически все компьютеры не имели сетевых соединений за пределами машинного зала. В настоящее время, использование этой утилиты рекомендуется исключительно в тех случаях, когда некоторому человеку необходимо предоставить доступ к части полномочий суперпользователя. То есть, заполнить лакуну образованную в результате реализации первоначальной идеологии Unix - все пользователи делятся на рядовых и суперпользователя без каких-либо промежуточных вариантов между ними. Для системы созданной в 1970-ом году это было нормально. Другие распространенные в то время ОС (например, семейства RSX-11 разработанной DEC) были устроены точно так же. Никакой возможности ввести должности «администраторов сервисов» на них не было и о самой такой возможности в то время никто не думал. Таким образом, при необходимости добавления пользователей с промежуточными правами в многопользовательской системе, использование команды sudo может быть оправданным. В любом случае, при компрометации учетной записи пользователя с расширенными правами, злоумышленник получит доступ не ко всей системе, а только к той части возможностей суперпользователя, которая доступна владельцу скомпрометированного account'а. Теперь давайте рассмотрим работу в однопользовательской системе. Постоянная работа под учетной записью суперпользователя во-первых, опасна тем, что случайные ошибки пользователя при наборе команд могут повредить всю систему. На практике, эта причина не играет особой роли для опытных пользователей. Изуродовать систему проще всего ошибкой в команде администратора (mkfs, например), чем пользователя. Набрать по ошибке «rm -rf /» в командной строке способен только клинический идиот. Намного более существенна вторая причина - при постоянной работе в сети пользователь всегда a priori должен считать свой домашний каталог скомпрометированным. Понятно, что если злоумышленник захочет получить доступ к Вашему компьютеру и подсунет Вам, к примеру трояна, которого Вы запустите под своей учетной записью, этот троян будет иметь возможность возможность делать всё, что угодно в Вашем каталоге. Но за его пределы он выйти не сможет. Когда-то, несколько лет назад, я по определенным причинам опубликовал на lor'е программку из одной строчки на perl. В ней простой командой «y» (translate) была зашифрована команда оболочки «rm -rf /». Как легко понять, эта команда не в состоянии удалить абсолютно ничего будучи запущена от имени простого пользователя. Она даже, по очевидным причинам, не сможет удалить его домашний каталог. Что Вы думаете? Вопреки всем моим ожиданиям, на форуме нашлось немало людей, постоянно работающих под root'ом. Давайте теперь представим, что злоумышленник хочет не проучить конкретного идиота, а получить неограниченный доступ к его компьютеру. Тогда троян не станет ничего удалять. Он сделает всего две вещи: добавит некоторый доступный для записи каталог в начало PATH (прописав это, к примеру, в ~/.bashrc: export PATH=~/.config:$PATH), а затем создаст в добавленном каталоге сценарий с именем sudo, который будет имитировать стандартный вывод sudo и запрашивать пароль. Получив пароль, он передаст управление настоящей команде sudo (echo $password | /usr/bin/sudo -S) и пользователь ничего не заметит. Узнав пароль пользователя, сценарий получает полный доступ к системе и «заметает следы» - восстанавливает .bashrc, передает пароль злоумышленнику и удаляет сам себя (при необходимости, предварительно внеся дополнительные изменения в систему. Наилучшим образом для этого подходит замена какой-либо из разделяемых библиотек на библиотеку с «черным ходом»). Дело сделано. Вашу систему теперь контролируют со стороны. Можно ли было этого избежать? Да запросто - всегда указывайте абсолютный путь к программе. Питшите /usr/bin/sudo вместо sudo. Тогда злоумышленник даже псевдоним (alias) этой команды сделать не сможет. Но ответьте, положа руку на сердце, многие ли так делают? Итак, команда sudo - это одна огромная дыра в безопасности системы, которая стирает грань между компрометацией учетной записи простого пользователя и компрометацией всей системы. Каким образом пользователь может себя защитить от подобного рода угроз? Я не буду останавливаться на общесистемных средствах контроля безопасности, IDS и программах проверки целостности файлов (таких, как tripwire). Всё гораздо проще - не пользуйтесь sudo. «su», понятное дело, тоже не пользуйтесь. Если Вам нужно выполнить какие-либо консольные команды от имени другого пользователя, особенно если это суперпользователь, переключитесь в текстовую консоль и введите комбинацию имя/пароль в ответ на приглашение Вашей верии getty. Если Вы сами включали компьютер, Вы можете быть уверены, что приглашение исходит именно от той программы, которая была указана в файлах инициализации (/etc/inittab для большинства дистрибутивов, за исключением ubuntu и ему подобных, которые используют upstart и /etc/init/rc-sysinit.conf). Если Вы не уверены в том, что приглашение исходит именно от mingetty - используйте "magic key kill" (Alt-SysRq-K, который, понятное дело, всегда должен быть включен). Злоумышленника, которому удалось добраться до файлов инициализации либо подменить magic key, Вы можете не бояться. Его бояться уже поздно... И последнее. Подменить обычную программу (скажем, "echo" или "ls") злоумышленник не сможет. И дело не в том, что echo - встроенная команда оболочки. Её легко подменить командой alias. Проблема в другом. Даже самого тупого пользователя немного удивит когда в ответ на ввод команды "echo" он получит ответ "для выполнения этой команды Вы должны ввести свой пароль. Вводите:" |
|
Отправлено: 18:45, 29-10-2012 |
Ветеран Сообщения: 12417
|
Профиль | Отправить PM | Цитировать такой вопрос. Если у меня есть второй пользователь, то если мне нужно ему предоставить права на какую-нибудь утилиту, к примеру, dig, то я могу для этого использовать sudo.
Т.е. когда пользователь захочет ею воспользоваться, то введёт sudo dig oszone.net без пароля (если я правильно настрою права) ? А так, статья понятна. Что можно заменить sudo на вредоносную программу, но реальна ли эта ситуация с подменой? |
------- Отправлено: 19:03, 29-10-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2029
|
Профиль | Отправить PM | Цитировать Цитата exo:
Цитата exo:
|
||
------- Отправлено: 19:11, 29-10-2012 | #3 |
Ветеран Сообщения: 12417
|
Профиль | Отправить PM | Цитировать Цитата AMDBulldozer:
|
|
------- Отправлено: 19:20, 29-10-2012 | #4 |
Ветеран Сообщения: 2029
|
Профиль | Отправить PM | Цитировать Цитата exo:
1. Пользователь не имел права запустить файл. Тут надо смотреть права на файл и все родительские директории. 2. Dig запускался, но ему не хватало полномочий для работы. Такого я никогда не встречал, но представить подобную ситуацию несложно. Это могло быть либо следствием использования соответствующей политики безопасности, если ядро было компилировано с поддержкой таких политик, либо использованием правил брандмауэра (к примеру, с модулем "owner") для ограничения доступа в сеть. Ну и т.д. В таких ситуациях правильнее разобраться в причинах её возникновения и устранить их. Хотя, конечно, можно и пойти по предложенному Вами пути - это проще и быстрее. |
||
------- Отправлено: 19:35, 29-10-2012 | #5 |
Ветеран Сообщения: 12417
|
Профиль | Отправить PM | Цитировать Цитата AMDBulldozer:
|
|
------- Отправлено: 20:50, 29-10-2012 | #6 |
Ветеран Сообщения: 2029
|
Профиль | Отправить PM | Цитировать Цитата exo:
Правильный стиль работы, который был описан, выглядит достаточно неудобным - иметь несколько консолей, причем суперпользователь должен в идеале работать в текстовой, от которой уже давным-давно все отвыкли. Я упоминал про то, что многие "юные хакеры" постоянно работают под root'ом и приводил пример, когда для некоторых из них это плохо заканчивалось. Можете прочитать самое начало этой ветки. Читать её дальше не имеет смысла - она длинная, непонятная (бОльшую часть сообщений удалили модераторы) и неинтересная. Краткий смысл в следующем: около десятка читаттелей lor'а уничтожили или серьезно повредили свои файловые системы. Поэтому, конечно, для подобных деятелей sudo куда меньшее зло. Но зачем вообще выбирать из двух зол? |
|
------- Отправлено: 23:15, 29-10-2012 | #7 |
Ветеран Сообщения: 12417
|
Профиль | Отправить PM | Цитировать Цитата AMDBulldozer:
|
|
------- Отправлено: 00:15, 30-10-2012 | #8 |
Ветеран Сообщения: 2029
|
Профиль | Отправить PM | Цитировать Цитата exo:
Нет, имелось в виду именно это. Но Ваш случай, согласитесь, достаточно нетипичен. Насколько я понимаю, подавляющее большинство пользователей Linux предпочитает работать в графической среде. Я был искренне удивлен, когда однажды выяснил, что некоторые пользователи ничего не знают даже о самом факте существования текстовых консолей. |
|
------- Отправлено: 00:20, 30-10-2012 | #9 |
Ветеран Сообщения: 12417
|
Профиль | Отправить PM | Цитировать Цитата AMDBulldozer:
|
|
------- Отправлено: 00:50, 30-10-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Ситема определяет 2 монитора ???"Pnp" и "не Pnp" почему ?(монитор одни всего =)) | Chillout | Непонятные проблемы с Железом | 2 | 19-02-2010 19:05 | |
Почему Windows при запуске файла с именем "start.exe" показывает кнопки как "Пуск"? | Котяра | Хочу все знать | 9 | 22-06-2009 13:48 | |
Интерфейс - Почему в "Параметрах папки" кнопка "Применить ко всем папкам" неактивна? | edixxx | Microsoft Windows 7 | 2 | 19-05-2009 17:50 | |
Ошибка - [решено] Невозможно использовать косоль "Disk Managment" из оснастки "Computer Management" | Steve Ironbreaker | Microsoft Windows 2000/XP | 2 | 24-09-2007 11:20 | |
Предлагаю создать в "Linux и FreeBSD" раздел "Linux сервер" | voler | О сайте и форуме | 2 | 19-06-2007 22:22 |
|