LINUX.ORG.RU

изолировать программу от сети?


1

2

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

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

★★★★★

Ответ на: комментарий от anonymous

вариант не годится,

от отдельного пользователя - это гарантия того что оно не напортит файлы

iptables - банить destination? оно на разные хосты тыкается, мне кажется полностью запретить сеть для конкретного приложения будет идеальным вариантом.

Sylvia ★★★★★
() автор топика

Другой вариант — перехватывать вызовы с помощью LD_PRELOAD.
Например написать такую библиотеку:

#define _GNU_SOURCE
#include <dlfcn.h>
#include <sys/socket.h>

static int (*real_socket)(int domain, int type, int protocol) = 0;
int socket(int domain, int type, int protocol)
{
        if(!real_socket) real_socket = dlsym(RTLD_NEXT, "socket");
        if(domain == AF_INET) return -1;
        return real_socket(domain, type, protocol);
}

gcc -fPIC -shared -Wl,-soname,nonet.so -o nonet.so nonet.c

Ну и дальше LD_PRELOAD=nonet.so programm_name

Deleted
()
Ответ на: комментарий от Deleted

вот об этом как раз и думала, наверное проще чем фильтровать через iptables по owner-uid, хотя и тот вариант хорошо для completely untrusted программ (тоже спасибо)

спасибо, самый простой вариант ))

Sylvia ★★★★★
() автор топика

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

>программа для wine

над qip-ом издеваемся?

lazyklimm ★★★★★
()

А Arch все до безобразия просто. Создается пользователь, НЕ включается в группу net и вперед...

//armlows

anonymous
()
Ответ на: комментарий от ovax

> Ничего Вы не поняли. От другого пользователя, чтобы потом по --owner-uid в иптаблесе зарубить.

+1

soomrack ★★★★★
()
Ответ на: комментарий от lazyklimm

Spore )

по сети пытается лазить

Sylvia ★★★★★
() автор топика
Ответ на: комментарий от HighwayStar

apparmor сейчас исключают отовсюду, можно конечно как вариант использовать selinux, но путь всё ж таки получится не совсем простой, а разбираться пока лениво )

И не совсем понятно что именно блокировать в случае WINE

Sylvia ★★★★★
() автор топика
Ответ на: комментарий от Sylvia

Если не ошибаюсь, то Spore не запустится, если не получит от своего сервера активацию. Надо или купить, или взломать. После покупки необходимость блокировки исчезнет, а после взлома оно само не будет пытаться лезть в сеть.

RommeDeSerieux
()
Ответ на: комментарий от RommeDeSerieux

А для wine LD_PRELOAD работает? Я когда-то подсовывал ему библиотечку одну, и он не мог её подгрузить...

anonymous
()
Ответ на: комментарий от Deleted

Библиотечка скомпилировалась, но:

LD_PRELOAD=nonet.so telnet www.ru 80 ERROR: ld.so: object 'nonet.so' from LD_PRELOAD cannot be preloaded: ignored.

anonymous
()
Ответ на: комментарий от anonymous

:~/ooo-build/build/ooo300-m9/basic/util$ LD_PRELOAD=/etc/nonet.so telnet microsoft.com 80 -NONET--NONET--NONET--NONET-telnet: could not resolve microsoft.com/80: Name or service not known :~/ooo-build/build/ooo300-m9/basic/util$

у меня все работает, причем на каждую попытку получения сокета выдало -NONET-

(Debian)

Sylvia ★★★★★
() автор топика
Ответ на: комментарий от Sylvia

Всё, вкурил. Заработало только когда указал полный путь к библиотеке.

anonymous
()
Ответ на: комментарий от Sylvia

> у меня все работает, причем на каждую попытку получения сокета выдало -NONET-

а у меня просто тупо отрубает :

[denis@phobos][~/Dev/nonet]$> LD_PRELOAD=/home/denis/Dev/nonet/nonet.so telnet 192.168.1.1 80
Trying 192.168.1.1...
[denis@phobos][~/Dev/nonet]$> LD_PRELOAD=/home/denis/Dev/nonet/nonet.so telnet google.com 80
telnet: google.com: Temporary failure in name resolution
google.com: Host name lookup failure

opensuse 11.0

isden ★★★★★
()
Ответ на: комментарий от isden

я fprintf(stderr

добавила в код Chaoser ) буду хотя бы считать попытки коннекта, хотя неплохо бы видеть куда оно тыкается, но это уже надо не socket() перехватывать, AF_INET , SOCK_STREAM, tcp в данном случае не информативно

Sylvia ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.