The OpenNET Project / Index page

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



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

Оглавление

Релиз ядра Linux 4.10, opennews (?), 20-Фев-17, (0) [смотреть все]

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


30. "Релиз ядра Linux 4.10"  +/
Сообщение от zanswer CCNA RS (?), 20-Фев-17, 11:00 
Эм, а как фильтрация пакетов, именно её в самом простом случае, выполняет Packet Filter (Firewall), связана с возможностью выполнение маршрутизации на основе UID приложения (Policy Routing)?
Ответить | Правка | Наверх | Cообщить модератору
Часть нити удалена модератором

63. "Релиз ядра Linux 4.10"  –2 +/
Сообщение от Аноним (-), 20-Фев-17, 12:47 
Всегда было...
# iptables -A OUTPUT -j REJECT -m owner --uid-owner 50-100
Ответить | Правка | К родителю #254 | Наверх | Cообщить модератору

99. "Релиз ядра Linux 4.10"  +/
Сообщение от Аноним (-), 20-Фев-17, 14:58 
>Доколе?

Потому что GNU/Linux не сохраняет нигде пути до экзешника и сам экзешник может быть удален напрочь (в отличие от винды, где это невозможно). Более того, места где сохраняется путь -- модифицируемы, что ведет к тому, что процесс невозможно отследить как надо.

Это, конечно, не является проблемой для BSD-систем, где путь до экзешника находится либо в read-only, либо дается копия для модифицирования путя пользователем.

Итого. Можно ждать вечность. По факту до того момента пока не пофиксят правила модификации пути исполняемого файла.

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

125. "Релиз ядра Linux 4.10"  –3 +/
Сообщение от Аноним (-), 20-Фев-17, 16:14 
Ну вот потому и 2%, в том числе. Потому что юзкейс "разрешить одной проге ходить в инет на один определенный адрес, другой - только в локалку, а третьей вообще только на локалхост" встречаются в продакшене сплошь и рядом. И в линухе они либо не решаемы вообще, либо костылями через /dev/ass. Потому что корпоративные политики безопасности плевать хотели на кукареканье с дивана одминов локалхоста, что линух, дескать взломоустойчив, не то что дырявая В-нда.
Ответить | Правка | Наверх | Cообщить модератору

148. "Релиз ядра Linux 4.10"  +3 +/
Сообщение от Аноним (-), 20-Фев-17, 17:07 
> Ну вот потому и 2%, в том числе. Потому что юзкейс "разрешить
> одной проге ходить в инет на один определенный адрес, другой -
> только в локалку, а третьей вообще только на локалхост" встречаются в
> продакшене сплошь и рядом. И в линухе они либо не решаемы
> вообще, либо костылями через /dev/ass. Потому что корпоративные политики безопасности
> плевать хотели на кукареканье с дивана одминов локалхоста, что линух, дескать
> взломоустойчив, не то что дырявая В-нда.

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

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

151. "Релиз ядра Linux 4.10"  –3 +/
Сообщение от Аноним (-), 20-Фев-17, 17:17 
> кто даст гарантию, что это действительно то приложение с тем функционалом, которому эти права давались? или фаервол по твоему еще должен за хешами бинарников следить?

Именно поэтому он работает в разрезе программ. Даже если файл программы изменился, она не получит больше прав, чем ей было изначально необходимо.

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

159. "Релиз ядра Linux 4.10"  +/
Сообщение от Аноним (-), 20-Фев-17, 18:03 
A "в разрезе программ" это как ?
Ответить | Правка | Наверх | Cообщить модератору

162. "Релиз ядра Linux 4.10"  –2 +/
Сообщение от Аноним (-), 20-Фев-17, 18:24 
"в разрезе Х" = "в детализации по Х"

Права задаются для программы (пути к исполняемому файлу), значит они задаются в разрезе программ.

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

В новых версиях Windows есть понятие "список разрешённых программ", что позволяет создать группы пользователей по их ролям в компании. Это позволяет централизованно (через AD) настраивать права в соответствии с ISO 9001 (описывает кто конкретно что конкретно делает и кто конкретно за что конкретно отвечает).

