Есть ли способ заблокировать определенным программам возможность подключения к Интернету в 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