The OpenNET Project / Index page

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



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

Оглавление

Открыт код Douane, динамического межсетевого экрана для Linux, opennews (?), 28-Апр-14, (0) [смотреть все]

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


27. "Открыт код Douane, динамического межсетевого экрана для..."  +5 +/
Сообщение от Аноним (-), 28-Апр-14, 11:17 
> и зачем эта фигня нужна? O_O

Можно вспомнить молодость, агнитум виндозный :)

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

28. "Открыт код Douane, динамического межсетевого экрана для..."  +/
Сообщение от arisu (ok), 28-Апр-14, 11:31 
я года три, мало четыре (а может и больше) назад решил повспоминать. сделал PoC на основе LD_PRELOAD, простые гуя на Qt, отладил и выкинул. оно таки работало, и работало неплохо, но было совершенно бесполезно.

впрочем, для юзеров всяких бубунт, где что ни попадя куда попало данные сливает, может, и будет полезно. хотя лучше бы они шли назад в любимую винду.

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

47. "Открыт код Douane, динамического межсетевого экрана для..."  +/
Сообщение от Аноним (-), 28-Апр-14, 13:18 
> сделал PoC на основе LD_PRELOAD,

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

> выкинул. оно таки работало, и работало неплохо, но было совершенно бесполезно.

Ну вот это пожалуй главная проблема.

> сливает, может, и будет полезно. хотя лучше бы они шли назад
> в любимую винду.

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

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

64. "Открыт код Douane, динамического межсетевого экрана для..."  +1 +/
Сообщение от arisu (ok), 28-Апр-14, 14:20 
> Так не пойдет

ну да, вот всё бросил и сразу начал ядерный драйвер писать. ;-) говорю же, что PoC. мне, собственно, более интересно было тогда с LD_PRELOAD поиграться, а не фаер наваять.

> хоть я и использую хубунту

но прилюдно-то зачем в этом признаваться?!

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

96. "Открыт код Douane, динамического межсетевого экрана для..."  +/
Сообщение от Аноним (-), 28-Апр-14, 16:28 
> LD_PRELOAD поиграться, а не фаер наваять.

А, понял :). Я тоже так поигрался, написав нечто типа логгера/обрубалки файловых операций, только гуй мне в таких вещах совсем ни к чему, чисто тулза посмотреть "а что эта прога в ФС хотела сделать".

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

> но прилюдно-то зачем в этом признаваться?!

Затем что слов из песни не выкинешь :). Да и в конечном результате один фиг с дебианом, только меньше костылить надо.

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

100. "Открыт код Douane, динамического межсетевого экрана для..."  +1 +/
Сообщение от arisu (ok), 28-Апр-14, 16:37 
> да, glibc можно запустить как исполняемый
> файл и получить некий вполне осмысленный отлуп

угу, я знаю. забавно иногда народ удивлять.

> Пингвин не винды, на дешевые уловки не покупается.

ну да, если что-то есть в системе, то оно есть в /proc (руткитованость не считаем, конечно).

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

то есть, можно, конечно: заюзаную dll переименовать, положить новую, при следующем запуске софтины проверить, если ли переименованная, удалить. и это у них НОРМАЛЬНО, йопт.

а ещё они там аж целый атрибут «удалить файло по закрытию» придумали (который тоже работает через задницу, кстати). вместо обычного unlink() — и дальше система сама.

временные файлы, кстати, полезно сразу unlink()ать. чтобы даже если софтина рухнет, за ней в /tmp срача не оставалось. на винде затрахаешься это нормально сделать.

и fork() там нет тоже.

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

172. "Открыт код Douane, динамического межсетевого экрана для..."  +/
Сообщение от Аноним (-), 29-Апр-14, 04:02 
> угу, я знаю. забавно иногда народ удивлять.

Ну вот мне стало интересно как такое делать, чтобы "dll" еще и как нормальный исполняемый файл засчитывалась :).

> ну да, если что-то есть в системе, то оно есть в /proc
> (руткитованость не считаем, конечно).