Не уверен, что Линукс даже близко к этому подошёл. На мой взгляд, он идёт совсем в другом направлении.

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

177. "Релиз ядра Linux 4.10"  +1 +/
Сообщение от Аноним (-), 20-Фев-17, 19:36 
Группы еще в юниксах были. Наконец-то индеец заметил, что нет одной стены. :))
Ответить | Правка | Наверх | Cообщить модератору

199. "Релиз ядра Linux 4.10"  +2 +/
Сообщение от vi (ok), 20-Фев-17, 21:40 
>[оверквотинг удален]
> разрезе программ.
> Впоследствии можно построить отчёт какая программа куда имеет доступ, сравнив имеющийся
> доступ с минимально требуемым. Это значительно удобнее, чем осуществлять контроль прав
> в разрезе пользователей или групп пользователей.
> В новых версиях Windows есть понятие "список разрешённых программ", что позволяет создать
> группы пользователей по их ролям в компании. Это позволяет централизованно (через
> AD) настраивать права в соответствии с ISO 9001 (описывает кто конкретно
> что конкретно делает и кто конкретно за что конкретно отвечает).
> Не уверен, что Линукс даже близко к этому подошёл. На мой взгляд,
> он идёт совсем в другом направлении.

У вас там еще в текстовом процессоре нет настройки "Кому какие символы можно печатать"?
Я рад, что вы даже близко к этому не подошли. Но первый_московский_дурдом уже вздрогнул ;)

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

230. "Релиз ядра Linux 4.10"  +1 +/
Сообщение от Анонимм (??), 21-Фев-17, 00:30 
Не уверен - не срывай.

Попутно же можно загуглить как мракософт меняет позу своего поделия в попытках заявить, что оно умеет Docker _не хуже_ Линукса. Причём, они пихают туда целое линух ядро - иначе ж никак.

А куда подошёл Линукс - можно почитать на сайте docker.com
Там есть и про отдельные сетки для отдельных [множеств] программ (включая роутинг и фаерволл), про любой дистр для любой проги, про отдельные адресные пространства файловых систем (чтобы прога видела только те файлы, что нужны для её работы) и много ещё чего.

У меня уже больше половины GUI-шных программ ходят в нет из своих отдельных контейнеров (причём, фаерволом расписано какой и куда можно), включая браузеры (да, их много и разных).

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

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

261. "Релиз ядра Linux 4.10"  –2 +/
Сообщение от Аноним (-), 21-Фев-17, 10:16 
>больше половины GUI-шных программ ходят в нет из своих отдельных контейнеров

Тебе есть куда стремиться - в системе еще дофига файлов, как рассадишь каждый в свой контейнер, тут и наступит лепота и Сингулярность. Это ж насколько тяжелое поражение мозга надо иметь, чтобы столь очевидные костыли выдавать за нормальное положение вещей. Никогда никакие песочницы-виртуалки-контейнеры не компенсируют продолб в архитектуре, если это не очевидно - медицина тут бессильна. Это общая беда всего маргинального IT - превращать (точнее пытаться превратить) костыли, вожможно и актуальные в частном каком-то случае, в системный подход.

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

264. "Релиз ядра Linux 4.10"  –2 +/
Сообщение от Анонимм (??), 21-Фев-17, 10:28 
> Это общая беда всего маргинального IT - превращать (точнее
> пытаться превратить) костыли, вожможно и актуальные в частном каком-то случае, в
> системный подход.

Расскажите это микроядерщикам. Там тоже всякий чих - в отдельном адресном пространстве.
Да, Таненбаум был прав. И счас жизнь дожимает всё изолировать и отгораживать.
Да, всякие анонимные режимы в браузерах - это тот же тренд. А ещё в фаерфоксе где-то читал запилили тестовую фичу ограждения множеств вкладов друг от друга. Представляете какие "идиоты", ерундой какой занимаются! Но внезапно оказалось, что утечка данных из одной вкладки в другую может обернуться колосальными материальными или моральными потерями для пользователя... Информационная безопасность называется.
Добро пожаловать в реальный мир.

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

