Como criar um VPN Killswitch usando iptables no Linux
- 4265
- 264
- Enrique Gutkowski PhD
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
- « Como modificar um pacote de rpm usando rpmrebuild
- Como configurar transmissão-daemon em um Raspberry Pi e controlá-lo via interface da web »