Evitar que el programa use Internet

Evitar que el programa use Internet

¿Hay alguna manera de bloquear ciertos programas para que no puedan conectarse a Internet en Debian (un firewall que bloquea las conexiones salientes), así, por ejemplo, bloquear un programa de Windows que se ejecuta en Wine para que no pueda llamar a casa?

Respuesta1

Podrías usarContenedores de Linuxpara crear un entorno sin interfaces de red. Por ejemplo, si creo un archivo de configuración como este:

# lxc.network.type = empty

Y luego inicia un shell como este:

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

Encontraré que dentro de este shell no hay ningún dispositivo de red disponible aparte 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)

Tenga en cuenta que debe ser root para poder ejecutar lxc-execute, por lo que lograr que esto funcione wineen su entorno de escritorio puede ser complicado.

Aparentemente también hay un sandboxcomando disponible como parte de SELinux. Aquí estáun ejemplo usando sandbox para ejecutar Firefox. Esto requiere que tengas habilitado Selinux.

Respuesta2

Una de las formas más sencillas sería ejecutar el programa WINE como un usuario diferente y configurar netfilter para descartar paquetes de ese usuario.

Por ejemplo, donde "wineusername" es su usuario de Wine y em1 es su interfaz de red:

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

información relacionada