The OpenNET Project / Index page

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



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

Оглавление

Проект по портированию механизма изоляции pledge для Linux, opennews (??), 15-Июл-22, (0) [смотреть все]

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


88. "Проект по портированию механизма изоляции pledge для Linux"  –1 +/
Сообщение от Аноним (-), 18-Июл-22, 12:11 
// disclaimer: я другой анон но разделяю взгляды того анона, поэтому...

> Дело в том, что "интегрировать в systemd" -- это здесь такая дежурная
> шутка. Потому не всегда понятно, что имеет ввиду автор сообщения.

При том 90% шутников - некомпетентные ламы заучившие в лохматые годы команды и решившие что других вариаинтов нет и быть не может. Им плевать что линух за годы ушел сильно вперед, что там куча фич. Так то clone() и unshare() довольно забавно сделаны. Namespaces вращаются вокруг них. Чем процесс от треда в линухе отличается? У процесса unshare()'d немного больше. А у контейнеров - еще немного больше. В принципе комбо флагов вроде даже можно получить "внеклассовые" абстракции. То что это никто не делает - ну, есть устаканившиеся варианты, они понятны пиплу, ими и пользуются.

> Я когда-то написал, что может иметь смысл добавить в пакетный менеджер функцию
> контроля за целостностью системы, наверное, тоже восприняли как "шутку".

А в какой пакетный менеджер это надо добавлять? У редхата есть, для дебиана отдельная утилса есть, а у какого-нибудь арча пакетник что так рудиментарный что эдак.

А что до системды: лично я тоже использую урезание прав системным сервисам системдой. Оно может и сисколы порубать, и юзера выставить, и unshare того или иного namespace сделать. Там есть свои тупняки, но, вообще, можно конфижком на полэкрана нехило доступ в систему порубать, при том вот именно unix way-ем такое не особо то и соберешь - просто потому что в процессе сборки изолированой арены нужные части системы уже недоступны. А зачем вебсерваку уметь вызывать баш? Чтобы скриптокиду было удобнее систему ломать? А вот хрен ему, удобно админу должно быть, хакерам наоборот. Иначе нахрен такая безопасность нужна?

Заодно там же всякие шедулеры и приоритеты им можно поставить и проч и все такое прочее. Идея всегда-резидентной привилегированой запускалки которая может отвесить все нужные сисколы в верном порядке, не развалив арену и не завися от внешних компонентов (которые в контейнерах становятся недоступны) имхо сама по себе ОК. Поцтер просто вовремя не угомонился и чересчур разогнался. Скажем нетворкд вышел странной хренью, но он вообще опционален.

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

90. "Проект по портированию механизма изоляции pledge для Linux"  +/
Сообщение от n00by (ok), 18-Июл-22, 15:24 
>> Я когда-то написал, что может иметь смысл добавить в пакетный менеджер функцию
>> контроля за целостностью системы, наверное, тоже восприняли как "шутку".
> А в какой пакетный менеджер это надо добавлять?

В том случае Михаил Шигорин кого-то озадачил вопросом "предложите что-то конкретное". Я предложил. Он так и не ответил. Наверное, решил, что шучу. А может я забыл.

> У редхата есть, для
> дебиана отдельная утилса есть, а у какого-нибудь арча пакетник что так
> рудиментарный что эдак.

К примеру, нажал я в mc на каком-то подкаталоге из /usr "удалить" и потом "ввод". Что будет дальше у Редхата и Дебиана? А если удаляем ld-linux.so? Или же кто-то наконец скомпилировал Z0mbie.Mistfall под Linux, когда мы узнаем о факте заражения? Всё это в принципе может решать "пакетник", поскольку именно у него есть вся необходимая информация, а наличие посторонних "антивирусов" (в кавычках - потому что без сигнатур толку может быть мало) не всем нравится. Но потом я узнал, что под "целостностью системы" некоторые понимают удовлетворение зависимостей пакетиков, а под "удовлетворением зависимостей" - присутствие записи в БД, а не наличие валидных файлов.

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

93. "Проект по портированию механизма изоляции pledge для Linux"  +/
Сообщение от Аноним (-), 19-Июл-22, 02:24 
> В том случае Михаил Шигорин кого-то озадачил вопросом "предложите что-то конкретное". Я
> предложил. Он так и не ответил. Наверное, решил, что шучу. А может я забыл.

Тут что угодно может быть. Он периодически пытается допустим дебианщиков подъ...ть, с потугами доказать что альт типа-лучше. Но дебианщики так то умеют проблемы решать и по факту обычно оказывается если не тот, то альтернативный способ как нечто делать, и он тоже работает, в результате демо получается неубедительным.

