bloquear el acceso a la red para un programa en particular (navegador)

0

Tengo un script de Python que usa pywebkitgtk para buscar páginas web, y algunas veces necesito bloquear el acceso a la red. ¿Alguna idea de cómo hacer eso?

scythargon
fuente

Respuestas:

1

Si usted es el administrador del sistema, puede usar iptables(como root) para bloquear el acceso de ciertos comandos a ciertos puertos, o (a su elección) todos los puertos (lo que equivale a que sea totalmente incapaz de acceder a la red).

Una buena referencia está aquí, pero el punto más destacado es:

Si su núcleo se compiló con CONFIG_IP_NF_MATCH_OWNER, entonces puede configurar su firewall de iptables para permitir o rechazar paquetes por orden.

El siguiente ejemplo muestra cómo descartar todos los paquetes salientes del comando acroread:

iptables -A OUTPUT -m owner --cmd-owner acroread -j DROP

El módulo propietario permite que se usen varias opciones diferentes para hacer coincidir, ya sea que coincida con una ID de proceso, una ID de usuario o un nombre de comando.

--uid-owner userid
Coincide si el paquete fue creado por un proceso con la identificación de usuario efectiva dada

--gid-owner userid
Coincide si el paquete fue creado por un proceso con la identificación de grupo efectiva dada

--pid-id processid
Coincide si el paquete fue creado por un proceso con la identificación de proceso dada

--cmd-owner name
Coincide si el paquete fue creado por un proceso con el nombre de comando dado.

El módulo "propietario" solo permite coincidencias en la cadena de SALIDA, lo que reduce un poco su utilidad, pero si se encuentra en una situación NAT estándar, debería ser suficiente.

allquixotic
fuente
Muchas gracias, espero que ayude, necesito recompilar mi kernel para verificarlo ... Hay una cosa que no estoy seguro: ¿ iptablesfuncionaría la magia sin reiniciar el proceso de mi programa?
scythargon
o_O 3.2.28 no tiene esa clave ...
scythargon
Creo que si tiene esto habilitado, tendrá efecto en los procesos en ejecución sin reiniciarlos.
allquixotic
mira esto - superuser.com/questions/465235/… - esta clave existe solo en núcleos antiguos (2.6.0 - 2.6.24) ...
scythargon
Probablemente estaba envuelto en otra clave o habilitado por defecto. ¿Puede obtener la funcionalidad anterior para trabajar iptablescon su núcleo existente?
allquixotic