Cómo bloquear el acceso a internet a ciertos programas en Linux

20

Recientemente, me he encontrado con un problema de limitar el acceso a Internet a programas específicos. ¿Alguien podría recomendar una buena manera de hacerlo, sin utilizar ningún software en particular?

Ilia Rostovtsev
fuente

Respuestas:

31

La solución para mí resultó ser sencilla.

  1. Crear, validar nuevo grupo ; agregue usuarios requeridos a este grupo:
    • Crear: groupadd no-internet
    • Validar: grep no-internet /etc/group
    • Agregar usuario: useradd -g no-internet username

      Nota: Si está modificando un usuario ya existente, debe ejecutarlo: usermod -a -G no-internet userName consulte con:sudo groups userName

  2. Cree un script en su ruta y hágalo ejecutable:
    • Crear: nano /home/username/.local/bin/no-internet
    • Ejecutable: chmod 755 /home/username/.local/bin/no-internet
    • Contenido: #!/bin/bash
                    sg no-internet "$@"

  3. Agregue la regla de iptables para eliminar la actividad de red para el grupo sin internet :


   4. Verifíquelo, por ejemplo en Firefox ejecutando:

  • no-internet "firefox"

En caso de que desee 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 regla de Internet y ese programa abrirá la ventana del navegador, aún se aplicarán las reglas.

Ilia Rostovtsev
fuente
2
Algunas notas Ilia: Anuncio 1: - para modificar el usuario existente: usermod -a -G groupName userName - verifique con: sudo groups userName Anuncio 3: - Ya tengo muchas reglas en iptables, la posición de la nueva regla es crucial . debería ser la primera regla en la cadena de SALIDA. Por lo tanto, utilizo insert: iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP Para permitir el acceso a LAN: asegúrese de que las reglas ACEPTAR estén por encima de la regla DENY. Funciona de maravilla. Úselo por ejemplo en Wifiguard. Prog comprueba wlan para dispositivos desconocidos, pero "llama a casa" en cada inicio.
El script solo pasará el comando. Si intenta iniciar un programa con parámetros, debe usar "$ @" en lugar de "$ 1". Por alguna razón, tuve que almacenarlo temporalmente en una variable para que bash lo procesara correctamente: cmd = "$ @"; sg sin internet "$ {cmd}"
solo el
use "nointernet" en lugar de "no-internet". Por alguna razón, Ubuntu 14.04 no puede manejar el guión cuando intenta usar sg o chgrp (solicita una contraseña, luego falla).
1
unshare -n YourAppToBlock> use "nointernet" en lugar de "no-internet". tal vez, 'no \\ - internet'?
SarK0Y
Lo intenté como se describe, pero para mí, después de agregarme a "no-internet" y configurar las tablas de ip ya no puedo conectarme a internet (con y sin el script bash no-internet).
Viatorus