The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Проект по реализации утилит sudo и su на языке Rust, opennews (??), 29-Апр-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


5. "Проект по реализации утилит sudo и su на языке Rust"  +9 +/
Сообщение от Аноним (86), 29-Апр-23, 21:26 
А можно лучше придумать что-то новое, а не заниматься переписыванием готовых и рабочих решений? Например, сделать так, чтобы sudo-костыли вообще не пригождались. Это было бы намного лучшей рекламой раста чем очередное переписывание. Но цель здесь одна - закрепить своё поделие в мейнстриме, чтобы про язычок никто не забывал, точнее, не пришлось не забывать.
Ответить | Правка | Наверх | Cообщить модератору

13. "Проект по реализации утилит sudo и su на языке Rust"  +4 +/
Сообщение от oficsu (ok), 29-Апр-23, 21:31 
> чтобы sudo-костыли вообще не пригождались

Напрммер, как?

Ответить | Правка | Наверх | Cообщить модератору

18. "Проект по реализации утилит sudo и su на языке Rust"  –5 +/
Сообщение от Аноним (8), 29-Апр-23, 21:35 
Ну вот на винде, которой пользуется тот аноним, никакие эти ваши суды не нужны, там есть нормальные методы повышения привилегий через токены имперсонации
Ответить | Правка | Наверх | Cообщить модератору

32. "Проект по реализации утилит sudo и su на языке Rust"  +2 +/
Сообщение от Аноним (37), 29-Апр-23, 22:01 
Токены имперсонации нужны не для повышения привилегий (они и так есть у того кто их использует).
Ответить | Правка | Наверх | Cообщить модератору

33. "Проект по реализации утилит sudo и su на языке Rust"  +2 +/
Сообщение от Аноним (33), 29-Апр-23, 22:03 
Или отказаться от самой идеи повышения привилегий, сделать привилегированные серверы, у которых через IPC все остальные процессы будут запрашивать действия, могущие быть выполненными или нет.
Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

87. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от Аноним (87), 30-Апр-23, 02:06 
Угу. sudod.
Ответить | Правка | Наверх | Cообщить модератору

167. "Проект по реализации утилит sudo и su на языке Rust"  +2 +/
Сообщение от К.О. (?), 30-Апр-23, 13:13 
Systemd-sudod
Ответить | Правка | Наверх | Cообщить модератору

64. "Проект по реализации утилит sudo и su на языке Rust"  +45 +/
Сообщение от Аноним (64), 30-Апр-23, 00:01 
Давайте пройдёмся вкратце по объему работ, чтобы осознать что нужно, чтобы было как в венде:

1. В Windows NT есть ACL/ACE на стороне ядра и есть стандарт SDDL.
Чтобы сформировать функциональный паритет, необходимо избавиться (перевести в легаси) от того наследия 70-х годов, которое стандартизировано в POSIX и предоставляется утилитами chown и chmod. Нужны Rich ACL на стороне ядра, причем так, чтобы они использовалист повсеместно, а не опционально. Есть несколько проблем с ACL в Linux:
Проблема ACL #1: То что в Linux называют POSIX ACL - это не стандарт, а непринятый черновик, который не встречается нигде кроме Linux.
Проблема ACL #2: То что в Linux называют POSIX ACL не достаточно "Rich", поэтому они и не стали стандартом. Нет поддержки утверждений (claims), conditional ACE, deny-правил и ограничено наследование.
Проблема ACL #3: То что в Linux называют POSIX ACL не является обязательным. В Linux всё работает через  "chmod 755" и SUID-биты, а так называемые POSIX ACL (getfacl, setfacl) опционально сбоку.
Героически решив эти проблемы необходимо распространить их на все файлы, сокеты и процессы, стандартизировав дескрипторы безопасности.
2. В Windows NT есть разные типы пользовательских сессий.
Вход в систему организуется службой winlogon. При этом пользовательская сессия может быть сетевой, локальной, интерактивной, пакетной, служебной итд. В зависимости от того каким способом производилась аутентификация. В Linux вместо этого используется PAM, который понимает только локальные сессии и любой успешный вход в систему считает равным по привилегиям другому. Учитывая, что UNIX PAM - это очередная неудаха в вопросах стандартизации входа в систему, а Linux PAM - вольная реализация (NIH от Red Hat) этой неудахи, его проще выкинуть целиком, чем пытаться исправить. Главной проблемой PAM является отсутствие поддержки Kerberos 5 и невозможность повторно использовать TGT, полученный пользователем при входе в систему в приложении запущенном в той же сессии. На самом деле там проблем столько, что проще переписать с нуля, что собственно и порождает костылики вроде sssd.

