Cómo crear una VPN Killswitch usando iptables en Linux

Cómo crear una VPN Killswitch usando iptables en Linux

Objetivo

Use iptables para bloquear todas las conexiones a Internet en caso de que su VPN esté desconectada.

Distribuciones

Esto funcionará en cualquier distribución de Linux.

Requisitos

Una instalación de Linux que funciona con privilegios de raíz.

Convenciones

  • # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
  • ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Introducción

Si estás conectado a una VPN, necesitas un Killswitch. No, no es tan metal como suena. Es solo un mecanismo que detiene su conexión a Internet cuando está desconectado de la VPN. Le protege de fugar información confidencial inadvertidamente a Internet cuando la conexión VPN cae.

Algunos servicios de VPN proporcionan a los clientes un KillSwitch incorporado, pero ninguno es tan confiable como usar iptables. Dado que iptables es independiente de su servicio VPN, y está integrado en el núcleo mismo, no fallará cuando su VPN lo haga. Iptables también es una tecnología de seguridad bien probada que puede y mantendrá su computadora segura.



Sysctl

Antes de comenzar a crear reglas iptables, debe hacer algunas alteraciones al sysctl configuración. En algunas distribuciones, se encuentra en /etc/sysctl.d/99-Sysctl.confusión. Otros lo tienen en /etc/sysctl.confusión. Abra ese archivo, localice la siguiente línea y cambíe para que coincida con el ejemplo aquí.

neto.IPv4.ip_forward = 1

Luego, agregue las siguientes líneas a la parte inferior del archivo. Asegúrese de cambiar las interfaces para que coincidan con las de su máquina.

neto.IPv6.confusión.todo.disable_ipv6 = 1 net.IPv6.confusión.por defecto.disable_ipv6 = 1 net.IPv6.confusión.holgazanería.disable_ipv6 = 1 net.IPv6.confusión.eth0.disable_ipv6 = 1 

Guardar y Salir. Entonces corre:

# sysctl -p 

Configurar el documento

Ahora puede crear un archivo para sus reglas. Realmente no importa dónde lo hagas, así que solo haz uno. Se referirá como IPv4 Para esta guía.

Inicie el archivo agregando las siguientes líneas. Serán el comienzo y el final del archivo.

*Filtro de confirmación 

Reglas de base

Antes de configurar iptables para permitir cualquier tráfico que necesite cambiar su valor predeterminado para no permitir todo el tráfico. Agregue estas tres reglas para soltar todo el tráfico por defecto.

-P Drop de entrada -P delantero 


Aporte

Es más seguro permitir solo el tráfico entrante de las conexiones establecidas o relacionadas. Establecer eso a continuación.

-Una entrada -m conntrack -ctstate relacionada, establecida -j aceptar 

Bucleback y ping

A continuación, permita la interfaz de loopback y el ping.

-Una salida -o lO -j aceptación -a salida -o tun0 -p icmp -j acepta 

Esto supone que su conexión VPN está en tun0. Verifique eso con ip a, Si no estás seguro.

Lan

No tiene mucho sentido apagar o bloquear el tráfico de su LAN, especialmente en una red doméstica, así que permita eso también.

-Una salida -d 192.168.1.4/24 -J aceptar 

DNS

Para la próxima parte, necesitará conocer la dirección IP de los servidores DNS de su VPN. Si su VPN tiene acceso o su resolución.confusión, Probablemente los encontrarás yo allí.

-Una salida -d 10.45.dieciséis.1 -j aceptar 

Permitir la VPN

Por supuesto, debe permitir la VPN en sí. Hay dos partes en esto. Debe permitir tanto el puerto de servicio como la interfaz.

-Una salida -P UDP -M UDP - -DPORT 1194 -J Aceptar -A Salida -O Tun0 -j Aceptar 

Nuevamente, verifique el puerto y la interfaz que su conexión VPN está utilizando.

Podrías parar aquí. Esto funcionará bien para un Killswitch. Sin embargo, si desea que los iptables funcionen como un firewall regular y conexiones de bloqueo en puertos no deseados, también puede hacerlo.

Desde aquí, eliminaría la última línea que acepta todo el tráfico en tun0, y reemplácelo con subsidios específicos para los puertos que desea permitir.

-Una salida -o tun0 -p tcp --dport 443 -j aceptación -a salida -o tun0 -p tcp --dport 80 -j Aceptación -a salida -o tun0 -p tcp --dport 993 -j Aceptación -a salida de salida -o tun0 -p tcp --dport 465 -j aceptar 

Obtienes la idea general. Es más largo y más tedioso, pero le da más control sobre lo que el tráfico pasa.



IPv6

IPv6 es realmente malo para las VPN en este momento. La mayoría no lo admite adecuadamente, y su información puede filtrarse sobre esa conexión. Es mejor cerrarlo por completo.

Crear otro archivo para IPv6 y bloquear todo.

-P Drop de entrada -P delantero 

Comprometerse

Debe importar sus archivos a iptables para que entren en vigencia. Primero, elimine las reglas antiguas.

# iptables -f && iptables -x 

Importar los nuevos de sus archivos.

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

Hazlo permanente

Iptables no guarda su estado después de un reinicio de forma predeterminada. Necesitas configurar eso tú mismo.

Debian/Ubuntu

Los sistemas con sede en Debian tienen un programa llamado, iptable-Persistente. Es un servicio que maneja la copia de seguridad y la carga de sus configuraciones.

Cuando lo instala, iptable-Persistente le preguntará si desea guardar su configuración existente. Decir que sí.

# APT Install Iptables-Persistent 

Dado que Debian Systems ejecuta los servicios en el inicio de forma predeterminada, no necesita hacer nada más.



Otros Systemd

Otros sistemas tienen un par de formas diferentes de manejar esto. El primero es editar /etc/sysconfig/iptables-config. Habrá una de dos líneas allí. Edite el que deba verse como lo siguiente.

Iptables_save_on_stop = "Sí" o iPtables_Save_on_Restart = "Sí" 

La otra forma es usar las funciones de guardado y restauración de iptables. Cree un directorio donde desee guardar sus reglas.

# mkdir/etc/iptables/ # iptables-save>/etc/iptables/iptables.reglas # ip6tables-save>/etc/iptables/ip6tables.normas 

Luego, cree un script para cargar esa regla cuando su computadora arranca.

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

Abierto

Los sistemas OpenRC como Gentoo tienen su propia forma de guardar las configuraciones.

# RC-Service iptables Guardar # RC-Service IP6Table Guardar # RC-Service Iptables Inicio # RC-Service IP6Table Inicio # RC-UPDATE ADD IPTABLES # RC-UPDATE Agregar IP6Tables predeterminado 

Pensamientos de cierre

El uso de un KillSwitch basado en Iptables hace que su VPN sea mucho más segura. La fuga de datos hace derrotas totalmente el propósito de usar una VPN, por lo que detener las fugas debería ser una prioridad.

No confíe en los llamados Killswitches horneados en clientes VPN. La mayoría no funciona. La única forma de asegurarse realmente de que sus datos no se filtre es hacerlo usted mismo con Iptables.

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
  • Instale Arch Linux en VMware Workstation
  • Descarga de Linux
  • Comandos de Linux: los 20 comandos más importantes que necesitas ..
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Comandos básicos de Linux
  • Cosas para instalar en Ubuntu 22.04
  • Instalación de Manjaro Linux