Cifrado de tráfico de Linux

Hay muchas formas de evitar los sitios de bloqueo y garantizar la privacidad en la red. Términos como TOR, VPN, proxies son bien conocidos por todos. Para conectarlos y configurarlos, no necesita conocimientos especiales, pero hay soluciones más elegantes. Hoy hablaré sobre el método de evitar bloqueos en Linux con el enmascaramiento del tráfico y mostraré algunos scripts para automatizar esto. Se pueden transferir fácilmente a la Raspberry Pi para hacer un enrutador inteligente.

 

Contenido

  • 1 Cifrado de tráfico en Linux
    • 1.1 ¿Qué es qué?
  • 2 Brevemente sobre dos opciones
  • 3 Implementación
    • 3.1 Opción 1: cliente VPN en la máquina del usuario
    • 3.2 Opción 2: Cliente VPN en el enrutador
  • 4 IPSet
  • 5 Automatización después de fallas / reinicios
  • 6 Conclusión

 

Este artículo no es una guía. Está escrito únicamente para familiarizarlo con algunas de las funciones de enrutamiento en los sistemas Linux. El autor del artículo y los editores del sitio www.ciberforense.com no tienen ninguna responsabilidad por el resultado del uso de los métodos y técnicas descritos aquí.
Linux proporciona una amplia gama de funciones de enrutamiento y herramientas de configuración. Los administradores de sistemas con experiencia lo saben y utilizan el arsenal de Linux al máximo. Pero incluso muchos usuarios avanzados no saben cuánta conveniencia pueden aportar todas estas características maravillosas. Hoy crearemos tablas de enrutamiento y describiremos las reglas para pasar por ellas, así como automatizaremos la administración de estas tablas. Entonces, nuestros planes creativos:
  • decidiremos lo que necesitamos: instalar los paquetes necesarios y descubrir por qué son necesarios;
  • estudiamos el principio general del grupo;
  • configurar un canal VPN seguro usando el stunnel OpenVPN +;
  • hacer listas de direcciones y describir el alcance de su aplicación;
  • cree una secuencia de comandos para agregar rápidamente un dominio o una dirección IP a las listas de IPSet además de la tabla de enrutamiento e inclusión en las reglas de redireccionamiento;
  • Usamos SSH para proporcionar un canal seguro de comunicación a su internet.

Cifrado de tráfico de Linux

¿Qué necesitamos para que todo funcione, y preferiblemente cómodamente? Por supuesto, iptables, ¿a dónde irías sin él? También iproute2, nos permitirá crear un montón de tablas. Se requiere IPSet para no bloquear el jardín de las muchas reglas de iptables.

Que es que

  • iptables es una utilidad de línea de comando. Herramienta básica de gestión de firewall para kernels de Linux.
  • iproute2 : un conjunto de utilidades para administrar los parámetros de los dispositivos de red en el kernel de Linux.
  • IPSet es una herramienta para trabajar con listas de direcciones IP y puertos de red en un filtro de red. Genera una lista en un formato especial para la transmisión al firewall.
  • Stunnel es una herramienta de comunicación encriptada para clientes o servidores que no son compatibles con TLS o SSL. Stunnel intercepta los datos no cifrados que deberían haberse enviado a la red y los cifra. El programa funciona tanto en sistemas Unix como en Windows. Utiliza OpenSSL como cifrado para implementar el protocolo básico TLS y SSL.
  • OpenVPN es un servidor VPN con soporte de encriptación de la biblioteca OpenSSL. Las partes del cliente están disponibles en casi todas las plataformas. Capaz de trabajar a través de proxies como Socks, HTTP, a través de NAT y filtros de red.

Acerca de todas estas utilidades, puede encontrar mucha información en Internet y con ejemplos de configuraciones en una variedad de opciones. Usaremos iptables para marcar paquetes. Tendremos dos opciones de personalización. La primera es cuando la máquina que está rastreando está conectada a la VPN. La segunda opción es cuando hay un nodo en la red (máquina virtual, Raspberry Pi o cualquier otro host con Linux) que desempeña el papel de un enrutador. A continuación, analizaremos estas opciones con más detalle.