> К примеру, нажал я в mc на каком-то подкаталоге из /usr "удалить"
> и потом "ввод". Что будет дальше у Редхата и Дебиана?

1) Нормальные люди под рутом в общем случае не сидят. Поэтому, в 99% случаев будет -EPERM от системы на подобные потуги.
2) Если вдруг я ну вот лох-лох, не выспался там, и под рутом все же вот это влупил - ну, это печально, однако все что мне грозит это ребут в rootfs или, если совсем уж все плохо (например /boot снес) - бут с флешки. А дальше - очень небольшое жонглирование с снапшотом - и вот уже OS опять на месте. Минуты за две. В примерно том виде как была. Заведомо логически консистентном. Как максимум это может быть немного устаревшим вариантом, ему может быть надо апдейты опять накатить или переделать недавние изменения конфигов (все важные изменения логично снапшотить).

И да, это все не пакетный менеджер а ФС обеспечивает. У нее это лучше получается. Заодно в принципе есть и некий список "недавних изменений". И лично я спер идею убунтуев, когда есть уровень менеджмента, он на 1 уровень выше /. Его в нормальном виде не видно, но при желании моунтабельно - и оттуда как раз можно снапшотами порулить.

> А если удаляем ld-linux.so?

initrd оно так то будет похрен, а операционка на флехе даже и выпиленый /boot вернуть может.

> Или же кто-то наконец скомпилировал Z0mbie.Mistfall под Linux,
> когда мы узнаем о факте заражения?

Надежнее всего бутанув с readonly носителя отдельную копию операционки, конечно, заведомо нормальную. Потому что если в ОС подозрение на руткит, доверять ей уже не стоит.

От некоторых развеселых экспонатов даже это не поможет. Вон тот хайтек патчащий фирмвари винчей и отдающий "не те" сектора плевать хотел. Однако, кмк у именно меня он "почему-то" облажается в парсинге, а я озадачусь вопросом WTF. Что такое JTAG я, таки, знаю. Так что в этом случае ценный экспонат, вероятно, улетит всем мыслимым аверам, для максимизации урона. Сделать невкусным соотношение gain/loss для атакующего - кажется мне удачной идеей.

> Всё это в принципе может решать "пакетник",

ИМХО, это все же не его задача. ФС со снапшотами это может делать намного фундаментальнее, куда меньше зависит от живости ОС и ее начинки - а менеджмент системы при этом начинает напоминать привычные виртуалки, с теми же терминами и свойствами вместо очередного наколенного кастома.

> поскольку именно у него есть вся необходимая информация,

В принципе да, НО...
1) Уметь repair снесенного usr значит что он должен хранить все скачаные архивы. Плюс 100500 к жрачу места системой на хранение полных архивов.
2) Ах да, снапшоты имеют интересную фичу: core set блоков только один, место занимает только "дельта". Если эту концепцию понять, потом все просто, логично и эффективно. И это понимают все кто продвинуто работал с виртуалками.
3) Пакетнику для работы нужна рабочая система. Он обычная программа. Конечно, можно его статически отстроить и проч. Но тогда фиксить его сам станет отдельной канителью для майнтайнеров с трекингом внутренних либ и дублированием его сущностей. Можно наверное в initrd положить. Но это порядком увеличит initrd - и это НЕ есть консистентное состояние: оно еще зависит от файлов с статусом пакетов и проч описывающими что установлено и т.п..
4) А продолб этого состояния в системе с пакетником так то довольно неприятный опыт. Снапшот что, он пакетник и его состояние синхронно откатит в взаимно-консистентное состояние. Врядли кто снапшотил уже порушеную систему.
5) Full reinstall всего что было в usr займет неиллюзорное время сравнимое с полным инсталлом системы. Именно поэтому продвинутый народ оперирует "образами", "снапшотами", "send" и тому подобным. Так тупо в цать раз быстрее. Откат снапшота не ворочает большую часть блоков, только указатели переставляет в вид когда теперь это прошлый view. А пакетник, таки, будет все 100500 гигабайтов телепать от и до.
6) В как минимум дебиановском пакетнике можно повесить хук делающий что угодно после инсталла пакета. В том числе и снапшот можно сделать. Нужно ли - вопрос номер два.
7) Side effect of CoW: "копирование" виртуалки с 20Гб диском, или даже образа винча на 2 терабайта чтобы "fsck" на нем прогнать занимает примерно секунду, и нового места это не занимает. Это тоже частный случай "unshare", но в этом случае блоков ФС: копия изначально референсится на те же блоки, по мере расхождения CoW делает свое дело. Только он это делает плавно. И те цать блоков которые fsck изменил "в run time" меня не парят как "занимаемое место". В отличие от идеи копировать 2 терабайта по настоящему. А видимость независимой копии, вот, есть. Конечно как и в случе с VM дельта может отрастать, если это не контролировать.

