¿Puedo limitar un usuario (y sus aplicaciones) a una interfaz de red?

15

De hecho, tengo dos escenarios para aplicar esto:

  1. Escritorio de múltiples asientos: dos conexiones de red con puertas de enlace de Internet y dos cuentas que realizan tareas intensivas de ancho de banda en cada una. Quiero dividirlos para que una cuenta solo use eth0 y la segunda cuenta solo eth1.

  2. Servidor: tengo dos direcciones IP en un servidor y quiero asegurarme de que el usuario de correo solo envíe correos electrónicos desde la segunda IP (alias eth0: 1)

El segundo probablemente puede ser IPTabled (simplemente no sé cómo) para enrutar el tráfico de correo electrónico a través de esa interfaz, pero el primero se ocupará de todo tipo de tráfico, por lo que debe estar basado en el usuario. Si hay una solución basada en el usuario, podría aplicarla en ambos lugares.

Oli
fuente

Respuestas:

6

Querrá usar el módulo propietario de iptables y tal vez una inteligente manipulación de paquetes.

propietario Este módulo intenta hacer coincidir varias características del creador de paquetes, para paquetes generados localmente. Solo es válido en la cadena de SALIDA, e incluso entonces algunos paquetes (como las respuestas de ping ICMP) pueden no tener propietario y, por lo tanto, nunca coinciden.

--uid-owner userid Coincide si el paquete fue creado por un proceso con la identificación de usuario efectiva (numérica) dada.

--gid-owner groupid Coincide si el paquete fue creado por un proceso con la identificación de grupo efectiva (numérica) dada.

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

--sid-owner sessionid Coincide si el paquete fue creado por un proceso en el grupo de sesión dado.

Li Lo
fuente
Puede usar iptables para establecer la marca, que luego puede usar en la tabla de enrutamiento. Vea los objetivos MARK y CONNMARK. En iproute, su continuación, 'Agregar regla IP fwmark X ...' No me sorprendería, en realidad, si iproute2 el único que puede hacer esto ...
Derobert
3
Al ser alguien que ha realizado un trabajo extenso con la coincidencia del propietario, puedo decir que esto no siempre producirá el resultado deseado. Es decir, no todos los paquetes tienen un propietario como usted espera. ICMP y ESP son tipos que son propiedad del núcleo (o raíz) independientemente de la aplicación de origen y no serán compatibles -m owner. Es bastante confiable con TCP y UDP, pero otros tipos no son tan confiables. La única forma confiable de lograr este 100% es con máquinas virtuales o contenedores.
bahamat
1

No estoy seguro de que sea posible para el primer punto. Desea hacer una manipulación de enrutamiento basada en el ID de usuario del usuario. La última vez que revisé no vi esta posibilidad.

Para el segundo punto, no es iptables lo que desea usar, sino iproute2 (http://lartc.org/howto/ y http://www.policyrouting.org/iproute2.doc.html para el documento completo). Es el reemplazo de los comandos ifconfig / route ya que se consideran obsoletos. iproute2 le permite enrutar paquetes de acuerdo con su fuente. Eso es lo que quieres

Luc Stepniewski
fuente