Процедура элевации (Запустить от имени администратора) - это комбинация п.1 и п.2. Вам нужны ACL на все процессы, файлы и сокеты и вот для интерактивных сессий предусмотрена такая возможность.

3. В Windows NT есть неотключаемая подсистема мандатного контроля и таргетированная политика и она работает поверх тех же ACL.
При этом Windows не использует выдуманные контексты и не пишет эту политику как в SELinux, там вся штука в SDDL. Существует понятие виртуальных дескрипторов безопасности. Они генерируются на службы, и приложения запущенные с пониженными привилегиями. Например, если приложение было установлено из магазина, значит его права ниже чем пользовательская сессия и ему создается виртуальный идентификатор пакета приложения в стиле S-1-5-90-... на основании уникального идентификатора приложения и идентификатора безопасности пользователя и ACL применяются к нему. Также у каждого приложения, которое установлено как служба заводится виртуальный SID, который доступен в форме UPN как NT SERVICE\myservicename. Ине надо сочинять 100500 всяких контекстов под софт из репозиториев и прописывать им глобальную политику внутри которой SELinux в ТРЕТИЙ РАЗ ПЕРЕИЗОБРЕТАЕТ ACL!!1

4. SUID-биты - это зло. Но от них нельзя просто так избавиться в Linux.
Вообще сама идея, что все файлы и все процессы имеют на себе дескрипторы безопасности и ACE и все работает относительно их быстрого расчета ядром, красива и прекрасна, но малореалистина на данном этапе развития юзерспейсных компонентов Linux. Нужно стандартизировать огромное количество подсистем, написать к ним права, написать утилиты, которые понимают это всё, а то уже с ping возникнут проблемы, если конечно не брать реализацию из юзерспейса. Windows NT же архитектурно построена так, что файловой системе нужно верить в последнюю очередь.

5. Local Security Authority
LSAAS - это еще одна подсистема, которая убирает требования к постоянному перезапрашиванию локальных и сетевых паролей и постоянного дозахвата прав. Суть в том, что есть клиент-серверная служба, позволяющая получить доступ к сохраненным паролям, полученным билетам и кэшу аутентификации. Это то что в GNOME и Mac OS делает Keyring. И вроде бы в Linux Keyring есть, но он опциональный и только на то, что умеет с ним работать. Опять же, вызовы API к LSA также требуют аутентификации и авторизации и применяются те же ACL. Но там много всего и большая часть всего функционала там выключена. Именно на эту подсистему действуют "локальные политики безопасности". Я не буду перечислять всего, с чем она работает просто потому что и букв много получилось.

И вот когда все это реализовать, изменить и стандартизировать, то количество обращений ко всяким sudo сведется к минимуму но не уйдёт.
Я напомню, что в Windows NT есть "вторичный вход в систему" seclogon - это служба, а не утилита. Она порождает специфический тип дескриптор и как раз и нужна для того чтобы запустить что-то от имени другого пользователя. При этом есть реализация в форме утилиты, но оно использует те же подсистемы. И это тоже нужно.

> токены имперсонации

