Bloque de aplicación específica con iptables

Tengo que endurecer un escritorio Linux como una tarea en mi universidad. Pero me quedé atrapado en un problema específico: tengo que controlar el tráfico saliente con iptables.

Debería ser posible evitar que una aplicación específica (como LibreOffice) acceda a Internet. Mi profesor dijo "busca la opción 'combinar'". Pero no puedo entender cómo hacerlo. Pensé en establecer una regla que elimine todos los packages de una identificación de grupo específica con la opción -m owner --owner-gid . Pero, ¿cómo puedo configurar mis aplicaciones para que se ejecuten bajo este grupo en particular? ¿O es esta la manera incorrecta de hacerlo?

El sistema operativo es Debian 7.

module propietario

Eche un vistazo a esta URL titulada: Iptables Tutorial 1.2.2 . Esta página enumera varias de las técnicas de coincidencia que uno puede hacer utilizando la información del propietario sobre un process.

La extensión de coincidencia del propietario se utiliza para unir packages en function de la identidad del process que los creó. El propietario puede especificarse como el ID del process del usuario que emitió el command en cuestión, el del grupo, el process, la session o la del command mismo. Esta extensión se escribió originalmente como un ejemplo de para qué se podría usar iptables. El emparejamiento propietario solo funciona dentro de la cadena OUTPUT, por razones obvias: es casi imposible encontrar información sobre la identidad de la instancia que envió un package desde el otro extremo, o donde hay un salto intermedio al destino real . Incluso dentro de la cadena OUTPUT no es muy confiable, ya que ciertos packages pueden no tener un propietario. Los packages notorios de ese tipo son (entre otras cosas) las diferentes respuestas ICMP. Las respuestas ICMP nunca coincidirán.

  1. Match –uid-owner

     $ iptables -A OUTPUT -m owner --uid-owner 500 
  2. Match –gid-owner

     $ iptables -A OUTPUT -m owner --gid-owner 0 

Advertencia

La documentation que menciono está muy desactualizada, pero de hecho todavía se hace reference en el website oficial de netfilter.org: http://www.netfilter.org/documentation/ .

Consultar los documentos incorporados

Así que aprovecho esta oportunidad para enseñarte otra habilidad que te llevará a lo largo y ancho a medida que continúas usando Linux / Unix y el software de código abierto para el caso. Consulte las páginas de uso y / o man, ya que es probable que sean la información más actualizada que encontrará al tratar con varias herramientas.

Ejemplo

El module con el que estamos tratando dentro de iptables se llama propietario. Por lo tanto, podemos consultar una extensa guía de uso de esta manera:

 $ iptables -m owner --help 

Si lo hace, revelará que estas son las opciones compatibles de coincidencia del propietario:

 owner match options: [!] --uid-owner userid[-userid] Match local UID [!] --gid-owner groupid[-groupid] Match local GID [!] --socket-exists Match if socket exists 

NOTA: Puede verificar la versión que tiene así:

 $ iptables --version iptables v1.4.18 

Le recomiendo que lea esta guía de uso para get más información sobre cómo usar la herramienta y también para comprender cómo usar la herramienta.

El nombre de usuario (uid) o el nombre del grupo (gid) no ayudarán porque estos son los ID del usuario que ejecuta la aplicación. Por lo tanto, se aplicaría a todas las aplicaciones de ese usuario en particular y no solo a una sola, como LibreOffice.

El locking de una aplicación específica generalmente se realiza bloqueando todos los puertos que usa la aplicación. Pero esto solo funciona si el usuario no puede cambiar los puertos que usará la aplicación.