Introducción
En algún momento, podrías encontrarte en una red insegura o con un firewall muy restrictivo y quieres asegurarte de que nadie esté vigilando tu tráfico. Una solución es configurar una VPN en Ubuntu 22.04/20.04/18.04, pero muchas VPN requieren un software cliente especial en tu equipo que quizás no tengas permiso para instalar. Sin embargo, si solo necesitas navegar por internet de forma segura, existe una alternativa rápida, gratuita y útil: un túnel proxy SOCKS 5.
Un proxy SOCKS es un túnel SSH cifrado a través del cual las aplicaciones configuradas redirigen su tráfico. Posteriormente, en el servidor, el proxy reenvía el tráfico a la internet pública. A diferencia de una VPN, un proxy SOCKS debe configurarse individualmente en el dispositivo cliente. Sin embargo, siempre que la aplicación sea compatible con el proxy SOCKS, se pueden ejecutar aplicaciones sin necesidad de software cliente especializado. En el servidor, solo se necesita configurar SSH.
En este tutorial, usarás un servidor con Ubuntu 22.04 (aunque cualquier distribución de Linux accesible por SSH funcionará) y el navegador web Firefox como aplicación cliente. Al finalizar este tutorial, podrás navegar por sitios web a través de un túnel SSH cifrado.
Requisitos previos
- Un servidor Linux que ejecuta Ubuntu (otras distribuciones funcionan) con el usuario
sudoy acceso SSH. - Un programa para configurar con un proxy SOCKS, como el navegador web Firefox.
- Para los usuarios de Windows, también necesitará la herramienta PuTTY o el Subsistema de Windows para Linux (WSL).
PuTTY se utiliza para configurar un túnel proxy para usuarios de Windows. Los usuarios de macOS o Linux tienen herramientas preinstaladas para configurar el túnel.
Paso 1 (macOS/Linux): Configuración del túnel
En tu ordenador local, si aún no has creado tu Droplet con una, genera una clave SSH. Una vez generada, asegúrate de que la clave pública se añada al archivo "authorized_keys" de tu Droplet SSH. A continuación, abre una aplicación de terminal para crear un túnel SSH con el proxy SOCKS habilitado.
Inicie el túnel con este comando:
ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domainExplicación de la prueba
-i:Ruta de la clave SSH para conectarse al host-D: le dice a SSH que queremos un túnel SOCKS en el número de puerto especificado (puede elegir un número entre 1025 y 65536)-F:Mueve el proceso al segundo plano-DO:Comprime los datos antes de enviarlos-q:Utiliza el modo silencioso-NORTE:Le dice a SSH que no se enviarán comandos después de que se cierre el túnel.
Compruebe que el túnel se esté ejecutando con este comando:
ps aux | grep sshVerá una línea en la salida como esta:
Output
sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain
Puedes salir de tu aplicación de terminal y el túnel permanecerá activo. Esto se debe a que usamos el argumento -f, que pone la sesión SSH en segundo plano.
Paso 1 (Windows): Configuración del túnel
Abra PuTTY. Si aún no lo ha instalado, descárguelo y guárdelo en la ubicación que prefiera. PuTTY no requiere derechos de administrador para instalarse. Simplemente... .exe Descargar y ejecutar.
Para configurar un túnel, siga estos pasos:
Desde la sección Sesión, agregue el nombre de host (o dirección IP) de su servidor y el puerto SSH (generalmente 22).
A la izquierda, navegue a: Conexión > SSH > Túneles
Introduzca cualquier número de puerto de origen entre 1025 y 65536, como por ejemplo 1337.
Seleccione el botón de radio dinámico.
Haga clic en el botón Agregar.
Regrese a la sesión a la izquierda.
Agregue un nombre en el campo Sesiones guardadas y haga clic en el botón Guardar.
Ahora haga clic en el botón Abrir para establecer la conexión.
Nombre de usuario sudo e ingrese la contraseña de su servidor para iniciar sesión
Paso 2: Configurar Firefox para usar el túnel
Ahora que tienes un túnel SSH, es hora de configurar Firefox para usarlo. Recuerda que para que un túnel SOCKS 5 funcione, necesitas usar una aplicación local que pueda implementarlo. Firefox tiene esta función:
Este paso es el mismo para Windows, macOS y Linux.
Asegúrate de tener el número de puerto que usaste en tu comando SSH. En nuestros ejemplos, usamos 1337.
(Los pasos a continuación se realizaron con la versión 80 de Firefox, pero deberían funcionar en otras versiones, aunque la ubicación de las opciones puede variar).
Abra Firefox.
- En la esquina superior derecha, haga clic en el icono de hamburguesa para acceder al menú de Firefox.
- Haga clic en el elemento de menú Preferencias u Opciones.
- Desplácese hacia abajo y seleccione el botón Configuración… en la sección Configuración de red.
- Bajo el encabezado «Configurar el acceso proxy a Internet», seleccione Configuración manual del proxy.
- Para el host SOCKS ingrese localhost o 127.0.0.1 y para el puerto use el puerto personalizado especificado en su túnel, 1337.
- Cerca de la parte inferior, marque la casilla "Proxy DNS al usar SOCKS v5"
- Haga clic en el botón Aceptar para guardar y cerrar su configuración.
Ahora abre otra pestaña en Firefox y empieza a navegar por la web. Deberías estar listo para navegar de forma segura a través del túnel SSH. Los datos que recibes del sitio web están cifrados. Además, como has activado la opción DNS proxy, tus búsquedas DNS también están cifradas para que tu ISP no pueda ver lo que estás viendo ni dónde lo obtendrás.
Para verificar que estás usando un proxy, vuelve a la configuración de red de Firefox, introduce un número de puerto diferente y guarda la configuración. Si intentas navegar por la web, deberías recibir el mensaje de error "El servidor proxy rechaza conexiones". Esto demuestra que Firefox usa un proxy y no solo la conexión predeterminada. Como alternativa, puedes acceder a un sitio con una IP pública como ipecho.net; la IP que devuelva debería ser la IP de tu Droplet SSH, ya que ahora actúa como tu proxy.
Paso 3: Restablecer el proxy en Firefox
Cuando hayas terminado con la necesidad de mantener la privacidad del túnel SSH, vuelve a la configuración del proxy de red en Firefox. Haz clic en el botón "Usar la configuración del proxy del sistema" y luego en "Aceptar". Ahora que Firefox ya no usa el túnel SOCKS, también podemos desactivarlo. Puedes dejar el túnel activo para activar y desactivar el proxy en Firefox, pero si lo dejas inactivo demasiado tiempo, podría cerrarse solo.
Cerrar el túnel (macOS/Linux)
El túnel que creamos previamente en nuestra máquina local se envió a segundo plano, por lo que cerrar la ventana de terminal que usaste para abrirlo no lo cerrará. Para cerrarlo, necesitamos identificar el ID del proceso (PID) con el comando ps y luego usar el comando matar Terminemos el proceso.
Busquemos todos los procesos ssh activos en nuestra máquina:
ps aux |grep sshBusque la línea similar al comando que introdujo anteriormente para crear el túnel. Aquí tiene un ejemplo de salida:
Output
sammy 14345 0.0 0.0 2462228 452 ?? Ss 6:43AM 0:00.00 ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domainDesde el principio de la línea, en una de las dos primeras columnas, hay un número de 3 a 5 dígitos. Este es el PID. El PID del ejemplo 14345 está resaltado aquí.
Ahora que sabes qué es el PID, puedes usar el comando kill para desactivar el túnel. Usa su PID al finalizar el proceso:
kill 14345Cerrar el túnel (Windows)
Cierra la ventana de PuTTY que usaste para crear el túnel. Listo.
Paso 4 (macOS/Linux): crear un acceso directo para uso frecuente
En sistemas macOS o Linux, podemos crear un alias o un script para crear rápidamente el túnel. Hay dos maneras de automatizar el proceso de tunelización:
Ambos métodos de acceso directo requieren autenticación de clave SSH sin contraseña ni frase de contraseña en el servidor.
Script BASH en el que se puede hacer clic
Si quieres un icono que inicie el túnel al hacer clic en él, podemos crear un pequeño script BASH. El script iniciará el túnel y luego iniciará Firefox, aunque aún tendrás que configurar manualmente el proxy en Firefox la primera vez.
En macOS, el binario de Firefox que podemos ejecutar desde la línea de comandos se encuentra dentro de Firefox.app. Suponiendo que la aplicación se encuentra en la carpeta Aplicaciones, el binario se encuentra en /Aplicaciones/Firefox.app/Contenidos/MacOS/firefox Se encuentra.
En sistemas Linux, si instaló Firefox desde un repositorio o ya está instalado, su ubicación debería ser /usr/bin/firefox Si Firefox no está en la ubicación estándar, siempre puedes usar el comando find firefox para averiguar dónde se encuentra Firefox en tu sistema.
En este script, reemplaza la ruta de Firefox por la ruta adecuada para tu sistema. También podrías tener que ajustar la línea SSH para que refleje el comando que usaste anteriormente para establecer un túnel.
Usando un editor de texto
Crea un nuevo archivo con nano:
nano ~/socks.shAñade las siguientes líneas:
#!/bin/bash -e
ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@`your_domain`
/Applications/Firefox.app/Contents/MacOS/firefox &
- Reemplace el número de puerto con el que desee.
1337(Debe coincidir con lo que hayas configurado en Firefox) - Reemplace el usuario SSH@su nombre de host o IP
sammy@tu_dominioHacer /Aplicaciones/Firefox.app/Contenidos/MacOS/firefoxReemplace con la ruta binaria de Firefox para su sistema.
Guarda tu script. Para nano, pulsa CONTROL + o y, para salir, pulsa CONTROL + x.
Haga que el script sea ejecutable para que se ejecute al hacer doble clic en él. Desde la línea de comandos, use el comando chmod para agregar permisos de ejecución:
chmod +x /path/to/socks.shEn macOS, puede que tengas que hacer un paso adicional para indicarle que un archivo .sh debe ejecutarse como un programa y no abrirse en un editor. Para ello, haz clic derecho en el archivo socks.sh y selecciona "Obtener información".
Busca la sección "Abrir con:" y, si el triángulo desplegable no está hacia abajo, haz clic en él para ver el menú desplegable. Xcode podría estar configurado como la aplicación predeterminada.
Cámbielo a Terminal.app. Si no aparece, seleccione "Otros" y vaya a Aplicaciones > Utilidades > Terminal.app (quizás deba configurar el menú desplegable "Activo" de "Aplicaciones recomendadas" a "Todas las aplicaciones").
Para abrir su proxy SOCKS, haga clic en el archivo calcetines.sh Haz doble clic. El script abrirá una ventana de terminal, iniciará una conexión SSH e iniciará Firefox. Puedes cerrar la ventana de terminal sin problemas. Si has conservado la configuración del proxy en Firefox, puedes empezar a navegar a través de tu conexión segura.
Este script le ayudará a detener rápidamente el proxy, pero aún deberá seguir los pasos manuales enumerados anteriormente para encontrar el proceso ssh y matarlo cuando finalice.
Alias de línea de comandos
Si sueles usar la línea de comandos y quieres activar el túnel, puedes crear un alias de línea de comandos que lo haga automáticamente. Lo más difícil de crear un alias es determinar dónde almacenar el comando.
Las diferentes distribuciones de Linux y versiones de macOS almacenan alias en diferentes ubicaciones. Lo mejor es buscar uno de los siguientes archivos y alias Busca para ver dónde se almacenan otros alias. Las funciones incluyen:
- ~/.bashrc
- ~/.zshrc
- ~/.bash_aliases
- ~/.bash_profile
- ~/.perfil
Una vez que encuentre el archivo correcto, agregue el siguiente alias a cualquier archivo que ya tenga o al final del mismo. En el siguiente ejemplo, usamos el alias "firesox" para representar el túnel SOCKS, pero puede usar cualquier palabra como alias:
alias firesox='ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain && /Applications/Firefox.app/Contents/MacOS/firefox &'- Reemplace 1337 con el número de puerto deseado (debe coincidir con el que puso en Firefox)
- Reemplace sammy@your_domain con el nombre de host o IP de su usuario SSH.
- Reemplace /Applications/Firefox.app/Contents/MacOS/firefox con la ruta al binario de Firefox.
Tu alias solo se cargará al iniciar un nuevo shell, así que cierra la sesión de terminal e inicia uno nuevo. Ahora, al escribir:
firesoxEsto configurará tu alias de túnel, iniciará Firefox y te regresará a la línea de comandos. Asegúrate de que Firefox siga configurado para usar el proxy. Ahora puedes navegar de forma segura.
Paso 5 (opcional): Solución de problemas: cómo eludir los firewalls
Si tu conexión funciona, puedes continuar y dejar de leer. Sin embargo, si no puedes establecer una conexión SSH debido a un firewall restrictivo, es probable que el puerto 22, necesario para crear el túnel, esté bloqueado. Si puedes controlar la configuración del servidor proxy SSH (lo cual puedes hacer con acceso root a tu Droplet de DigitalOcean), puedes configurar SSH para que escuche en un puerto distinto del 22.
¿Qué puerto puedes utilizar que no esté bloqueado?
Los puertos que suelen estar abiertos incluyen el 80 (tráfico web general) y el 443 (TLS, tráfico web seguro).
Si su servidor SSH no ofrece contenido web, podemos indicarle que use uno de estos puertos web para la comunicación en lugar del puerto predeterminado 22. El puerto 443 es la mejor opción, ya que se espera que tenga tráfico cifrado en este puerto. El tráfico SSH se cifrará.
Desde una ubicación sin firewall, acceda por SSH al Droplet de DigitalOcean que está utilizando como proxy o use la consola integrada desde el panel de control de Digital Ocean.
Editar la configuración del servidor SSH:
sudo nano /etc/ssh/sshd_configBusque la línea Puerto 22.
Podemos reemplazar "22" por completo o añadir un segundo puerto para que SSH escuche. Optamos por que SSH escuche en varios puertos, así que añadimos una nueva línea debajo del puerto 22 que indica el puerto 443. Aquí tienes un ejemplo:
. . . Port 22 Port 443 . . .
Reinicie SSH para recargar la configuración que acaba de editar. Dependiendo de su distribución, el nombre del servidor SSH ghost puede ser diferente, pero probablemente sea ssh o sshd. Si uno no funciona, pruebe el otro:
sudo service ssh restartPara verificar que su nuevo puerto SSH esté funcionando, abra un nuevo shell (no cierre el actual todavía, en caso de que se haya bloqueado accidentalmente) y abra SSH usando el nuevo puerto:
ssh sammy@your_domain -p 443
Si tuvo éxito, ahora puede salir de ambos shells y abrir su túnel SSH usando el nuevo puerto:
ssh -i ~/.ssh/id_rsa -D 1337 -f -C -q -N sammy@your_domain -p 443La configuración de Firefox será la misma, ya que no depende del puerto SSH, solo del puerto del túnel (1337 arriba).
Resultado
Hoy en día, existen muchas maneras de navegar de forma segura cuando se está en una red potencialmente hostil, como la red wifi pública de una cafetería. En la mayoría de los casos, si se puede usar una VPN para proteger todo el tráfico, es preferible usarla. Sin embargo, tener un túnel SOCKS te ofrece la seguridad que necesitas al navegar por internet cuando no puedes usar una VPN o no confías en ella. Un túnel SOCKS es rápido de configurar y fácil de usar, y tienes control total sobre él. Es una excelente opción para una navegación segura.