301. "Релиз ядра Linux 4.10"  +1 +/
Сообщение от Аноним (-), 22-Фев-17, 02:24 
>[оверквотинг удален]
>>> другой - только в локалку, а третьей вообще только на локалхост"
>>> встречаются в продакшене сплошь и рядом.
>>> И в линухе они либо не решаемы вообще, либо костылями ...
>> ... можно почитать на сайте docker.com
>> Там есть и про отдельные сетки для отдельных [множеств] программ (включая роутинг и фаерволл),
>> ... про отдельные адресные пространства файловых систем
> Тебе есть куда стремиться - в системе еще дофига файлов, как рассадишь
> каждый в свой контейнер, тут и наступит лепота и Сингулярность.
> Это ж насколько тяжелое поражение мозга надо иметь, чтобы столь
> очевидные костыли выдавать за нормальное положение вещей.

Уважаемый Аноним,
так это хорошо, или плохо что можно каждую программу отдельно ограничивать?

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

313. "Релиз ядра Linux 4.10"  –1 +/
Сообщение от Аноним (-), 22-Фев-17, 08:47 
Это хорошо и полезно в некоторых случаях, но всех по контейнерам не рассадишь.
Ответить | Правка | Наверх | Cообщить модератору

315. "Релиз ядра Linux 4.10"  +/
Сообщение от Andrey Mitrofanov (?), 22-Фев-17, 09:55 
>в некоторых случаях, но всех по контейнерам не рассадишь.

Да!1 Тюрьмы ж не резиновые.

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

316. "Релиз ядра Linux 4.10"  +/
Сообщение от Анонимм (??), 22-Фев-17, 10:12 
> Это хорошо и полезно в некоторых случаях, но всех по контейнерам не
> рассадишь.

Например, что принципиально невозможно ограничить лишь ему нужными файлами и или
сеткой и/или множеством процессов?

(/sbin/init - у него просто будет особая роль: всё смортировать, поднять сетку и запустить докер; причём, подобные дистры уже есть, типа CoreOS)

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

161. "Релиз ядра Linux 4.10"  +/
Сообщение от Аноним (-), 20-Фев-17, 18:23 
>> кто даст гарантию, что это действительно то приложение с тем функционалом, которому эти права давались? или фаервол по твоему еще должен за хешами бинарников следить?
> Именно поэтому он работает в разрезе программ. Даже если файл программы изменился,
> она не получит больше прав, чем ей было изначально необходимо.

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

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

171. "Релиз ядра Linux 4.10"  –1 +/
Сообщение от Аноним (-), 20-Фев-17, 18:54 
>я подменяю бинарник

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

Факт в том, что нет никаког фундамента. Одни отмазки. Потому что это ж виндовая тема. А значит ататата по определению это плохо. Детсад.

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

266. "Релиз ядра Linux 4.10"  +/
Сообщение от Аноним (-), 21-Фев-17, 10:52 
> Проблемы безопасности доступа к файлу это не проблема файрволла. Кроме того, никто не запрещает написать файрволл, который бы сверял цифровую подпись приложения, контрольные суммы и т.п.

вот про это я и говорю. защита по сути бесполезна, т.к. работает ТОЛЬКО в комплексе с другими мерами. При этом малейшая ошибка в организации "других мер" и защита полностью недееспособна. И какой смысл тогда городить весь этот огород? Нужно тебе запретить ПОЛЬЗОВАТЕЛЮ доступ к какому-то ресурсу - запрещай. А запрещать доступ одной программе и разрешать другой - идиотизм.

> Факт в том, что нет никаког фундамента. Одни отмазки. Потому что это ж виндовая тема. А значит ататата по определению это плохо. Детсад.

Т.е. чужие аргументы ты в принципе не воспринимаешь?

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

284. "Релиз ядра Linux 4.10"  –1 +/
Сообщение от Аноним (-), 21-Фев-17, 15:12 
>защита по сути бесполезна, т.к. работает ТОЛЬКО в комплексе с другими мерами.