> под "целостностью системы" некоторые понимают удовлетворение зависимостей пакетиков,

Целостность системы весьма многогранный аспект. Есть еще допустим логическая консистентность: данные и конфигурация должны соответствовать бинарям. Ну вот представляете, автор может допустим формат конфига поменять в энной версии. У вас был старый usr, старый конфиг. Потом после апдейта пакета вы пропатчили конфиг. Стал новый usr, новый конфиг. Но если откатывать абы как, можно получить скажем новый usr/старый конфиг. И оно таки сломается. А когда после дурного отката это сделают цать программ сразу, станет интересно.

> а под "удовлетворением зависимостей" - присутствие записи в БД, а не
> наличие валидных файлов.

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

Более того - у MSI на вот подобной почве бывает неиллюзорное горе от ума.
- Инсталлю это, это и это...
- Ой, не получилось, давай-те ка я rollback сделаю!
- Упс. Оказывается, файл роллбэка или исходник пакета были повреждены. ERROR! FAIL! ПОЛУНДРА!11

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

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

96. "Проект по портированию механизма изоляции pledge для Linux"  +/
Сообщение от n00by (ok), 19-Июл-22, 09:33 
>> К примеру, нажал я в mc на каком-то подкаталоге из /usr "удалить"
>> и потом "ввод". Что будет дальше у Редхата и Дебиана?
> 1) Нормальные люди под рутом в общем случае не сидят. Поэтому, в
> 99% случаев будет -EPERM от системы на подобные потуги.

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

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

97. "Проект по портированию механизма изоляции pledge для Linux"  +/
Сообщение от Аноним (-), 19-Июл-22, 10:40 
> "Пакетник" тоже может дать отлуп - он знает, что вот эти файлы
> именно такой версии необходимы для корректной работы системы.

Это что, на каждый сискол мнение пакетника спрашивать? И сколько MIOPS/core получится? 0.0(0) примерно? Пакетник не часть ядра и не компонент миднайта. Хотя при сильном желании наверное можно какой-то плагин к миднайту сделать, но...

... но в стабильных дистрах придумали сильно более простой способ. В пределах релиза системные либы - той версии какой условиились, и ВЕСЬ СОФТ билдуется под НИХ. И софт в репах как правило по версиям лочится. Майнтайнеры по ходу дела бэкпортят секурити фиксы и проч. Это вообще совсем не как в винде но имеет ряд плюсов. В частности, поставив систему, можно лепить апдейты на все и вся не глядя практически - и ничего не сломается. А если вместо программы версии 1.2 влепят 3.3 выкаченый автором - ну а вот не факт что оно конфиг от 1.2 вообще сожрет, может автор все перепахал два раза?! Вот только я сегодня покодить хотел, вон тот проект, а вовсе и не разгребать такой факап за апдейтером. И вот тут отличие от винды очень на руку. Это с одной стороны относительно секурно и ВСЕ компоненты в системе патчатся одной софтиной, вовремя. С другой - не ломает систему. Да, это компромисс.

> Тогда перезагрузка не потребуется.

Если моя система еще работает я тоже могу снапшот подпихнуть без ребута. Но вот это при сносе usr уже не гарантировано.

> РэдХат куда-то в эту сторону и движется с атомарным обновлением
> системы и доступом "только чтение" - такой подход проще.

Кому оно надо было - и без всяких редхатов подобное сто раз делали. А вот именно редхат в технологиях пакетников вообще очень так себе господа. Во всяком случае что up2date, что yum, что dnf у них были тормозным, глюкавым сблювом, куском наколенной питонятины жрущей ресурсы и временами раздристывающее свою базу пакетов не хуже MSI installer. Почему за цать лет нельзя столь важный системный компонент сделать нормально а не вебмакаками я не знаю. Для меня это был аргумент развидеть редхаторбразных к чертям. Наверное по примерно тем же причинам альты взяли фронтом к rpm-у все же дебиановский apt, избавив себя от множества "радостей".

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

98. "Проект по портированию механизма изоляции pledge для Linux"  +/
Сообщение от n00by (ok), 19-Июл-22, 11:22 
>> "Пакетник" тоже может дать отлуп - он знает, что вот эти файлы
>> именно такой версии необходимы для корректной работы системы.
> Это что, на каждый сискол мнение пакетника спрашивать?

