Запрет программе использовать интернет

Запрет программе использовать интернет

Есть ли способ заблокировать определенным программам возможность подключения к Интернету в Debian (брандмауэр блокирует исходящие соединения), например, заблокировать возможность Windows-программе, работающей в Wine, звонить домой?

решение1

Вы могли бы использоватьLinux-контейнерыдля создания среды без сетевых интерфейсов. Например, если я создам такой файл конфигурации:

# lxc.network.type = empty

А затем запустите оболочку следующим образом:

# lxc-execute --name bash -f /tmp/lxc.conf /bin/bash

Я обнаружу, что внутри этой оболочки нет доступных сетевых устройств, кроме lo:

# ifconfig -a
lo        Link encap:Local Loopback  
          LOOPBACK  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Обратите внимание, что для запуска вам потребуются права root lxc-execute, поэтому заставить его работать wineв вашей среде рабочего стола может быть сложно.

Также, по-видимому, есть sandboxкоманда, доступная как часть SELinux. Вотпример использования песочницы для запуска Firefox. Для этого необходимо включить selinux.

решение2

Один из самых простых способов — запустить программу WINE от имени другого пользователя и настроить netfilter на отбрасывание пакетов от этого пользователя.

Например, где «wineusername» — ваш пользователь Wine, а em1 — ваш сетевой интерфейс:

iptables -A OUTPUT -o em1 -m owner --uid-owner wineusername -j DROP
iptables -A FORWARD -o em1 -m owner --uid-owner wineusername -j DROP
iptables -A INPUT -o em1 -m owner --uid-owner wineusername -j DROP

Связанный контент