И зачем во всяких там армиях и спецурах таскают всякие шлемы и броники. Можно ж в ногу стрелять, которая зашищена лишь тонкой хебешкой. Дураки, наверное. Внезапно, ВСЯ защита такая. И от сигнализации мало толку будет, если ты банально не запираешь дверь. Из того, что идельная и абсолютная защита от всего недостижима, никак не следует, что никакая не нужна.

>Нужно тебе запретить ПОЛЬЗОВАТЕЛЮ доступ к какому-то ресурсу - запрещай.

А то, что на компе может быть не один пользователь - тебе не приходило в голову? Тогда весть о том, что корпоративная политика может предусматривать использование одного софта для внешних ресурсов, и другого - для интрасети, вообще сорвет твою неокрепшую крышу?

>А запрещать доступ одной программе и разрешать другой - идиотизм.

Нонеча программы шибко умные пошли. Лезут куда не надо безо всякого участия какого-либо пользователя.

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

326. "Релиз ядра Linux 4.10"  +/
Сообщение от Аноним (-), 22-Фев-17, 14:47 
https://shiftordie.de/blog/2013/11/12/http-over-x509-revisited/

Статья старая, однако, какой вектор атаки! Простой значится почтовик превращается в сканер портов. При этом ЛИЧНО ты о таких вещах не узнаешь, если не ковыряешь используемый софт на 200%. Либо, пока кто-то не расскажет.

Если не умеешь в инглиш, то пересказ статьи сводится к тому, что для S/MIME (RFC 5280) имеется опция, когда можно заставить приложение выполнять вслепую HTTP-запросы для проверки сертификата. К счастью, умея делать запросы на основании разницы промежутка ответов для открытых/закрытых портов можно выяснить внутреннюю топологию сети.

Не надо лялякать, что это проблема только MS. Найдется другой софт, опенсорсный, где будет что-то аналогичное. И вот без исследования всех таких тонкостей ты можешь сколько угодно говорить об "защита по сути бесполезна, т.к. работает ТОЛЬКО в комплексе с другими мерами".

Твою сеть просканили. А ты только и делаешь, что ляля про "комплекс мер". Нихера ты не безопасник, раз исключаешь меры по принципу их "комплексности". Или черт знает, что ты имел ввиду.

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

328. "Релиз ядра Linux 4.10"  +/
Сообщение от Аноним (-), 22-Фев-17, 15:32 
Свежая атака на Python: http://www.itworld.com/article/3172604/security/java-and-pyt...
Ответить | Правка | Наверх | Cообщить модератору

154. "Релиз ядра Linux 4.10"  +/
Сообщение от Аноним (-), 20-Фев-17, 17:41 
А что такое "одна прога"? Вы как её уникально идентифицировать собрались? Ц:\Program Files\abc\qaz.exe? А если я вирус, и скопировал её в другое место? Может по хэшу?
Ответить | Правка | К родителю #125 | Наверх | Cообщить модератору

156. "Релиз ядра Linux 4.10"  +3 +/
Сообщение от Аноним (-), 20-Фев-17, 17:46 
>> "разрешить одной проге ходить в инет на один определенный адрес, другой - только в локалку, а третьей вообще только на локалхост"

Похоже, что это локалхостство. Если у вас есть какие-никакие севера, то они разделены или уж группами, или в них чувствительные к компрометации сервисы засунуты в lxc/jail/docker/chooseyourisolationtechnology и дальше уж разруливайте как хотите.
А пока верните аванс Майкрософту - не отработали.

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

127. "Релиз ядра Linux 4.10"  +/
Сообщение от Crazy Alex (ok), 20-Фев-17, 16:27 
В такой постановке задача вообще решается в юзерспейсе построением маппинга "путь - pid" при запуске процесса, скажем, на уровне glibc.

Другое дело, что оно на фиг не нужно, а что нужно - это ещё аккуратно сформулировать надо.

Насчёт модифицируемых путей - чушь, конечно. В /proc/<pid>exe будет линк на запущенный файл. Даже удалённый, он будет доступен.

P.S. А что, в BSD я не смогу собрать исполняемый файл, запустить его и удалить? Что-то не верится.

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

