Como posso negar acesso à internet a todos os processos, exceto os escolhidos?

1

Às vezes, sou forçado a usar uma largura de banda de Internet muito restrita de 56kbps. Na minha área de trabalho Ubuntu eu tenho muitos programas, que freqüentemente verificam algo na rede - e caçar e desativá-los um a um é realmente problemático.

Gostaria de ter alguma ferramenta que negasse acesso à Internet (por qualquer meio) a todos os processos, exceto o o cliente de email.

É possível? Se sim, como?

Eu imagino que uma maneira de conseguir isso é abrir outro dispositivo de rede (como /dev/tap1 ) e configurá-lo para direcionar para o /dev/wlan0 (meu dispositivo usual de internet) e proteger tudo com regras personalizadas iptables que pode ser ligado e desligado. Mas eu não sou especialista em iptables, então essa solução de classificação, a menos que alguém me dê instruções específicas, é inútil.

    
por Adam Ryczkowski 12.09.2014 / 10:52

2 respostas

1

Você também pode usar iptables para permitir / restringir pelas portas udp / tcp nas interfaces desejadas. Por exemplo, vamos introduzir uma regra na tabela filter na cadeia OUTPUT para permitir todo o tráfego na porta tcp / udp 143 (IMAP).

(sudo) iptables -A OUTPUT -o eth0 -p udp --destination-port 143 -j ACCEPT
(sudo) iptables -A OUTPUT -o eth0 -p tcp --destination-port 143 -j ACCEPT
(sudo) iptables -A OUTPUT -o eth0 -j DROP

Acho que o IMAP passa pelo TCP, mas apenas no caso de eu restringir também o protocolo UDP. Para este assunto, estou assumindo sua interface para a internet como eth0 . E que o seu cliente de e-mail usa o protocolo IMAP para conectar um servidor de e-mail remoto. Eu apenas tentei por mim e só tenho acesso ao servidor de email. Lembre-se de que a ordem das regras é importante; caso contrário, não fará o que você espera.

Editar # 1: Como você pediu no comentário. Para restaurar o tráfego da Internet, basta remover as regras que você acabou de inserir. Você pode fazer isso da seguinte maneira:

Longo caminho:

(sudo) iptables -D OUTPUT -o eth0 -p udp --destination-port 143 -j ACCEPT
(sudo) iptables -D OUTPUT -o eth0 -p tcp --destination-port 143 -j ACCEPT
(sudo) iptables -D OUTPUT -o eth0 -j DROP

Caminho curto:

(sudo) iptables -nvL --line-numbers

Executar o comando acima mostrará na frente de cada regra um número correspondente que ajudará a remover as regras usando esse número em vez de reescrever a regra inteira. Um exemplo de saída seria o seguinte:

Chain OUTPUT (policy ACCEPT 73 packets, 8766 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     udp  --  *      eth0    0.0.0.0/0            0.0.0.0/0            udp dpt:143

E depois, para remover a regra, basta executar este comando:

(sudo) iptables -D OUTPUT 1

O caminho curto também é recomendado se você não tiver configurado a regra e não souber exatamente como foi. Embora você possa reconstruir a regra a partir da saída dos parâmetros iptables with -nvL .

Observação: essa é a maneira non-persistent de usar iptables , o que significa que você não manterá as regras se reinicializar o sistema. Se você quiser que suas regras sejam persistent , a maneira mais fácil é executar o seguinte:

(sudo) iptables-save > /etc/iptables/rules.v4

que salva / despeja suas regras atuais em /etc/iptables/rules.v4 . Então, após a reinicialização do iptables, a configuração armazenada seria lida. Por IPv6 você usa esse outro arquivo rules.v6 . Tenha em mente que isso vale para Debian , onde você precisa instalar um pacote adicional. Por favor, verifique este guia para uma explicação detalhada. Para o Ubuntu eu encontrei este outro guia . Para outros sistemas, você pode navegar na Internet, mas o princípio é o mesmo: You dump your current rules to file and set up a script at boot time to apply those saved rules to the current iptables configuration.

    
por 12.09.2014 / 12:16
0

Você pode executar seus processos em várias máquinas virtuais. Então você pode matar o acesso à rede de algumas máquinas virtuais, mas não de outras.

    
por 12.09.2014 / 14:16