Solución 1:
La solución para mí resultó ser sencilla.
- Crear, validar nuevo grupo; agregue los usuarios requeridos a este grupo:
- Crear:
groupadd no-internet
- Validar:
grep no-internet /etc/group
- Añadir usuario:
useradd -g no-internet username
Nota:si está modificando un usuario ya existente, debe ejecutar:usermod -a -G no-internet userName
comprobar con:sudo groups userName
- Crear:
- Cree un guión en tu camino y hazlo ejecutable:
- Crear:
nano /home/username/.local/bin/no-internet
- Ejecutable:
chmod 755 /home/username/.local/bin/no-internet
- Contenido:
#!/bin/bash
sg no-internet "[email protected]"
- Crear:
- Agregar regla de iptables por abandonar la actividad de red para el grupo no-internet :<último>
iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP
Nota:no olvide hacer que los cambios sean permanentes, para que se apliquen automáticamente después de reiniciar. Hacerlo depende de su distribución de Linux.
4. Verifíquelo, por ejemplo en Firefox ejecutando:
no-internet "firefox"
En caso de que quiera hacer una excepción y permitir que un programa acceda a la red local :
iptables -A OUTPUT -m owner --gid-owner no-internet -d 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner no-internet -d 127.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP
NOTA: En caso de desove se mantendrán las reglas. Por ejemplo, si ejecuta un programa sin internet regla y ese programa abrirá la ventana del navegador, aún así se aplicarán las reglas.
Solución 2:
Una posibilidad más sencilla:usa firejail . Ejecuta la aplicación dentro de sandbox. En el sandbox, puede controlar el acceso de la aplicación a cualquier red o carpeta en su computadora.
Para ejecutar una determinada aplicación sin acceso a la red, haga lo siguiente:
firejail --net=none <application>
En ese caso, "La caja de arena parece una computadora sin interfaces de red". (Consulte la sección Red en la documentación)
Por ejemplo, firejail --net=none firefox
iniciará Firefox sin ninguna conexión de red.
Consulte la documentación de instalación. Debe instalar desde el sistema de paquetes en su distribución, o mejor obtener la última versión LTS. (Por ejemplo, esta última versión de LTS, 9.56.2
, también funciona en Ubuntu 16.04.)