Токены имперсонации - это из области SSO. Всё то что я написал имеет отношения преимущественно к локальным подсистемам, кроме пары слов про Kerberos.
Если мы начнем вспоминать про netlogon, про его делегирование на локальных службах, про Kerberos-учетки для компьютера и виртуальную учетную запись NT AUTHORITY\NETWORK SERVICE и сверху припорошим это встроенной поддержкой SAML2 и с некоторых пор OAuth2, то мы уйдем от реальных архитектурных проблем в юзерспейсе Linux, которые вынуждают использовать sudo и su на каждый чих. Сетевые протоколы аутентификации и авторизации в Windows реализуются именно поверх того, что есть, потому что кто-то когда-то в 90-е заоверинженирил Windows NT настолько, что своими стандартными подсистемами она способна реализовать и новые протоколы, хотя в те годы OAuth2 и в планах не было. При этом те функции SSO, которые использовались в NT в те годы выброшены на свалку истории и отключены по умолчанию больше 5-лет (NTLM-привязки пользователей заменены на сертификаты, CredSSP выключен, Digest тоже уничтожен в пользу современных SSO-протоколов).

Тут всё дело именно в архитектуре. Той самой архитектуры ядра и юзерспейсных подсистем, которая вся такая несовместимая с миром UNIX и изначально пришла из VMS.

Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

85. "Проект по реализации утилит sudo и su на языке Rust"  +6 +/
Сообщение от Ivan_83 (ok), 30-Апр-23, 01:31 
Это интересный обзор.

На практике реализация и использование всего этого оставляет желать лучшего, и юзеру весь этот избыточный функционал не нужен, он его не понимает.
А lsas постоянный источник лулзов для извлечения паролей от чужих учёток и дальнейшего захвата сети.

Ответить | Правка | Наверх | Cообщить модератору

179. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от AHOHNM (?), 30-Апр-23, 15:02 
А вот нефиг SeDebugPrivilege всем раздавать. Ну и шо S-1-5-32-544, шо uid=0 - если они уже есть, все секреты системы в итоге доступны.
Ответить | Правка | Наверх | Cообщить модератору

88. "Проект по реализации утилит sudo и su на языке Rust"  +7 +/
Сообщение от Аноним (87), 30-Апр-23, 02:42 
"в 90-е заоверинженирил Windows NT настолько"

что её можно сейчас использовать со всем описанным без всяких апдейтов и сервис-паков, в которых сколько раз всё попеределывали, ломая всё по пути вплоть до невозможности подключения по RDP. Самому не смешно?

Восхищаться системой безопасности Windows с её абсурдными блокировками пользователей по логину - мне кажется это надо совсем дураком быть.

Ответить | Правка | К родителю #64 | Наверх | Cообщить модератору

112. "Проект по реализации утилит sudo и su на языке Rust"  –2 +/
Сообщение от ACCA (ok), 30-Апр-23, 09:12 
Спасибо, коллега. До меня только сейчас дошло, что г***ны из Microsoft позиционируют себя как единственную альтернативу против монополии Google/Linux. Теперь я горячий сторонник BSD.

Завтра же поставлю себе NetBSD desktop. Ну, хотя бы в виртуалке...

Ответить | Правка | К родителю #64 | Наверх | Cообщить модератору

131. "Проект по реализации утилит sudo и su на языке Rust"  –4 +/
Сообщение от Аноним (131), 30-Апр-23, 10:18 
Я нифига не понял. Какие-то дескрипторы безопасности ... Зачем всё это надо? Это что-то, дающее тот же эффект, что и pledge + unveil, нш требующее больше усилий от программиста?
Ответить | Правка | К родителю #64 | Наверх | Cообщить модератору

189. "Проект по реализации утилит sudo и su на языке Rust"  +2 +/
Сообщение от Аноним (189), 30-Апр-23, 17:15 
> нш требующее больше усилий от программиста

