Como bloquear o acesso à Internet para determinados programas no Linux

20

Recentemente, encontrei um problema ao limitar o acesso à Internet a programas específicos. Alguém poderia recomendar uma boa maneira de fazer isso, sem usar nenhum software em particular?

Ilia Rostovtsev
fonte

Respostas:

31

A solução para mim foi direta.

  1. Criar, validar novo grupo ; adicione usuários necessários a este grupo:
    • Crio: groupadd no-internet
    • Validar: grep no-internet /etc/group
    • Adicionar usuário: useradd -g no-internet username

      Nota: Se você estiver modificando um usuário já existente, execute: usermod -a -G no-internet userName verifique com:sudo groups userName

  2. Crie um script no seu caminho e torne-o executável:
    • Crio: nano /home/username/.local/bin/no-internet
    • Executável: chmod 755 /home/username/.local/bin/no-internet
    • Conteúdo: #!/bin/bash
                    sg no-internet "$@"

  3. Adicione a regra iptables para descartar a atividade de rede para o grupo no-internet :


   4. Verifique, por exemplo, no Firefox executando:

  • no-internet "firefox"

Caso você queira abrir uma exceção e permitir que um programa acesse a rede local :

  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 192.168.1.0/24 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -d 127.0.0.0/8 -j ACCEPT
  • iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP

NOTA: Em caso de desova, as regras serão mantidas. Por exemplo, se você executar um programa sem regra de não Internet e esse programa abrir a janela do navegador, as regras ainda serão aplicadas.

Ilia Rostovtsev
fonte
2
Algumas anotações Ilia: Anúncio 1: - para modificar o usuário existente: usermod -a -G groupName userName - verifique com: sudo groups userName Anúncio 3: - Eu já tenho muitas regras no iptables. A posição da nova regra é crucial . deve ser a primeira regra na cadeia OUTPUT. Portanto, uso insert: iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP Para permitir acesso à LAN: verifique se as regras de ACCEPT estão acima da regra DENY. Funciona como um encanto. Use-o por exemplo no Wifiguard. O programa verifica a wlan quanto a dispositivos desconhecidos, mas "telefona para casa" a cada início.
O script passará apenas o comando. Se você tentar iniciar um programa com parâmetros, use "$ @" em vez de "$ 1". Por algum motivo, tive que armazená-lo temporariamente em uma variável para o bash processá-lo corretamente: cmd = "$ @"; sg no-internet "$ {cmd}"
onse
use "nointernet" em vez de "sem internet". Por qualquer motivo, o Ubuntu 14.04 não pode lidar com o traço quando você tenta usar sg ou chgrp (ele solicita uma senha e falha).
11
cancele o compartilhamento -n YourAppToBlock> use "nointernet" em vez de "no-internet". talvez 'não' - internet '?
SarK0Y
Eu tentei como descrito, mas para mim, depois de me adicionar a "no-internet" e definir as tabelas de ip, não consigo mais me conectar à internet (com e sem o script bash no-internet).
Viatorus