Como controlar o acesso à Internet para cada programa?

47

Eu gostaria de usar um software para controlar qual programa pode se conectar à Internet. Eu sei que esse comportamento está associado à palavra "firewall", mas alguns usuários do Linux ficam muito chateados se alguém exige um Personal Firewall. Eu não quero aborrecê-lo por exigir tal programa.
Eu não quero "proteger portas" ou outras coisas que o Personal Firewall promete no Windows. Eu olhei para iptables , mas isso não se encaixa nos meus requisitos.

Eu vi uma excelente resposta aqui ( "Como bloquear o acesso à internet para aplicações de vinho "), mas é muito desconfortável configurar isso.

Existe um software que pede para cada programa se ele pode acessar a internet?

    
por guerda 25.05.2011 / 11:30

11 respostas

6

Existe um script Perl no fórum alemão do Ubuntu ( traduzido para o inglês para o inglês ) que parece fazer isso. Eu nunca tentei e não dei uma olhada no roteiro, mas talvez funcione para você. A descrição é em alemão somente, então você pode precisar de um serviço de tradução (como o Google Translate; veja acima).

    
por Florian Diesch 25.05.2011 / 13:02
29

Caso você ainda esteja procurando por esse tipo de aplicativo, atualmente estou desenvolvendo exatamente esse aplicativo:

    
por ZedTuX 08.08.2013 / 19:56
18

Eu encontrei uma solução conveniente que resolve o problema. Você cria um grupo que nunca tem permissão para usar a Internet e iniciar o programa como um membro desse grupo.

  1. Crie um grupo no-internet . Não faça não entrar neste grupo.
  2. Adicione uma regra iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP às tabelas ip que impeça que todos os processos pertencentes ao grupo no-internet usem a rede.
  3. Execute sudo -g no-internet YOURCOMMAND em vez de YOURCOMMAND .

Você pode facilmente escrever um script wrapper que use o sudo para você. Você pode se livrar do prompt de senha, adicionando

%sudo     ALL=(:no-internet)      NOPASSWD: ALL

ou algo semelhante ao seu /etc/sudoers .

    
por Tim 19.02.2014 / 13:17
4

Já existe um firewall no Ubuntu, ufw, mas está desabilitado por padrão. Você pode ativá-lo e usá-lo pela linha de comando:

link

Ou você pode usar um programa com uma interface gráfica sobre ele, gufw, que é instalável diretamente do Ubuntu Software Center:

link

Se você precisar bloquear o acesso à internet para um aplicativo específico, você pode experimentar este programa que ainda está na versão beta e não está disponível no Ubuntu Software Center:

link

    
por heiko81 23.12.2011 / 15:30
3

A execução de um programa com outro usuário usará os arquivos de configuração desse usuário e não o seu.

Aqui está uma solução que não exige modificação das regras de firewall e é executada sob o mesmo usuário (via sudo ) com um ambiente modificado, onde o usuário é my_user e o aplicativo que você deseja executar é my_app :

    # run app without access to internet
    sudo unshare -n sudo -u my_user my_app

Para mais detalhes, consulte man unshare .

    
por ccpizza 13.02.2017 / 22:34
3

@psusi: Eu realmente gostaria que as pessoas não pedissem informações ruins e não úteis. IPTables permite que se faça isso, então eu dificilmente considero isso "imprudente". Apenas dizer "NÃO" sem entender um caso de uso é um pouco limitado. link

EDITAR bodhi.zazen

NOTA - ESTA OPÇÃO FOI REMOVIDA DA IPTABLES EM 2005, 8 ANOS ANTES DE ESTA RESPOSTA FOI POSTADA

CONSULTE - link

  

commit 34b4a4a624bafe089107966a6c56d2a1aca026d4 Autor: Christoph   Hellwig Data: Dom Ago 14, 17:33:59 2005 -0700

     

[NETFILTER]: remove o abuso tasklist_lock no ipt {, 6} proprietário

     

Rip out correspondência cmd / sid / pid desde a sua quebra unfixable e fica no       maneira de bloquear as alterações no tasklist_lock.

Signed-off-by: Christoph Hellwig <hch@xxxxxx>
Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx>
Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    
por user141987 20.03.2013 / 14:36
2

Eu descobri que a solução postada aqui é boa. Isso envolve a criação de um grupo de usuários para o qual o acesso à Internet é permitido, e a configuração de regras de firewall para permitir o acesso apenas a esse grupo. A única maneira de um aplicativo acessar a Internet é se ele for executado por um membro desse grupo. Você pode executar programas nesse grupo abrindo um shell com sudo -g internet -s .

Para recapitular o que está na postagem que eu vinculei acima:

  1. Crie o grupo "internet" digitando o seguinte em um shell: sudo groupadd internet

  2. Verifique se o usuário que executará o script abaixo será adicionado ao grupo sudo em /etc/group . Se você acabar modificando este arquivo, você precisará sair e voltar antes que o script abaixo funcione.

  3. Crie um script contendo o seguinte e execute-o:

    #!/bin/sh
    # Firewall apps - only allow apps run from "internet" group to run
    
    # clear previous rules
    sudo iptables -F
    
    # accept packets for internet group
    sudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT
    
    # also allow local connections
    sudo iptables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT
    sudo iptables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT
    
    # reject packets for other users
    sudo iptables -A OUTPUT -p tcp -j REJECT
    
    # open a shell with internet access
    sudo -g internet -s
    
  4. Ao executar o script acima, você terá um shell no qual poderá executar aplicativos com acesso à Internet.

Observe que esse script não faz nada para salvar e restaurar suas regras de firewall. Você pode desejar modificar o script para usar os comandos iptables-save e iptables-restore shell.

    
por Mark 26.08.2015 / 21:12
1

Para melhor ou pior, o Linux usa uma abordagem diferente. Não há uma interface gráfica simples para oferecer essa funcionalidade. Há muitas discussões sobre este tema na internet e você pode encontrar discussões interessantes se você pesquisar no Google. Embora o debate seja interessante, até o momento não houve um grupo dedicado de programadores que quisesse escrever e manter essa funcionalidade.

As ferramentas que oferecem essa funcionalidade no Linux são o Apparmor, o Selinux e o Tomoyo.

Nenhuma dessas ferramentas é muito fácil de aprender e todas têm vantagens e desvantagens. Pessoalmente prefiro o SELinux, embora o SELinux tenha uma curva de aprendizado mais acentuada.

Veja:

link

Houve (é) uma aplicação que já foi referenciada, leopardflower. Não tenho certeza do status / manutenção.

    
por Panther 20.03.2013 / 18:06
1

Estava no iptables até a versão do kernel 2.6.24 Se você estiver executando uma máquina 2.x - 2.6.24 e seu kernel estiver em conformidade, você poderá fazê - lo. por algum motivo eles tiraram, então não é nada da Microsoft. link

    
por not really 09.09.2013 / 06:11
1

Experimente Flor de Leopardo . Ele tem restrições de GUI e por aplicativo.

    
por brand 13.12.2011 / 10:55
0

Não, não é possível. Também não faz parte da definição tradicional de firewall. É algo que a Microsoft criou recentemente, em uma tentativa de contornar os problemas de segurança do sistema operacional. É considerado imprudente e impraticável na comunidade Linux porque um programa que não é permitido pode simplesmente executar outro programa que tenha acesso dessa maneira.

Se você não gosta do que um programa está fazendo na rede quando o executa, não execute esse programa.

    
por psusi 25.05.2011 / 15:35