Esta implementação do Switch de VPN é segura o suficiente?

1

Estou usando o VPN de acesso à Internet privada e ele não fornece um interruptor kill para as distribuições Linux. Então, eu escrevi um script simples usando o iptables.

Depois de executar o Wireshark, descobri que todo o tráfego no wlp6s0 era apenas para e do meu IP público (IP do provedor de VPN). Então, eu apenas bloqueei todos os outros IP's no wlp6s0 para que, no caso de a conexão VPN cair, todos os pacotes sejam descartados.

Aqui está o script:

#!/bin/sh
IP=$(dig +short myip.opendns.com @resolver1.opendns.com)
iptables -A OUTPUT -o wlp6s0 ! -d $IP -j DROP
iptables -A INPUT -i wlp6s0 ! -s $IP -j DROP

Este script parece funcionar. No entanto, não tenho certeza se há algum outro aspecto que eu estou negligenciando. Alguém, quem sabe mais sobre o funcionamento de VPN e TUN / TAP, explica se o meu script é bom o suficiente para garantir a minha privacidade, no caso de a VPN ficar desconectada?

    
por Shakhar 30.12.2016 / 20:26

1 resposta

1

Em termos de segurança, vejo alguns possíveis vazamentos:

  1. O iptables não bloqueia o tráfego IPv6. Você vai querer adicionar regras ip6tables que espelham suas regras do iptables.
  2. É possível que em algum momento você tenha uma interface de rede diferente da wlp6s0 voltada para a Internet. Para cuidar disso, eu recomendo regras que permitam tráfego lo e para tun0 (ou qualquer que seja sua interface VPN), para permitir o tráfego em qualquer interface para o servidor VPN, e para bloquear todo o tráfego.
  3. Você especifica apenas o IP do servidor VPN e não um protocolo ou porta. Se o servidor VPN também executar outros serviços, você estará permitindo que o tráfego seja desmarcado.

Também há alguns problemas de usabilidade com as regras que você já tem:

  1. Parece que você especificou seu servidor VPN por nome de host e não por endereço IP. Sem exceção às suas regras de DNS, você não poderá resolver esse nome de host se ainda não estiver na VPN. Obviamente, a maneira mais simples de contornar isso é usar um IP em vez de um nome de host, mas você pode não ser capaz de fazer isso se for dinâmico. Consertar isso com segurança não é tão simples quanto permitir todo o tráfego de DNS para resolver1.opendns.com, já que você poderia acabar vazando todo o tráfego de DNS para eles.
  2. Você não tem uma exceção para o DHCP, portanto, não poderá obter um endereço IP dinâmico. Se você usa um endereço IP estático, isso não importa, mas se você não fizer isso, você não conseguirá se conectar à rede.
por 23.02.2017 / 04:40