Como criar um VPN Killswitch usando iptables no Linux

Como criar um VPN Killswitch usando iptables no Linux

Objetivo

Use iptables para bloquear todas as conexões da Internet no caso de sua VPN estar desconectada.

Distribuições

Isso funcionará em qualquer distribuição Linux.

Requisitos

Uma instalação do Linux em funcionamento com privilégios root.

Convenções

  • # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
  • $ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Introdução

Se você estiver conectado a uma VPN, você precisa de um killswitch. Não, não é tão metal quanto parece. É apenas um mecanismo que interrompe sua conexão com a Internet quando você está desconectado da VPN. Ele protege você de vazar inadvertidamente informações confidenciais na Internet quando a conexão VPN cai.

Alguns serviços VPN fornecem aos clientes um Killswitch embutido, mas nenhum é tão confiável quanto o uso de iptables. Como o iptables é independente do seu serviço de VPN e está integrado ao próprio kernel, ele não falhará quando sua VPN o fizer. Iptables também é uma tecnologia de segurança bem comprovada que pode e manterá seu computador seguro.



Sysctl

Antes de começar a criar regras iptables, você deve fazer algumas alterações no sysctl configuração. Em algumas distribuições, está localizado em /etc/sysctl.D/99-SYSCTL.conf. Outros têm isso em /etc/sysctl.conf. Abra esse arquivo e localize a seguinte linha e altere -a para corresponder ao exemplo aqui.

líquido.IPv4.ip_forward = 1

Em seguida, adicione as seguintes linhas à parte inferior do arquivo. Certifique -se de alterar as interfaces para combinar com as da sua máquina.

líquido.IPv6.conf.todos.desabille_ipv6 = 1 rede.IPv6.conf.padrão.desabille_ipv6 = 1 rede.IPv6.conf.lo.desabille_ipv6 = 1 rede.IPv6.conf.eth0.desabille_ipv6 = 1 

Salvar e sair. Então corra:

# sysctl -p 

Configure o documento

Agora você pode criar um arquivo para suas regras. Realmente não importa onde você consegue, então faça um. Será referido como IPv4 Para este guia.

Inicie o arquivo adicionando as seguintes linhas. Eles serão o começo e o fim do arquivo.

*Filtro Commit 

Regras básicas

Antes de configurar os iptables para permitir o tráfego, você precisa alternar seu padrão para proibir todo o tráfego. Adicione essas três regras para soltar todo o tráfego por padrão.

-P Drop de entrada P -P para dianteiro --p Drop de saída 


Entrada

É mais seguro permitir apenas o tráfego de entrada de conexões estabelecidas ou relacionadas. Configure isso a seguir.

-Uma conexão -m Conntrack -CTSTATE RELACIONADO, ACEITO -J ESTABELECIDO 

Loopback e ping

Em seguida, permita a interface de loopback e ping.

-Uma saída -o lo -j aceita -a saída -o tun0 -p icmp -j aceita 

Isso pressupõe que sua conexão VPN esteja ligada tun0. Verifique isso com ip a, Se você não tem certeza.

LAN

Não faz muito sentido desligar ou bloquear seu tráfego de LAN, especialmente em uma rede doméstica, então permita que isso.

-Uma saída -d 192.168.1.0/24 -J Aceitar 

Dns

Para esta próxima parte, você precisará conhecer o endereço IP do (s) servidor (s) DNS da sua (s) VPN. Se sua VPN tiver acesso ou seu resolv.conf, Você provavelmente os encontrará lá lá.

-Uma saída -d 10.45.16.1 -j aceitar 

Permita a VPN

Claro, você precisa permitir a própria VPN. Existem duas partes nisso. Você precisa permitir a porta de serviço e a interface.

-Uma saída -p udp -m udp - -dport 1194 -j aceita -a saída -o tun0 -j aceita 

Novamente, verifique a porta e a interface que sua conexão VPN está usando.

Você pode parar aqui. Isso vai funcionar bem para um killswitch. No entanto, se você deseja que os iptables funcionem como um firewall regular e bloqueie conexões em portas indesejadas, você pode fazer isso.

A partir daqui, você excluiria a última linha que aceita todo o tráfego tun0, e substitua -o por subsídios específicos para as portas que você deseja permitir.

-Uma saída -O tun0 -p tcp - -dport 443 -j aceit -a saída -O tun0 -p tcp - -dport 80 -j aceita -a saída -o tun0 -p tcp - -dport 993 -j aceita -a saída -o tun0 -p tcp - -dport 465 -j aceita 

Você tem a ideia geral. É mais longo e mais tedioso, mas oferece mais controle sobre o que o tráfego passa.



IPv6

IPv6 é muito ruim para VPNs agora. A maioria não o apoia adequadamente, e suas informações podem vazar sobre essa conexão. É melhor fechá -lo completamente.

Crie outro arquivo para IPv6 e bloqueie tudo.

-P Drop de entrada P -P para dianteiro --p Drop de saída 

Comprometer-se

Você precisa importar seus arquivos para iptables para que eles tenham efeito. Primeiro, limpe todas as regras antigas.

# iptables -f && iptables -x 

Importar os novos de seus arquivos.

# iptables-Restore < /tmp/ipv4 # ip6tables-restore < /tmp/ipv6 

Torná -lo permanente

Iptables não salva seu estado após uma reinicialização por padrão. Você precisa configurar isso você mesmo.

Debian/Ubuntu

Os sistemas baseados em Debian têm um programa chamado, iptables-persistent. É um serviço que lida com backup e carregando suas configurações.

Quando você o instala, iptables-persistent Perguntará se você deseja salvar sua configuração existente. Diga sim.

# APT Instale iptables-persistent 

Como o Debian Systems realiza serviços na inicialização por padrão, você não precisa fazer mais nada.



Outro Systemd

Outros sistemas têm algumas maneiras diferentes de lidar com isso. O primeiro é editar /etc/sysconfig/iptables-config. Haverá uma das duas linhas lá. Edite o que você deve se parecer com o seguinte.

Iptables_save_on_stop = "Sim" ou iptables_save_on_restart = "Sim" 

A outra maneira é usar as funções de salvar e restaurar os iptables. Crie um diretório onde você deseja salvar suas regras.

# mkdir/etc/iptables/ # iptables-save>/etc/iptables/iptables.regras # ip6tables-save>/etc/iptables/ip6tables.regras 

Em seguida, crie um script para carregar essas regra quando o seu computador inicializar.

#! /bin/bash iptables-Restore < /etc/iptables/iptables.rules; ip6tables-restore < /etc/iptables/ip6tables.rules; 

OpenRC

Sistemas OpenRC como o Gentoo têm sua própria maneira de salvar as configurações.

# rc-service iptables salvar # rc-service ip6tables salvar # rc-service iptables start # rc-service ip6tables Iniciar # rc update add iptables # rc update add ip6tables # 

Pensamentos finais

Usar um killswitch baseado em iptables torna sua VPN muito mais segura. Os dados de vazamento tornam totalmente derrota o objetivo de usar uma VPN, então parar de vazamentos deve ser uma prioridade superior.

Não confie nos chamados killswitches assados ​​em clientes VPN. A maioria não funciona. A única maneira de realmente garantir que seus dados não estão vazando é fazê -lo com iptables.

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Coisas para fazer depois de instalar o Ubuntu 22.04 Jellyfish…
  • Instale Arch Linux na estação de trabalho VMware
  • Download do Linux
  • Comandos Linux: os 20 comandos mais importantes que você precisa para…
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Comandos básicos do Linux
  • Coisas para instalar no Ubuntu 22.04
  • Instalação do Manjaro Linux