Ну да. Простыми дешевыи трюками обмануть не получилось.

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

Ну да. А я себе мониторинг частот GPU вообще примитивным циклом на шеллскрипте накoлхозил - опенсорсный драйвер вывешивает частоты и вольтажи как просто файлик. Так что можно из г-на и палок сделать мониторинг GPU за ...цать секунд и без спецутилит. Это я баг с реклоком относительно старых GPU от AMD изучал. Правда, как оказалось, надо было кернел посвежее взять - там баг уже починили, быстрее чем я его зарепортил. Лол.

> то есть, можно, конечно: заюзаную dll переименовать, положить новую, при следующем
> запуске софтины проверить, если ли переименованная, удалить. и это у них НОРМАЛЬНО, йoпт.

Ага, гeмор. В пингвине достаточно снести файл и записать поверх свой. ФС сама отпустит стертую копию когда та перестанет использоваться. Кстати, упоминавшийся тут sysdig просекает такое - я в его трассировке чесал репу, что за deleted файл? Оказывается, я версию проги проапдейтил, но одна старая копия работала и в памяти болталась. Sysdig достаточно умный чтобы это распознать и честно написать - стертый файл.

> а ещё они там аж целый атрибут «удалить файло по закрытию» придумали
> (который тоже работает через зaдницy, кстати). вместо обычного unlink() — и
> дальше система сама.

Да я в курсе что там это через ж. Вообще удивительно как можно на ровном месте столько проблем сделать.

> временные файлы, кстати, полезно сразу unlink()ать. чтобы даже если софтина рухнет,

А новые модные O_TMPFILE сносятся сами без такого "хинтинга"? А то фича интересная, но не проверял как оно в таких случаях работает.

> за ней в /tmp сpaча не оставалось. на винде затpaхaешься это нормально сделать.

Там вообще все что связано с установкой софта - совершенно нездоровый тpах на ровном месте. MSI installer например - вроде бы почти как пакетный манагер. Но попросить у него "а я вот хочу zlib, версии не менее чем N" - фигвам. Ну и толку с такого "пакетного манагера"? Зато програмится так люто что есть отдельный класс разработчиков - "сетаперы". Они, кстати, MS обычно не любят. "Ну вы же понимаете что это - Microsoft" :)).

> и fork() там нет тоже.

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

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

200. "Открыт код Douane, динамического межсетевого экрана для..."  +/
Сообщение от Аноним (-), 02-Май-14, 17:55 
>> и fork() там нет тоже.
> А это вообще прикол. Хочешь усложнить портировнаие программы на винду - форкайся
> :). Я как-то не очень представляю себе как его полный аналог
> сделать из того что есть. А цыгвин его реализует, кстати?

Если правильно помню, то форкнуться в винде можно, но это за пределами Win32 API, надо системные вызовы напрямую дёргать.

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

201. "Открыт код Douane, динамического межсетевого экрана для..."  +/
Сообщение от arisu (ok), 02-Май-14, 22:11 
> Если правильно помню, то форкнуться в винде можно, но это за пределами
> Win32 API, надо системные вызовы напрямую дёргать.

толком всё равно не получится. Небет в своё время в книге показывал косой и кривой неполный эмулятор форка на native API, но оно имело ограничений и было напрямую зависимо даже от сервиспака, а не просто от версии винды, потому что недокументированые системные структуры правило.

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

203. "Открыт код Douane, динамического межсетевого экрана для..."  +/
Сообщение от arisu (ok), 02-Май-14, 22:14 
> Ну вот мне стало интересно как такое делать, чтобы "dll" еще и
> как нормальный исполняемый файл засчитывалась :).

chmod +x libmylib.so ;-)
на второй и сложный не отвечаю! (ц)

> А новые модные O_TMPFILE сносятся сами без такого "хинтинга"? А то фича
> интересная, но не проверял как оно в таких случаях работает.

я не в курсе, относительно новые фичи не использую, жду, пока везде расползётся. а то ifdef'ы не радуют.

>> и fork() там нет тоже.
> А цыгвин его реализует, кстати?

