Existe uma maneira de impedir que certos programas se conectem à Internet no Debian (um firewall bloqueando conexões de saída), por exemplo, para impedir que um programa do Windows em execução no Wine possa ligar para casa?
Responder1
Você poderia usarContêineres Linuxpara criar um ambiente sem interfaces de rede. Por exemplo, se eu criar um arquivo de configuração como este:
# lxc.network.type = empty
E então inicie um shell assim:
# lxc-execute --name bash -f /tmp/lxc.conf /bin/bash
Descobrirei que dentro deste shell não há dispositivos de rede disponíveis além de 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)
Observe que você deve ser root para executar o lxc-execute
, portanto, fazer com que isso funcione wine
em seu ambiente de área de trabalho pode ser complicado.
Aparentemente, também existe um sandbox
comando disponível como parte do SELinux. Aqui estáum exemplo usando sandbox para executar o Firefox. Isso requer que você tenha o selinux habilitado.
Responder2
Uma das maneiras mais fáceis seria executar o programa WINE como um usuário diferente e configurar o netfilter para descartar pacotes desse usuário.
Por exemplo, onde "wineusername" é o seu usuário Wine e em1 é a sua interface de rede:
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