-- Leo's gemini proxy

-- Connecting to gemini.staminaonline.com:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

Pivotado de puertos con Chisel


Chisel es una herramienta muy útil para redigir puertos de una máquina a otra, la funcionalidad es similar a la proporciona ssh con su sistema de túneles, pero encapsulando los tuneles sobre un servicio http con websockets. La herramienta debe ser instalada en dos máquinas, una que hará de servidor y otra que hará de cliente.


Instalación de la herramienta


Para instalar la herramienta lo más simple es utilizar el onliner que tienen en su github

curl https://i.jpillora.com/chisel! | bash

Este comando instala el ejecutable en el bin path


Configuración del servidor


Primero, para las versiones más nuevas de chisel es necesario generar una clave para el servidor, muy fácil, hacemos:

chisel server --keygen archivo_clave.key

Una vez generado ya podemos ejecutar un servidor básico, por ejemplo con el siguiente comando:

chisel server --auth user:pass --port 4444 --keyfile archivo_clave.key --reverse

Aunque existe más parámetros pongo los básicos en el ejemplo, que son:

auth => permite configurar un usuario y una contraseña con la que el cliente de chisel deberá autenticarse de cara a poder establecer un tunel contra el servidor

port => permite indicar el puerto de escucha del servidor

keyfile => permite especificar el archivo con la clave generada a partir del keygen y servirá para cifrar el tráfico entre el cliente y el servidor (en realidad más que una clave lo generado es un certificado similar al que usa SSH)

reverse => permitir a los clientes establecer túneles de tipo inverso (en vez de que el cliente se traiga un puerto del servidor, hacer la operación inversa, que el cliente lleve un puerto al servidor)


Configuración del cliente


Ahora explico brevemente el uso del cliente con un ejemplo, aunque el formato de definición de los túneles es equivalente al que se define en ssh.

chisel client --auth user:pass host.com:4444 R:8086:8888 ....

Los parámetros mostrados son:

auth => configura el usuario y la contraseña pasada al servidor

host.com:4444 => hostname y puerto donde está situado el servidor

R:8086:8888 => tunel inverso TCP local de 8086 a remoto 8888

.... => se puede definir cuantos túneles se consideren necesarios


Por último como se definen los túneles, por un lado tenemos los directos, cuyo formato corresponde a:

    <host-local>:<puerto-local>:<host-remoto>:<puerto-remoto>/<protocolo>

host-local, por defecto es 0.0.0.0 (bind a todas las interfaces)

puerto-local, por defecto a igual que puerto-remoto

puerto-remoto, es obligatorio

host-remoto, por defecto a 0.0.0.0 (lo que implica el localhost del servidor)

protocolo, por defecto es tcp, pero puede ser udp


Para túneles inversos el formato sería:

    R:<interfaz-local>:<puerto-local>:<host-remoto>:<puerto-remoto>/<protocolo>

Para cualquier otra cosa chisel server y chisel client puede ser parametrizado con --help para ver más información


> Última actualización: 27 de Septiembre de 2023 a las 12:51 (CET)

-- Response ended

-- Page fetched on Mon May 20 16:49:43 2024