136. "Релиз ядра Linux 4.10"  +/
Сообщение от Аноним (-), 20-Фев-17, 16:40 
>/proc/<pid>exe

А что будет если удалить файл знаешь?
>А что, в BSD я не смогу собрать исполняемый файл, запустить его и удалить? Что-то не верится.

Можешь. Я говорил про то, что оригинальный путь всегда известен, даже если сделать удаление. Хинт в решение задачи выше ^^^^.

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

155. "Релиз ядра Linux 4.10"  +/
Сообщение от Аноним (-), 20-Фев-17, 17:41 
> А что будет если удалить файл знаешь?

К имени файла симлинке добавится (deleted), содержимое файла останется доступным.

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

176. "Релиз ядра Linux 4.10"  +/
Сообщение от Crazy Alex (ok), 20-Фев-17, 19:36 
Именно
Ответить | Правка | Наверх | Cообщить модератору

185. "Релиз ядра Linux 4.10"  –2 +/
Сообщение от Аноним (-), 20-Фев-17, 20:15 
Беда-печаль. Держи веселый код:

unlink (argv[0]);
prctl (PR_SET_DUMPABLE, 0UL, 0, 0, 0);
char proc_exe[PATH_MAX];
sprintf (proc_exe, "/proc/%d/exe", getpid());
unlink(proc_exe);

И, собственно, в чем прелесть BSD? В том, что даже с таким извращением из таблицы процессов (они в памяти ядра, а не в псевдо-фс) ТОЧНО известно откуда был запущен файл.

Самое смешное, что 4.1.20-0-grsec не спросил CAPABILITY на PR_SET_DUMPABLE и тупо позволил снести архиважный файл /proc/pid/exe.

Про то, что содержание файла останется и читабельно... ну, ребята, это не смешно. Не стану унижать, может вы имели в виду, что inode файла как бы еще открыт (а значит не будет очищен фс) и доступен... А по мне, вы просто нифига не знаете. Без обид. Ну, такие вещи не знать =\

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

194. "Релиз ядра Linux 4.10"  +/
Сообщение от Crazy Alex (ok), 20-Фев-17, 21:11 
И что, по-твоему, должен сделать этот пример? Удалить файл? Да вперёд, имеет полное право. /proc/pid/exe как был, так и есть, и доступен для чтения.

И именно это мы и имели в виду, что не только инод открыт, но известен путь в FS (тот самый /proc/<pid>/exe), по которому можно получить содержимое и, скажем, проверить подпись или контрольную сумму посчитать. Что ещё надо-то?

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

231. "Релиз ядра Linux 4.10"  +/
Сообщение от Анонимм (??), 21-Фев-17, 00:38 
> sprintf (proc_exe, "/proc/%d/exe", getpid());
> unlink(proc_exe);

$ rm -f /proc/self/exe
rm: невозможно удалить '/proc/self/exe': Отказано в доступе

uname -r: 4.4.x

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

241. "Релиз ядра Linux 4.10"  –1 +/
Сообщение от Аноним (-), 21-Фев-17, 05:57 
>$ rm -f /proc/self/exe

Иди читай ман. Ты вообще код прочитал?! Ты прочитал или выскочил выи***тся? Что ты доказал? Что ты хотел показать? Иди в ЛОР и там показывай какой ты крутой. Тут ты пока выглядишь дураком.

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

263. "Релиз ядра Linux 4.10"  +2 +/
Сообщение от Анонимм (??), 21-Фев-17, 10:21 
>>$ rm -f /proc/self/exe
> Иди читай ман.

А... сердешный, то-то я смотрю у Вас таких нет... следовательно не знаете

На случай, если Вы где что пользуете, где в procfs нет симлинки "self"
на свой PID, просвещу (ибо, выходит, Вам даже это в манах почитать негде)

$ ls -l /proc/self
lrwxrwxrwx 1 user user x xxx xx xx:xx /proc/self -> 26558

$ ls -l /proc/self
lrwxrwxrwx 1 user user x xxx xx xx:xx /proc/self -> 27831

