Rede de Linux “cadeia” para um único processo

3

Eu preciso ajustar um aplicativo de rede para coisas específicas da rede, como:

  • faz com que use um servidor DNS diferente do padrão de /etc/resolv.conf
  • verifique se ele não tenta se conectar a determinados hosts / portas usando conexões tcp / udp

Eu sei que posso me safar com apenas modificar o /etc/resolv.conf e escrever algumas regras do iptables, mas usar uma política de firewall DENY padrão para pacotes IP de saída pode provocar mau funcionamento em outros serviços em execução no servidor.

Eu sei que posso configurar uma máquina virtual com um sistema operacional inteiro e rodar meu aplicativo lá, mas parece um pouco exagerado.

É possível ter um "jail" de rede para um único aplicativo (pense em um único processo Linux) que poderia aceitar regras do tipo iptables para tráfego de rede permitido (em termos de pacotes IP e acima) permitido para e deste aplicativo específico ? Talvez isso seja possível através de alguma biblioteca carregada dinamicamente que possa lidar com a camada de rede, da mesma maneira que o tsocks, mas com uma granulação mais fina?

    
por halp 17.06.2010 / 15:07

2 respostas

1

Tente usar um contêiner OpenVZ . Ele fornece melhor isolamento do que um chroot, mas com muito menos sobrecarga do que uma máquina virtual. O contêiner pode ter seu próprio sistema de arquivos, usuários, endereços IP e regras de iptables. A sobrecarga é mínima porque o contêiner não executa seu próprio kernel.

    
por 18.06.2010 / 05:16
1

Se você pode executar o aplicativo como um usuário específico, você pode escrever algumas regras iptables com o

--uid-owner <user>

sinalizar para corresponder a esse usuário específico.

    
por 17.06.2010 / 15:57