Bloqueia todo o tráfego de saída para um usuário que executa aplicativos do Wine

4

Bom dia,

Estou usando muitos aplicativos WINE no Linux que funcionam muito bem, mas uma coisa que estou procurando agora é bloquear o acesso deles à Internet (saída), com exceção de muito poucas aplicações de vinhos.

Descobri que posso criar um novo usuário no sistema e negar todo o tráfego de saída para a interface ethernet com o Iptables e depois usar esse usuário sempre que eu quiser executar aplicativos WINE que eu quero bloquear. Assim:

iptables -I OUTPUT -o ethX -m owner --uid-owner UserB -j DROP

No entanto, para o propósito deste exemplo, digamos que eu queira ter um aplicativo WINE que se conecte à Internet ... para simplificar, vamos usar o Firefox no WINE (como exemplo).

Então, eu usarei o UserA que tem internet para rodar o Firefox no WINE, e o UserB para rodar todos os outros aplicativos WINE e bloqueá-lo.

Isso é bom, mas eu vi algumas pessoas afirmarem que isso pode ser contornado de algumas maneiras. Eu não estou preocupado com os aplicativos que estão "cientes do Linux" ou com malwares avançados como esses, já que eles são aplicativos do Windows e eu vou correr esse risco que eles não vão tentar dar a volta no quarteirão, e eu definitivamente não quero uma prisão chroot, isso é demais & complicado para mim por algo tão básico.

Minha pergunta é: o WINE permite que os aplicativos enviem tráfego sozinhos? Como o WINE trabalha exatamente em redes? Porque se o aplicativo enviar por si só, os pacotes terão UserB uuid e serão descartados facilmente. Mas se o aplicativo usa algo como ... wineserver ou algum outro daemon para se comunicar, e então o daemon envia o tráfego real da rede ... isso falharia obviamente, porque o pacote não teria o UserUuid.

Como posso ter certeza? A maioria dos aplicativos que eu quero bloquear são aplicativos que eu não "confio" por si só, mesmo que eles enviem dados triviais por aí, sou apenas paranóico. Eles estão em silêncio sobre isso, obviamente, então eu não posso monitorar isso facilmente para o meu conhecimento. Então, se há uma maneira de monitorar isso e ver se funciona (ou uma simples confirmação de alguém que saiba), isso seria ótimo.

Alguém sabe como o WINE faz isso? Ou se houver mais alguma coisa que eu deva fazer para bloquear todos os aplicativos WINE no UserB de ter qualquer acesso de saída. Ou está apenas bloqueando todos os pacotes UserB suficientes?

Muito obrigado!

ATUALIZAÇÃO:

Parece que "wineserver" é separado para cada WINEPREFIX, então, para aqueles que sabem o que é isso, acredito que apenas criando um WINEPREFIX diferente para cada um dos dois usuários, um com internet e o outro sem, todos os problemas deve ser resolvido.

Eu não tenho 100% de certeza se ele bloqueia alguma maneira de escapar, mas deve ser suficiente, já que a maioria dos aplicativos do Windows nem sabe que eles são executados no Liunx, então como eles podem sair disso? A menos que sejam alguns malwares muito grandes e ruins.

Cada WINEPREFIX tem uma instalação de janelas simulada diferente, então eu acho mais fácil vinculá-los simbolicamente a um diretório comum onde todos os aplicativos são, torna-se mais fácil sem ter que se preocupar com esses 2 WINEPREFIX separados.

E faça um script de shell para iniciar os aplicativos em cada usuário. por exemplo, um para o acesso à internet e outro sem.

Se alguém tiver mais ideias incríveis sobre como isso pode ser melhorado, compartilhe. Por enquanto eu diria que estou bastante satisfeito.

    
por kktsuri 26.06.2014 / 14:48

1 resposta

0

Dependendo de qual versão do kernel você está executando em sua caixa, você pode tirar proveito dos namespaces da rede. Para iniciar um processo com seu próprio namespace de rede vazio, use a ferramenta unshare , por exemplo. unshare -n wine

    
por 28.04.2016 / 17:58