$ ls -l /proc/self
lrwxrwxrwx 1 user user x xxx xx xx:xx /proc/self -> 27848

Да, представляете, в линухе "self" в корне procfs всегда указывает на диру самого же процесса. Да, сам procfs за меня за ленивого вызывает getpid() и вкладывает в уста
"self" результат соответствующего sprintf(). А потому, /proc/self/xxx - это всегда
именно свои файлы, собственного процесса.


> Ты вообще код прочитал?!

И даже больше, скомпилил (представляешь, кто-то кроме тебя это тоже умеет).
Немного strace'а:

unlink("./test")                        = 0
prctl(PR_SET_DUMPABLE, 0)               = 0
getpid()                                = 25269
unlink("/proc/25269/exe")               = -1 EACCES (Permission denied)


> Ты прочитал или выскочил выи***тся?

Встречный вопрос.

Расписанный Вами "ужос" удаления действительно нужного файла из procfs не подтверждается.
Какой вывод?

> Тут ты пока выглядишь дураком.

И что же такого прям дурного я написал?
Что такого умные завсегдатаи скрывают в своих тайных манах?

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

268. "Релиз ядра Linux 4.10"  +/
Сообщение от Анонимм (??), 21-Фев-17, 11:30 
>>$ rm -f /proc/self/exe
> Иди читай ман. Ты вообще код прочитал?! Ты прочитал или выскочил выи***тся?
> Что ты доказал? Что ты хотел показать? Иди в ЛОР и
> там показывай какой ты крутой. Тут ты пока выглядишь дураком.

Я понял чё это Вы так взъерошились на других.
Во бзде, оказывается по умолчанию этого нету...

Поставил счас в вбокс глянуть что ж оно там щас из себя представляет (давно уж не счупал).
И да:

# ls -l /proc
total 0

Всё ясно.

Но стоит лишь подгрузить procfs и замонтировать его в /proc - то всё там практически так же, чуть называется по-другому:

# ls -l /proc/curproc
r--r--r--  1 root wheel  0 Feb 21 08:25 /proc/curproc -> 986

# ls -l /proc/curproc
r--r--r--  1 root wheel  0 Feb 21 08:25 /proc/curproc -> 987

# ls -l /proc/curproc
r--r--r--  1 root wheel  0 Feb 21 08:25 /proc/curproc -> 990

# ls -l /proc/curproc/file
r--r--r--  1 root wheel  0 Feb 21 08:25 /proc/curproc/file -> /bin/ls

И тоже - вполне логично - не удаляется (хоть и по другим причинам):
# rm /proc/curproc/file
rm /proc/curproc/file: Operation not supported

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

327. "Релиз ядра Linux 4.10"  –1 +/
Сообщение от Аноним (-), 22-Фев-17, 14:58 
> Я понял чё это Вы так взъерошились на других.
> Во бзде, оказывается по умолчанию этого нету...

Во-первых, признаю свой косяк с /proc/pid/exe. Действительно, procfs монтируется по правам 05xx (где x это 5 или 0). И симлинк на exe невозможно удалить и модифицировать в таком случае. Да, бывает проглядел вывод ls и отписался сгоряча. Звиняйте.

Во-вторых, в бзд таблица процессов находится в другом месте. Не procfs. Там и top работает по-другому. Мой наезд был на линукс в том плане, что без procfs утилиты вроде top, да и само ядро не узнают путь до бинарника. В бзде это зашивается во внутренную таблицу процессов, при этом путь этот никак не изменить, а все что можно изменить через, скажем, argv[0] - лишь копия, а оригинал можно легко вывести через ps(1) или top(1).

В-третьих, не надо думать, что я совсем идиот и не знаю про /proc/self -- для дебага этот /proc/self на*** не сдался: getpid() нужно смотреть, так пусть тестовая прога его печатает  сама.

Итого. В линуксе без procfs эта информация [о пути] _нигде_ не хранится. Да, систем без procfs можно сказать не бывает (ТМ). И тем не менее, procfs это лишь опция, которую можно вырезать из ядра и тогда оно превращается в биомассу. В отличие от бзди, где это прописано в ... недра.