Именно так. Весь мировой опыт разработки ПО кричит о том, что баги и уязвимости появляются именно в тот момент, когда требуются любые усилия от программиста. Внедрять механизмы работы с привилегиями в прикладуху — только напрашиваться на неприятности. Прикладной софт вообще не должен быть озабочен такими тонкостями как жонглирование привилегиями. Можешь — читай-пиши. Не можешь — падай с ошибкой. Дядя администратор потом разберётся каких формочек в твоей песочнице не хватает. Но нет, мы застряли в семидесятых со святой верой в магию цифр.

Ответить | Правка | Наверх | Cообщить модератору

161. "Проект по реализации утилит sudo и su на языке Rust"  –1 +/
Сообщение от InuYasha (??), 30-Апр-23, 12:55 
М-да, спасибо что подробно описал то, что я называю двумя словами "давно пора". Хотя, о чём речь если в прыщовнике нет даже реестра??

Кстати, в винде есть sudo - runas /u:Administrator myvirus.exe (как-то так)

Ответить | Правка | К родителю #64 | Наверх | Cообщить модератору

198. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от пох. (?), 30-Апр-23, 21:12 
и ты в эксперты подался?

Это не sudo, это точный эквивалент su. Требует знания пароля или эквивалента того юзера от которого запускаешь.
Причем от администратора - ТОЖЕ требует.

А для остального существуют другие технологии. Там выше их тебе описали но сдаетца мне эксперты опеннета ниасилят даже такое разжеванное переварить.

Ответить | Правка | Наверх | Cообщить модератору

213. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от InuYasha (??), 01-Май-23, 10:13 
> Это не sudo, это точный эквивалент su.

Ты уверен? su - это switch user, позволяет сменить личность, su do - разово выполнить команду от юзера. Как раз то что делает runas. И то и другое просит пароля. Могу ошибваться, конечно, пишу в полусне.

Ответить | Правка | Наверх | Cообщить модератору

217. "Проект по реализации утилит sudo и su на языке Rust"  –1 +/
Сообщение от пох. (?), 01-Май-23, 10:37 
Уверен. Удивительная каша у тебя в голове. Казалось бы это должен понимать в оппу пьяный админ спящий в луже своей блевотины под столом, поднятый звонком в три ночи.

su - изначально инструмент _админа_. Знающего рутовый или эквивалентный ему пароль, вестимо, и работающего с доверенного терминала. Как и runas (только тут надо знать еще и второй пароль, одним админским не обойдешься).

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

(Но, кажется, эти дятлы именно его и собрались реализовать потому что ничего другого не умеют - не админы они.)

Ответить | Правка | Наверх | Cообщить модератору

239. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от Аноним (239), 01-Май-23, 17:32 
sudo su -
Ответить | Правка | Наверх | Cообщить модератору

247. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от пох. (?), 01-Май-23, 20:24 
> sudo su -

не смешно вот - пол-стековерфлова в таких рецептах.
И уже на серверфолте тоже начали попадаться.

Ответить | Правка | Наверх | Cообщить модератору

289. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от InuYasha (??), 02-Май-23, 22:28 
Да я уже давно ничего этого не делал. Прописал на единственной винде runas /u:Admin ramdrive.exe и збс. И так 10 лет. )

Я бы не сказал что убунта - это частный, прям, случай. Вернее, только с ней, в основном, и контактировал. Делать sudo su меня убунта и научила :D

Ответить | Правка | К родителю #217 | Наверх | Cообщить модератору

171. Скрыто модератором  –1 +/
Сообщение от Аноним (-), 30-Апр-23, 13:53 
Ответить | Правка | К родителю #64 | Наверх | Cообщить модератору

200. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от Аноним (200), 30-Апр-23, 22:02 
Это эпичная классная простыня, осталось понять, почему везде, где нужна безопасность, ставят линь, а винда считается маргинальной десктопной хренью, которую даже с серверов почти везде выпилили.
Ответить | Правка | К родителю #64 | Наверх | Cообщить модератору

215. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от InuYasha (??), 01-Май-23, 10:21 
> прописывать им глобальную политику внутри которой SELinux в ТРЕТИЙ РАЗ ПЕРЕИЗОБРЕТАЕТ ACL!!1

И тут я вспомнил как хлебнул этого %s когда начал настраивать "простую" шару по самбе. Сперва три семёрки, потом липкие биты, потом ACL+user_xattr, потом хотел уже selinux (но в дебиане их ещё не было)... Госпатефон, какой же это ужас!!! Пока всё это настроишь... хотя, это не настроишь. Потому что логика хоть и страшная, но недостаточно гибкая. И дремучая. Натягивать нормальные ACL на юниксовую систему юзер-группа - это, ну, хуже всего.

Ответить | Правка | К родителю #64 | Наверх | Cообщить модератору

219. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от пох. (?), 01-Май-23, 10:41 
>> прописывать им глобальную политику внутри которой SELinux в ТРЕТИЙ РАЗ ПЕРЕИЗОБРЕТАЕТ ACL!!1

это он еще забыл про nfsv4 acls. Которые близки к posix но нет.
(потому что ОПЯТЬ позиксное недоразумение оказалось неэффективным и неполноценным и пришлось переизобрести его заново когда понадобился доступ не только руту и вон тому васяну да еще из разных точек сети)


Ответить | Правка | Наверх | Cообщить модератору

268. "Проект по реализации утилит sudo и su на языке Rust"  +1 +/
Сообщение от xPhoenix (ok), 02-Май-23, 11:00 
Три семёрки, по всему Союзу... Полностью согласен, что система управления правами в Linux'е слишком стара. Отсюда растут такие вещи, как мандатные метки и прочее.
Ответить | Правка | К родителю #215 | Наверх | Cообщить модератору

260. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от Коми (?), 02-Май-23, 09:20 
Все намного проще. Микрософт уже давно готова отдаться линуксу, потому что по словам тех же разрабов винды, они не до конца понимают как у них там все устроено. Но линукс такие обсерщики, что лучше будут переписывать то, что т есть на разных странных языках.
Ответить | Правка | К родителю #64 | Наверх | Cообщить модератору

261. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от eganru (?), 02-Май-23, 09:23 
[i]чтобы было как в венде[/i] - можете мне как не специалисту нафига вообще нужно, чтобы было как в венде? Там плюс какой-то большой есть? Особенно с windows не работал и плохо себе представляю, какие проблемы это всё решает.
Ответить | Правка | К родителю #64 | Наверх | Cообщить модератору

264. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от Аноним (264), 02-Май-23, 10:18 
> нафига вообще нужно, чтобы было как в венде?

в венде та же устаревшая модель безопаснеости что и в Linux только в профиль, вот что нужно

https://en.wikipedia.org/wiki/Capability-based_security

Ответить | Правка | Наверх | Cообщить модератору

281. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от Аноним (281), 02-Май-23, 16:52 
>Ну вот на винде

Знаем мы, как в Винде. Там каждый хомячок адиминистратор локалхоста.

Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

148. "Проект по реализации утилит sudo и su на языке Rust"  +1 +/
Сообщение от Бывалый смузихлёб (?), 30-Апр-23, 11:56 
как во многих андройдофонах - пользователя тупо не допускают ни до каких привилегий
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

103. "Проект по реализации утилит sudo и su на языке Rust"  +/
Сообщение от Аноним123 (?), 30-Апр-23, 08:44 
Можно, разрешаю
Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

191. "Проект по реализации утилит sudo и su на языке Rust"  +3 +/
Сообщение от Аноним (191), 30-Апр-23, 17:44 
Ты опоздал лет на 30. Plan9 или его живая реализация 9front уже сделаны и там нет нужды в su или sudo. И кстати никакого раста!
Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру