Impedindo que o programa usasse a internet

5

Existe uma maneira de bloquear certos programas de serem capazes de se conectar à internet no Debian (um firewall bloqueando conexões de saída), por exemplo, para impedir que um programa do Windows rodando no wine possa chamar de casa?

    
por Gilles 26.03.2012 / 20:00

2 respostas

5

Você pode usar contêineres Linux para criar um ambiente sem interfaces de rede. Por exemplo, se eu criar um arquivo de configuração como este:

# lxc.network.type = empty

Em seguida, inicie um shell como este:

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

Eu vou descobrir 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 lxc-execute , portanto, fazer com que isso funcione para wine em seu ambiente de área de trabalho pode ser complicado.

Existe também aparentemente um comando sandbox disponível como parte do SELinux. Aqui está um um exemplo usando o sandbox para executar o Firefox . Isso requer que você tenha o selinux ativado.

    
por 26.03.2012 / 21:41
3

Uma das maneiras mais fáceis seria executar o programa WINE como um usuário diferente e configurar o netfilter para eliminar pacotes daquele usuário.

Por exemplo, onde "wineusername" é seu usuário do Wine e em1 é 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
    
por 27.03.2012 / 02:42