как ограничить доступ в сеть для определенной проги?

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

Насколько я понял, iptables такое не умеет. Вообще желательно решение в стиле файрволлов для винды - выскакивает окошко где сообщается что прога Х ломится по адрессу У - запретить/пропустить. Наверное для линуксов такие подходы не практикуются? ))

На сколько я знаю, ничего

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

>>У меня есть прога, и мне не

>>У меня есть прога, и мне не надо чтобы она имела доступ к определенным сетевым адресам

Собсно айпитейблс.
1) оно работае на уровне tcp/ip пакета. А в пакете не писано что за прога и какой юзер все это сформировало. Потому уж ежели рубит - то рубит для всех.
2) Ограничения типа "можно все кроме" работают не ахти. Бо интернет относительно бесконечен.

ЗЫ
Похоже на попытку злобного хака пропиетарного софта чтоб хозяевам не фискалил.

>> Собсно айпитейблс.

>> Собсно айпитейблс.
Господин модератор, Вы на каком языке пишите?

«пишете» (-;Е

«пишете» (-;Е

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

мне не на внешние адреса

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

странно вообще то что в линуксе нет таких реализаций. файрволл все же.

Quote:странно вообще то что в

Цитата:
странно вообще то что в линуксе нет таких реализаций. файрволл все же.

Ни одни внешний к системе файрволтакое делать никогда не сможет. Поэтому на серверных ОС такие фишки обычно и не нужны.

>>мне не на внешние адреса

>>мне не на внешние адреса надо, а в пределах локалки..

Тогда проще. Во-первых на хосте с которого клиент ломится по адресам/портам скорей всего должно быть ограничение, иначе это уж совсем уныло. Тогда она просто не будет ломиться куда ни попадя. Во-вторых на серверах где порт открыт - запрет прохождения пакетов на определенный порт со всех адресов кроме явно перечисленных. Можно настройкой сервера (почти все умеют не принимать пакеты с указанных адресов), можно через айпитейблс ( на вики статеек полно как это замутить). Обращать внимание на наличие в вики /etc/init.d/iptables start/stop/save (сейчас под гентой этот способ инициализации наиболее идеологически верен)

ЗЫ
>>на каком языке...
пешу на СИ,асме,пхп,перле и "олбанском" лехко ;)
Уровень "олбанского" соответсвует уровню телепатических возможностей, ожидаемых вопрошающим.

iptbales это умеет

wi написал(а):
Собсно айпитейблс.
1) оно работае на уровне tcp/ip пакета. А в пакете не писано что за прога и какой юзер все это сформировало. Потому уж ежели рубит - то рубит для всех.

Плохо Вы понимаете работу iptables, это кое-что покруче простого фильтра заголовков ip.

Почитайте man iptables на предмет --uid-owner, --gid-owner. Собственно говоря, это и есть ответ на искомый вопрос: заведите программе отдельного пользователя и блокируйте его.

Per aspera ad astra!

>>>Плохо Вы понимаете работу

>>>Плохо Вы понимаете работу iptables, это кое-что покруче простого фильтра заголовков ip.

С айпитейблс действительно работал мало, ибо прячусь за циской. Только сути это не меняет.

Еще раз об уровнях OSI. ip не требует наличия в в пакете инфы о пользователе/приложении. Потому резка по пользователю/приложению возможно только тогда, когда пакет сформирован локально ядром. Как будет это работать если пакет из локалки? Да и на хосте виртуалкой обходится на раз. Плюс многое от протокола приложения зависит. Потому там где анализируются/изменяются не заголовки айпи (другими словами как гейтвей уровня приложения) использование айпитейблс весьма сомнительное удовольствие.

прочитайте первый пост, пожалуйста

wi написал(а):
Еще раз об уровнях OSI. ip не требует наличия в в пакете инфы о пользователе/приложении. Потому резка по пользователю/приложению возможно только тогда, когда пакет сформирован локально ядром. Как будет это работать если пакет из локалки? Да и на хосте виртуалкой обходится на раз. Плюс многое от протокола приложения зависит. Потому там где анализируются/изменяются не заголовки айпи (другими словами как гейтвей уровня приложения) использование айпитейблс весьма сомнительное удовольствие.

Речь изначально шла именно о локальной машине. Естественно, что uid/gid и т.п. в заголовках IP не передаётся.

Per aspera ad astra!

iptables такое умеет, только

iptables такое умеет, только для локальной машины, естественно. Хотя возможно требуется наложить какой-то дополнительный патч на ядро. Просто есть свои тонкости, например исполняемая программа может даже не существовать на диске. И есть у меня подозрение, что command name может быть как разная у одинаковых процессов, так и одинаковая у разных.

Цитата:
owner
This module attempts to match various characteristics of the packet creator, for locally-generated packets. It is only valid in the
OUTPUT chain, and even this some packets (such as ICMP ping responses) may have no owner, and hence never match.

--uid-owner userid
Matches if the packet was created by a process with the given effective user id.

--gid-owner groupid
Matches if the packet was created by a process with the given effective group id.

--pid-owner processid
Matches if the packet was created by a process with the given process id.

--sid-owner sessionid
Matches if the packet was created by a process in the given session group.

--cmd-owner name
Matches if the packet was created by a process with the given command name. (this option is present only if iptables was
compiled under a kernel supporting this feature)

NOTE: pid, sid and command matching are broken on SMP

P.S. А для чего возникла такая надобность? У меня все решается тем, что что и как работает я знаю. Ни одна программа не полезет в интернет, если я её на то прямо не укажу.

верно, как минимум,

верно, как минимум, достаточно создать отдельного пользователя для этой проги и написать правила с модулем owner

:)

попробуй раскурить вот это -

попробуй раскурить вот это - net-firewall/nufw на сайте разраба утверждается, что позаоляет управлять доступом не только на уровне ip/юзеров, но и приложений.

P.S.: Linux - это красная таблетка :-) Windows - синяя...

На русскоязычной Gentoo Linux

На русскоязычной Gentoo Linux Wiki была статья "Настройка iptables для начинающих".
Из нее:

Может сложиться впечатление, что возможностей у iptables маловато.
Однако с использованием модулей iptables получит просто безграничные возможности.
Для указания модуля используется опция -m. Например: iptables -A INPUT -m модуль bla-bla 

-m owner 
Добавляет следующие опции (опции только для цепочки OUTPUT): 

--uid-owner UID - UID программы пославшей пакет. 
--gid-owner GID - GID прораммы пославшей пакет. 
--pid-owner PID - PID программы пославшей пакет. 
--sid-owner SID - SID (идентификатор сессии) производится проверка SID пакета, значение SID наследуются дочерними процессами от "родителя". 
--cmd-owner NAME - имя программы пославшей пакет. 

так что возможно этим можно "--cmd-owner NAME"

Спасибо всем ответившим.

Спасибо всем ответившим. Костыль получился, все работает если прогу запускать от юзверя.

Гуи

Как вариант - net-firewall/guarddog - гуи оболочка, может поможет в конфигурировании...

сапсибо. я правда уже в

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

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".