Posso limitar um usuário (e seus aplicativos) a uma interface de rede?

15

Como o título realmente. Na verdade, tenho dois cenários para aplicar isso:

  1. Área de trabalho multiterminal: duas conexões de rede com gateways da Internet e duas contas executando tarefas que consomem muita largura de banda em cada uma delas. Eu quero dividi-los para que uma conta use apenas eth0 e a segunda conta use apenas eth1.

  2. Servidor: tenho dois IPs em um servidor e quero ter certeza de que o usuário de email envia apenas emails do segundo IP (eth0: 1 alias)

O segundo provavelmente pode ser IPTabled (não sei como) para rotear o tráfego de e-mail através dessa interface, mas o primeiro será lidar com todos os tipos de tráfego, portanto, precisa ser baseado no usuário. Se houver uma solução baseada no usuário, posso aplicar isso em ambos os lugares.

    
por Oli 20.08.2010 / 13:50

3 respostas

5

Você vai querer usar o módulo iptables owner e talvez algumas combinações inteligentes de pacotes.

owner This module attempts to match various characteristics of the packet creator, for locally-generated packets. It is only valid in the OUTPUT chain, and even then some packets (such as ICMP ping responses) may have no owner, and hence never match.

--uid-owner userid Matches if the packet was created by a process with the given effective (numerical) user id.

--gid-owner groupid Matches if the packet was created by a process with the given effective (numerical) group id.

--pid-owner processid Matches if the packet was created by a process with the given process id.

--sid-owner sessionid Matches if the packet was created by a process in the given session group.

    
por 20.08.2010 / 17:03
7

Você pode configurar duas máquinas virtuais na máquina física e configurar a ponte de interface de rede para que uma VM use eth0 e a outra VM use eth1. Consulte a seção de documentação da caixa virtual sobre a criação de uma ponte de contatos .

    
por 20.08.2010 / 17:08
1

Não tenho certeza de que isso seja possível no primeiro ponto. Você quer fazer alguma manipulação de roteamento com base no userid do usuário. Na última vez que verifiquei, não vi essa possibilidade.

Para o segundo ponto, não é o iptables que você quer usar, mas o iproute2 (http://lartc.org/howto/ e link para o documento completo). É o substituto dos comandos ifconfig / route, pois são considerados obsoletos. iproute2 permite yo rotear pacotes de acordo com sua origem. Isso é o que você quer

    
por 20.08.2010 / 14:19