только в виде «fork() и сразу exec()», насколько помню, другое API звать не стоит.

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

68. "Открыт код Douane, динамического межсетевого экрана для..."  +/
Сообщение от pavel_simple (ok), 28-Апр-14, 14:32 
>> сделал PoC на основе LD_PRELOAD,
> Так не пойдет, это довольно просто обойти. У нормальных фаеров энфорсмент в
> ядре, чтобы халявных методов дурилова не было.

это не про сей модуль, например он игнорирует фильтры всего акромя tcp/udp

И, кстати, как там
> с оверхедом? А то когда какой-нить торрент на хренадцати мегабитах вольет
> несколько тысяч PPSов, вопрос станет достаточно интересным.

ядерный модуль даёт профит в данном случае _только_ для трафика проходящего мимо машины -- потому-что обработка (в случае torrent-клиента) пакета будет происходить всё-равно в userspace и контекст всё равно будет меняться -- поэтому можно сделать вывод что при прочих равных обработка трафика на уровне ядра и через LD_PRELOAD будет занимать одинаковые ресурсы.

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

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

69. "Открыт код Douane, динамического межсетевого экрана для..."  +1 +/
Сообщение от arisu (ok), 28-Апр-14, 14:38 
потенциально мой вариант был даже быстрее, потому что общался по нормальному unix socket, а не через идиотский дбас.
Ответить | Правка | Наверх | Cообщить модератору

101. "Открыт код Douane, динамического межсетевого экрана для..."  +/
Сообщение от Аноним (-), 28-Апр-14, 16:38 
> это не про сей модуль, например он игнорирует фильтры всего акромя tcp/udp

А остальное можно вообще зарезать КЕМ на фаере без особых потерь. MS вон в приступах паранои RAW сокеты вообще в винде пристрелил совсем. Правда избавление от головной боли методом гильотины понравилось не всем и теперь продвинутый сетевой софт появляется больше под пингвинов и т.п, где raw сокеты можно.

> машины -- потому-что обработка (в случае torrent-клиента) пакета будет происходить
> всё-равно в userspace

Не понял. Где обработка в юзерспейсе будет? У обычного айпитаблеса+нетфильтра вроде все в ядре, юзермод пакет покинет когда прога его отправить захочет. После чего его возьмет в оборот ядро и там уже нетфильтр может что-то с ним сделать. Или не сделать.

> и контекст всё равно будет меняться --

В каком месте? Я не допираю.

> и через LD_PRELOAD будет занимать одинаковые ресурсы.

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

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

102. "Открыт код Douane, динамического межсетевого экрана для..."  +/
Сообщение от arisu (ok), 28-Апр-14, 16:39 
он говорил про сабж, а не про нормальные механизмы. ;-)
Ответить | Правка | Наверх | Cообщить модератору

131. "Открыт код Douane, динамического межсетевого экрана для..."  +/
Сообщение от pavel_simple (ok), 28-Апр-14, 18:24 
> Что-то у меня нет такой уверенности. Наиболее логичным и прямым видится иметь
> дело с пакетами в нетфильтре или где-то рядом.

294, вот смотри

есть два случая обработки прафика - два флоу

1. L2 + L3 + netfilter + этот модуль фильтрации -> (передача в юзерспэйс проге) c library socket syscall
2. L2 + L3 + netfilter + (передача в юзерспэйс проге) c library socket syscall + LD_PRELOAD

т.е длина обработки одинакова по шагам, контекст переклюается и в 1-ом и втором случае один раз.

при прочих равных -- имеется ввиду что код для обработки фильтрации один и тот-же , хотя на самом деле обработка на уровне userspace значительно проще -- плюс нет странных вызовов с целью получиnь fd->socket->pid->path

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

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

155. "Открыт код Douane, динамического межсетевого экрана для..."  +/
Сообщение от Аноним (-), 28-Апр-14, 21:59 
Автор pohmelfs в своё время что-то такое вертел. Можно в его проектах посмотреть.
Ответить | Правка | Наверх | Cообщить модератору

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

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




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

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