Всё, вопрос про /proc/pid/exe закрываем. Хотя есть ряд вопросов по поводу '(deleted)'. Будет время -- поковыряю. Вот интересно, что будет при пути бинарника длиной PATH_MAX-1. Куда припишится '(deleted)'? :)

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

333. "Релиз ядра Linux 4.10"  +1 +/
Сообщение от Анонимм (??), 22-Фев-17, 23:28 
> Звиняйте.

Ничё, бывает. Я вон дальше по треду разошёлся, что ld.so загрузчик может грузить бинарии с noexec дир и только потом попробовал на практике - оказалось, что уже не может, в glibc прикрыли.

> Мой наезд был на линукс в том
> плане, что без procfs утилиты вроде top...не узнают путь до бинарника.

Да, top требует для работы чтоб 'proc' (не 'procfs', к слову, но мелочи) был замонтирован в /proc

> да и само ядро не узнают путь до бинарника.

Даже не знаю откуда у Вас такие заблуждения (неужели так сложно исходники открыть, прежде чем делать такие выводы на публику?)
Линух 4.4.x

Смотрим структуру задачи-потока на юзер-левеле (task_struct). В процессе их может быть N+1, но тогда у всех них одна и та же память (т.е. указатель на "struct mm_struct *mm")

include/linux/sched.h:
   struct task_struct {
    ...
    struct mm_struct *mm,
    ...
   }


include/linux/mm_types.h:
   struct mm_struct {
    ...
    struct file __rcu *exe_file
    ...
   }

И эти места в коде не обусловлены никакими #ifdef, т.е. от опций сборки не зависят.
Т.е. ядро всегда знает каков бинарь у процесса.
А файловая система 'proc' - просто использует эти данные, будучи настройкой.

$ grep CONFIG_PROC_FS /boot/config-4.4.0-64-lowlatency
CONFIG_PROC_FS=y

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


> В бзде это зашивается во внутренную таблицу процессов

Ну выше видите: в Линухе тоже.
(даже не пойму: с какой стати доставать ТАКУУУЮ огромную шашку против устройства Линуха, реально не смотрев его изнутри? Берёте на понт? - так упенсурс же, все могут проверить...)

> при этом путь этот никак не изменить, а все
> что можно изменить через, скажем, argv[0] - лишь копия, а оригинал
> можно легко вывести через ps(1) или top(1).

Ну то же и в пингвине. Оригинал никуда не спрятать. И?
"Во-вторых" ушло пока что вникуда.


> В-третьих, не надо думать, что я совсем идиот

И заметьте, не я это произнёс...

> и не знаю про
> /proc/self -- для дебага этот /proc/self на*** не сдался: getpid() нужно
> смотреть, так пусть тестовая прога его печатает  сама.

Да пусть. Если Вам так уж принципиально лично вызвать getpid(), а не через ФС 'proc'.


> Итого. В линуксе без procfs эта информация [о пути] _нигде_ не хранится.

См. выше и читайте прежде, чем говорить.


> Да, систем без procfs можно сказать не бывает (ТМ). И тем
> не менее, procfs это лишь опция, которую можно вырезать из ядра
> и тогда оно превращается в биомассу.

Какие-то далёкие от техники алегории...
И без PROC_FS ядро будет прекрано осведомлено кто откуда запущен.
И что-то набиомассу здесь активно начинает претендовать кто-то другой...


> В отличие от бзди, где это прописано в ... недра.

Да, внутренние файлики ядра и структуры данных называются по-разному. И всё отличие в этом вопросе.


> Всё, вопрос про /proc/pid/exe закрываем.

Да пожалуйста. Пофантазировали на тему Линукса и в люлю.
Что-то для осознающего свою правоту Вы несколько эмоциональны. К чему бы это? Или лавры Линуха на пингвине не дают покоя демону?

В бзд как-то гениально размещена таблица процесов? - нет
а в линухе? - тоже нет. Размещена и размещена.


> Хотя есть ряд вопросов по поводу '(deleted)'.
> Будет время -- поковыряю.

