Подскажите простой способ блокирования доступа к интернет программе

Создать пользователя, которому запретить доступ к сети и запускать программу от этого пользователя.
naszar
Интересно, как они это делают..
Через iptables насколько я понимаю.
The Uncomplicated Firewall (ufw) is a frontend for iptables and is particularly well-suited for host-based firewalls.
https://wiki.ubuntu.com/UncomplicatedFirewall
antiron
боюсь нечего показывать,вот это очень понравилось.но я боюсь для арча не подойдет

Скрипты подойдут, а вот прикручивать их нужно иначе.
Medar
Создать пользователя, которому запретить доступ к сети и запускать программу от этого пользователя.
Можно (так сделано в андроиде, к примеру – каждое приложение работает от отдельного UID), но уж больно неудобно запускать под левым юзером – надо что-то делать с домашним каталогом, с доступом к файлам, в том числе к сокету иксов.

Проще создать только группу, и запускать через sudo под тем же пользователем (и с тем же домашний каталогом, что удобно), но с левым GID. А вот по этой группе резать исходящие пакеты в iptables с помощью --owner-gid
tchgefest
А если она будет хранится в зашифрованном виде на сервере?
Подумав, пришел к мнению, способ, предложенный tchgefest все-таки самый надежный и можно спать спокойно, даже на локальном компе.
Можно выбрать заоблачный сервер, а файл поместить в контейнер TrueCrypt - для надежности пароль не менее 12 символов и не менее 3 уровней набора символов.
Ошибки не исчезают с опытом - они просто умнеют
antiron
вот это очень понравилось
Проще чем с фильтрацией по пользователю, но учтите, что вы должны доверять процессу. Ибо ему ничего не стоит поменять свой GID на любую группу в которой состоит пользователь и которую не режет iptables.
naszar
ничего не стоит поменять свой GID на любую группу в которой состоит пользователь и которую не режет iptables
Верно. Но чтобы программа меняла свой GID, это должно быть с какой-то далеко идущей целью предусмотрено заранее авторами.
блокировать интернет?
отключите кабель :)
еще варианты:уберите днс сервера из resolv.conf.
пропустите трафик через прокси с включенной записью логов.

вроде можно сделать песочницу средствами cgroups. все потомки запущенного процесса находятся в той же группе что и сам процесс. А потом надо глянуть ман iptables на предмет того как указать cgroup
пример на русском http://habrahabr.ru/post/122425/
Да пребудет с вами знание ip адреса
Medar
Создать пользователя, которому запретить доступ к сети и запускать программу от этого пользователя.

naszar
Проще чем с фильтрацией по пользователю, но учтите, что вы должны доверять процессу. Ибо ему ничего не стоит поменять свой GID на любую группу в которой состоит пользователь и которую не режет iptables.
все понял и решил не мучаться и создать пользователя:
sudo useradd noinet
sudo iptables -A OUTPUT -p tcp -m owner --uid-owner noinet -j DROP
sudo -u noinet ping google.ru
,но
[[email protected] ~]$ sudo -u noinet ping google.ru
PING google.ru (85.172.1.35) 56(84) bytes of data.
64 bytes from 85.172.1.35: icmp_seq=1 ttl=59 time=41.5 ms
64 bytes from 85.172.1.35: icmp_seq=2 ttl=59 time=40.7 ms
64 bytes from 85.172.1.35: icmp_seq=3 ttl=59 time=36.7 ms
64 bytes from 85.172.1.35: icmp_seq=4 ttl=59 time=47.4 ms
ЧЯДНТ?
Non progredi - est regredi
antiron
ЧЯДНТ?
С пингом такой фокус не канает, ибо у него стоит capability. Он вообще с сетью вытворят то, что дано только руту:
$getcap /usr/bin/ping
/usr/bin/ping = cap_net_raw+ep
Потренируйтесь на кошках (firefox например).
P.S. Только что проверил, с огнелисом работает(в смысле блочит)
P.P.S. Интересно, как эти capability устроены, что позволяют обойти netfilter... uid у пинга таки от пользователя..
 
Зарегистрироваться или войдите чтобы оставить сообщение.