¿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 wine
en su entorno de escritorio puede ser complicado.
Aparentemente también hay un sandbox
comando 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