Ага! Обос*ать время есть, и прямо сейчас, а поднять достоверную инфу пока времени не было :) Классика.

Держите, Вам для затравочки:

запущен sleep (PID 14281)

а от рута делаем следующее:
# l /proc/14281/exe
lrwxrwxrwx 1 user user 0 фев 22 xx:09 /proc/14281/exe -> /bin/sleep

# mv /bin/sleep /bin/sleep1

# l /proc/14281/exe
lrwxrwxrwx 1 user user 0 фев 22 xx:09 /proc/14281/exe -> /bin/sleep1

Мож натолкнёт на какие мысли.


> Вот интересно, что будет при пути бинарника
> длиной PATH_MAX-1. Куда припишится '(deleted)'? :)

Досрочный ответ: выдача пути с приписанным '(deleted)' не ограничивается PATH_MAX'ом, а просто размером переданного буфера.


Просто вообще не очень ясно в чём собсно, проблема. Знать откуда был запущен процесс - ну хорошо. Структура списка процесов в Линухе покажет переименованный или удалённый путь бинаря. Но если у кого есть право удалять/переименовывать и запускать бинари - то это уже неслабый доступ. И если стоит задача наблюдать активность юзерей аж с таким уровнем доступа - то подсистема audit Вам в руки. Там каждый чих пишется: кто чего куда.
Как по мне, довольно логично: дефолтный уровень секурити - таков, надо больше - бери больше инструментов (поставить/запустить тот же auditd). Или всё сразу должно быть из коробки, невзирая надо оно или просто память жрёт? А если аналогичных инструментов не один? Возможность выбора можно считать плюсом или минусом? (необходимость думать и осознанно выбирать - тоже кому-то будет в минус)

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

334. "Релиз ядра Linux 4.10"  +/
Сообщение от Анонимм (??), 23-Фев-17, 00:34 
И кстати, о безопасности.
Если же знанием о файле запуска бинаря Вы планируете закрыть какой-либо из возможных т.н. "векторов атаки", типа, когда через дырь заливается и запускается бинарь, висит и внаглую слушает порт.
А Вы его планируете "опа" - и посмотреть куда он был залит, и, воможно, это бы указало на след. пролома в защите.

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

Так что, если есть желание иметь достаточную инфу для анализа взломов - то придётся много логировать, вести аудит действий, чтобы все [стрёмные] exec()и писались.

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

337. "Релиз ядра Linux 4.10"  –1 +/
Сообщение от Аноним (-), 23-Фев-17, 10:12 
Надоело спорить, у тебя слишком много повторяющейся простыни. Почитай man 2 prctl PR_SET_MM_EXE_FILE для интереса. Ты отчасти прав и не прав, есть еще копия exe_file в виде vm_file. Ни к exe_file, ни к vm_file API нет. Все через procfs.
Ответить | Правка | К родителю #333 | Наверх | Cообщить модератору

338. "Релиз ядра Linux 4.10"  +1 +/
Сообщение от Анонимм (??), 23-Фев-17, 11:11 
> Надоело спорить

Дело сугубо добровольное.
Но лично мне было полезно.

> Почитай man 2 prctl PR_SET_MM_EXE_FILE для интереса.

О как. Спасибо за наводку.


> Ты отчасти прав и не прав, есть еще
> копия exe_file в виде vm_file. Ни к exe_file, ни к vm_file
> API нет. Все через procfs.

Да, ФС proc нужна для посчупать процессы. Такой дизайн.
Все разные, не обязательно же следовать какому-то древнему принципу в каком-то одном из юниксов.

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

226. "Релиз ядра Linux 4.10"  +/
Сообщение от Аноним (-), 20-Фев-17, 23:40 
>отому что GNU/Linux не сохраняет нигде пути до экзешника и сам экзешник может быть удален напрочь (в отличие от винды, где это невозможно). Более того, места где сохраняется путь -- модифицируемы, что ведет к тому, что процесс невозможно отследить как надо.

Capabilities? Не, не слышал.
А привязыввается оно не к путям файлов, а к метаданным файла. И поэтому пофиг, куда там исполняемый файл переместили.

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

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

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




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

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