Нет. Самый очевидный вариант - нотификации ФС.

> И сколько MIOPS/core получится?

Касаемо pledge эти вопросы ведь никого не волновали. ;)

> 0.0(0) примерно? Пакетник не часть ядра и не компонент миднайта. Хотя
> при сильном желании наверное можно какой-то плагин к миднайту сделать, но...

Я не готов предметно обсуждать детали реализации, поскольку она никому не нужна.

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

99. "Проект по портированию механизма изоляции pledge для Linux"  +/
Сообщение от Аноним (99), 19-Июл-22, 14:14 
> Нет. Самый очевидный вариант - нотификации ФС.

Нотификации приходят постфактум, в этот момент уже поздно отлуп возвращать. К тому же пакетник может быть не в форме после выноса /usr

Для эффективной реализации тут скорее напрашивается какой-то ядерный интерфейс где юзермод решает allow/deny но такого в ядре вроде нет и не понятно чего делать если хелпер в юзермоде упал например.

> Касаемо pledge эти вопросы ведь никого не волновали. ;)

Имхо это сильно менее позорно будет, чем БД пакетника на каждый чих лукапать. В нормальной ситуации обычные программы под обычным юзером вообще не могут "write" в систему.

> Я не готов предметно обсуждать детали реализации, поскольку она никому не нужна.

Ну да. А не нужна она потому что на прогу пытаются навесить не свойственный ей род занятий.

А так - у меня в usr _все_ файлы припасаны к тому или иному пакету. Лишний файл это баг. Отсутствующий файл это баг. Этот каталог просто не рулится мной мануально вообще. Даже самосбор это либо пакет собраный билдсистемой, либо checkinstall хотя-бы. А так чтобы вот именно левый или отсутствующий файл - ну нет, я как раз проникся прелестью унификации управления через пакетник, все только через него. Но он не ACL и не "system files protection". Это менеджер софта. И системного и не очень - там никакого особого деления на систему и не-систему нет. Я сам решаю что для меня "система" по большому счету.

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

100. "Проект по портированию механизма изоляции pledge для Linux"  +/
Сообщение от n00by (ok), 19-Июл-22, 16:12 
>> Касаемо pledge эти вопросы ведь никого не волновали. ;)
> Имхо это сильно менее позорно будет, чем БД пакетника на каждый чих
> лукапать.

ИМХО позорно другое. Для Виндоса, где как бы нет исходников ОС, одних только антируткитов написано штук десять. Проактивок всяких, наверно, и не счесть - они там что-то фильтруют и делают это грамотно (я слышал даже про откат состояний системы, и если люди за такое платят, значит оно не шибко тормозит). А здесь почему-то приходится объяснять, что я нигде не писал про запросы к БД пакетника, и мне бы в голову не пришла такая деталь реализации.

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

101. "Проект по портированию механизма изоляции pledge для Linux"  +1 +/
Сообщение от Аноним (-), 19-Июл-22, 23:06 
> 3) Пакетнику для работы нужна рабочая система. Он обычная программа. Конечно, можно
> его статически отстроить и проч. Но тогда фиксить его сам станет отдельной канителью для майнтайнеров с трекингом внутренних либ и дублированием его сущностей.

Ну-ну.
https://github.com/freebsd/pkg/blob/master/mk/static-lib.mk


% ldd -f "%o\n" /usr/local/sbin/pkg
libelf.so.2
libjail.so.1
libssl.so.111
libcrypto.so.111
libarchive.so.7
libbz2.so.4
libz.so.6
liblzma.so.5
libprivatezstd.so.5
libm.so.5
libutil.so.9
libmd.so.6
libthr.so.3
libc.so.7
libbsdxml.so.4

% ldd /usr/local/sbin/pkg-static
ldd: /usr/local/sbin/pkg-static: not a dynamic ELF executable


Просто поменьше пихтончика и свистелок с перделками в пакетник пихать надо (или делать зависимости опциональными).

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

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

102. "Проект по портированию механизма изоляции pledge для Linux"  +/
Сообщение от n00by (ok), 20-Июл-22, 06:14 
Как я успел понять из недавней темы про руткит с LD_PRELOAD, в GNU/Linux сформировалась некая религия вокруг glibc. Линковаться с библиотекой следует не так как того требует задача, а согласно учению гуру. Отсюда и остальные артефакты мышления: перегрузить боевую систему "на пару минут" и восстановиться из резервной копии это норма, а уведомление об удалении файла и дублирование жизненно важных so-шек - это слишком поздно и много места занимает (и лучше бы он ответил "как в венде" -- мне тоже такое решение не нравится, как не надёжное).
Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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