Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Túnel TCP con Cloudflare Tunnel


El tunelado TCP es útil porque puedes reenviar conexiones que no son sólo sitios web ejecutando HTTP(s). Los casos de uso donde esto se aplica es el reenvío de cosas como SSH, RDP o Postgres. Recientemente quise usar Cloudflare Tunnels para reenviar conexiones TCP para mi base de datos. Esto me permitiría acceder a mi base de datos desde cualquier parte del mundo usando un túnel seguro y protegido.

 


 

Protocolos Soportados

ServicioDescripciónEjemplo service valor
HTTP/SIncoming HTTP requests are proxied directly to your local service.https://localhost:8000
HTTP over Unix socketJust like HTTP, but using a Unix socket instead.unix:/home/production/echo.sock
HTTPS over Unix socketJust like HTTPS, but using a Unix socket instead.unix+tls:/home/production/echo.sock
TCPTCP connections are proxied to your local service.tcp://localhost:2222
SSHSSH connections are proxied to your local service. Learn more.ssh://localhost:22
RDPRDP connections are proxied to your local service. Learn more.rdp://localhost:3389
kubectl bastion modecloudflared will act like a jumphost, allowing access to any local address.bastion
Hello WorldTest server for validating your Cloudflare Tunnel setup.hello_world
HTTP statusResponds to all requests with the given HTTP status.http_status:404

Tunnel TCP

 

Los túneles TCP con CFT requieren que cloudflared se esté ejecutando tanto en el nodo de destino como en todos los nodos cliente conectados. (Esto sólo se aplica para TCP sin procesar y no para protocolos de capa 7). Vamos a instalarlo.

sudo apt-get update; sudo apt-get -y install cloudflared


Autentifica el nodo servidor con cloudflared tunnel login y abre el enlace para autenticar en tu navegador. Ahora podemos crear nuestro túnel.

cloudflared tunnel create postgres


Esto creará un túnel con un UUID. Anota el ID y vamos a configurar una ruta DNS que se utilizará para transportar nuestros paquetes desde nuestro reenviador local a través de la red de transporte de Cloudflare.



cloudflared tunnel route dns <TUNNEL_UUID> <SUBDOMINIO_DESEADO>


Su subdominio deseado sería algo así como base de datos. Ahora debe tener un registro CNAME DNS personalizado aliasing base de datos.<TU_DOMINIO>.com al dominio del túnel.

Ahora vamos a configurar nuestro cloudflared config YAML ubicado en ~/.cloudflared.
~/.cloudflared/config.yaml

tunnel: <TUNNEL_UUID>
credentials-file: <PATH_TO_TUNNEL_UUID>.json
 
ingress:
  - hostname: <SUBDOMAIN>.<YOURDOMAIN>.com
    service: tcp://<PRIVATE_INTERNAL_IP>:<PORT>
    # catch all
  - service: http_status:404


Inicia el túnel con cloudflared tunnel run. Esto es bueno para pruebas efímeras, pero vamos a configurarlo para que se inicie automáticamente como un servicio de Linux.

# instalar el servicio cloudflared
sudo cloudflared --config ~/.cloudflared/config.yml service install



Puedes editar la configuración del servicio con:

  sudo vim /etc/systemd/system/cloudflared.service. 

Para asegurarte de que se está ejecutando, comprueba el estado del servicio con:

  systemctl status cloudflared.


Ahora que el túnel se está ejecutando, el cliente necesita conectarse también. Asegúrate de que cloudflared fue instalado en el cliente y también autenticado.

cloudflared access tcp --hostname <SUBDOMAIN>.<YOURDOMAIN>.com --url 127.0.0.1:<LOCAL_PORT_FORWARD>


El comando anterior tomará las conexiones TCP enviadas a localhost:5432 en mi caso y empujará los paquetes sobre el túnel asociado con el nombre de host especificado. En mi caso con Postgres, simplemente me conecto a la IP del host 127.0.0.1 con el puerto 5432 y será reenviado al nodo servidor Postgres.

Puede ver la documentación de Cloudflare Tunnel aquí.

Usuario RDP

 

cloudflared access rdp --hostname rdp.example.com --url rdp://localhost:3389

 

Usuario SMB

cloudflared access tcp --hostname smb.example.com --url localhost:8445


Fuentes:

https://ryan-schachte.com/blog/cf_tunnel_tcp/


0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.