Cómo crear una VPN Killswitch usando iptables en Linux
- 3521
- 286
- Claudia Baca
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
- « Cómo modificar un paquete RPM usando rpmRebuild
- Cómo configurar la transmisión-damon en una Raspberry Pi y controlarlo a través de la interfaz web »