Brevemente sobre dos opciones

El cliente y el servidor establecerán un canal de comunicación encriptado en el puerto 443 (stunnel) y transmitirán dentro de OpenVPN en el puerto 995. Afuera, debería verse como HTTPS regular.

Ilustración del trabajo de stunnel + OpenVPN
Ilustración del trabajo de stunnel + OpenVPN

Y aquí puede implementar dos esquemas de conexión.

Opción 1. En la máquina cliente, iptables marcará los paquetes con un determinado indicador si las direcciones en los paquetes y las listas de IPSet coinciden, y las pasará para el enrutamiento.

A continuación, los paquetes marcados con una bandera se enviarán de acuerdo con una tabla de enrutamiento creada previamente, el resto irá por la ruta predeterminada. Usando la consola o un pequeño script, corregiremos esta lista de direcciones. Puede haber varias listas, según la situación.

Opción 2. El cliente será un host en la red local (máquina virtual, Raspberry Pi u otro dispositivo). Se indicará como la puerta de enlace principal en las computadoras desde las cuales se necesita acceso a los recursos a través de VPN. Después de recibir una solicitud de una dirección IP de la lista, la puerta de enlace habilitará NAT y enviará dicho tráfico a la VPN. El resto del tráfico se enrutará a la puerta de enlace predeterminada sin NAT.

Para los sistemas Linux, podemos dejar la puerta de enlace predeterminada y configurar IPSet e iproute2, y luego configurarlos de manera similar a la configuración del enrutador host «intermedio». En este caso, el tráfico en la misma lista de IPSet se seleccionará a nivel de cliente. Es decir, lo que está en la lista se enviará al enrutador host intermedio y luego a la VPN. El resto se enrutará de forma predeterminada.

Implementación

Supongamos que en algún lugar de la nube ya tenemos un servidor VPS con Ubuntu o Debian. En otras distribuciones, las diferencias probablemente solo estarán en la instalación de los paquetes necesarios. Este host en nuestra configuración se usará como un servidor VPN. Las recomendaciones sobre qué VPS es mejor usar en Internet están completas, para un presupuesto diferente, con diferentes configuraciones y condiciones.

Instale OpenVPN, stunnel, git en el servidor:

A continuación, utilizaremos un script listo para configurar el servidor OpenVPN. Por supuesto, puede configurar todo manualmente, y le aconsejo que haga exactamente eso. La información sobre cómo configurar correctamente OpenVPN es fácil de encontrar en la Web. Pero si necesita obtener el resultado muy rápido y no quiere molestarse, entonces aquí hay una solución rápida.

Obtenemos el script de instalación y lo ejecutamos. Le ayudará a crear claves y certificados personalizados y, si es necesario, cambiar el direccionamiento de red. Todo es muy accesible y comprensible. En la salida, para cada usuario, obtenemos un archivo, dentro del cual habrá una clave de configuración y certificados (servidor y usuario). Transferimos este archivo al cliente.

Abra el archivo de configuración del servidor OpenVPN y edítelo. Seleccione el puerto deseado, el que estará libre en el servidor para conectarse. Es mejor usar un puerto que sea más o menos discreto (elegí el 995o, generalmente los puertos de correo se dejan abiertos) para que el cliente pueda conectarse con seguridad al servidor VPN.

Así es como se verá nuestra configuración:

El siguiente paso es configurar stunnel:

Aquí todo es simple:

  • describa dónde se guardarán los registros;
  • indicar el nombre del servicio en cualquier forma;
  • elegimos en qué modo funciona el dispositivo: servidor o cliente. En este caso, client = no indica el modo del servidor;
  • accept = 443 indica el puerto al que nos conectaremos externamente (el puerto 443 se eligió por una razón: en el 99% de los casos siempre está abierto, es más fácil fingir que es un HTTPS normal y no se nos notará incluso con DPI ).

Generamos claves y certificados para stunnel:

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *