elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Recopilación de Tutoriales y Manuales del blog ordenados por categorías


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Seguridad (Moderador: r32)
| | |-+  HostingMobile - Hostea servicios desde móviles y redes CG-NAT
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: HostingMobile - Hostea servicios desde móviles y redes CG-NAT  (Leído 660 veces)
@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.458


Turn off the red ligth


Ver Perfil WWW
HostingMobile - Hostea servicios desde móviles y redes CG-NAT
« en: 21 Diciembre 2025, 06:35 am »

HostingMobile - Hostea servicios desde móviles y redes CG-NAT

Hostea servicios directamente desde dispositivos móviles y redes CG-NAT con coste de infraestructura cero.





Descripción general

HostingMobile te permite exponer servicios locales (HTTP/HTTPS, SSH, RDP, TCP, ...) desde cualquier dispositivo detrás de Carrier-Grade NAT (CG-NAT) u otras redes sin necesidad de port forwarding, IPs públicas o infraestructura de servidores. Todo el tráfico se enruta a través de la red edge de Cloudflare con cifrado extremo a extremo. Solo 5 pasos.

Características principales

  • Bypass CG-NAT: Funciona con datos móviles, restricciones de ISP y cortafuegos corporativos
  • Infraestructura cero: Sin VPS, sin servidor dedicado, sin cuotas de suscripción
  • Protocolo agnóstico: Soporte nativo para HTTP, SSH, RDP, TCP y UDP vía QUIC
  • Producción-ready: Soporte para dominios personalizados con certificados SSL gratuitos
  • Multiplataforma: Termux, Android, Linux, Raspberry Pi



Requisitos previos

  • Cuenta de Cloudflare (gratuita, no requiere tarjeta de crédito)
  • Nombre de dominio (se proporcionan opciones gratuitas a continuación)
  • Entorno de terminal Linux (Termux + proot-distro, o Linux nativo o Windows)
  • Node.js (opcional, para el servidor de ejemplo)

Citar
Esta guía no es para Windows, pero puedes seguirla y adaptarla



Paso 1: Adquisición de dominio

Opción A: DigitalPlat (Recomendado - Aprobación instantánea)

DigitalPlat proporciona dominios gratuitos tras el cierre de Freenom:

1. Regístrate en DigitalPlat FreeDomain
2. Completa la verificación con GitHub OAuth
3. Registra el dominio: tuproyecto.dpdns.org
4. Configura los nameservers a Cloudflare (obtenidos en el Paso 2)

¿Por qué DigitalPlat?

Activación instantánea (sin espera)
Control total de DNS
Compatible con CG-NAT
No requiere tarjeta de crédito

Opción B: EU.org (Estable pero lento)

Para proyectos a largo plazo:

1. Envía solicitud en nic.eu.org
2. Espera ~2 meses para procesamiento manual
3. Configura nameservers de Cloudflare tras aprobación

Opción C: DuckDNS (Subdominio alternativo)

Si no puedes obtener un TLD:

1. Regístrate en DuckDNS.org
2. Crea subdominio: tuproyecto.duckdns.org
3. Limitación: No se puede usar proxy de Cloudflare (solo Tunnel directo)



Paso 2: Configuración DNS de Cloudflare

1. Añade tu dominio al Dashboard de Cloudflare
2. Selecciona el Plan Gratuito y continúa
3. Copia los dos nameservers asignados (formato: name.ns.cloudflare.com)
4. Configura los nameservers en tu registrador de dominio
5. Espera la propagación: 2 minutos a 48 horas
6. Verifica en Cloudflare: El estado muestra "Active"



Paso 3: Instalar Cloudflared CLI

Termux (Android)

Código
  1. # Descargar el último binario ARM
  2. # Para arquitectura ARM de 64 bits
  3. curl -L "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64" -o cloudflared
  4. # Para arquitectura ARM de 32 bits (smartphones antiguos)
  5. curl -L "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm" -o cloudflared
  6.  
  7. # Dar permisos de ejecución
  8. chmod +x cloudflared
  9.  
  10. # Convertirlo en un comando global
  11. mv cloudflared ~/../usr/bin/
  12.  
  13. # Probar que funciona
  14. cloudflared --version

Debian/Ubuntu/GNU-Linux

Código
  1. curl -L "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64" -o cloudflared
  2. chmod +x cloudflared
  3. sudo mv cloudflared /usr/local/bin/



Paso 4: Prueba rápida (URL temporal)

Propósito: Verificar la conectividad antes de la configuración permanente.

1. Inicia el servidor de ejemplo (o tu propio servicio):

Código
  1. # Clonar repositorio
  2. git clone https://github.com/stringmanolo/hostingmobile
  3. cd hostingmobile
  4. npm install
  5. node index.js &

2. Lanza un túnel temporal:

Código
  1. cloudflared tunnel --url http://localhost:3000

3. Accede a la URL proporcionada (formato: https://random-words.trycloudflare.com)
4. Resultado esperado: "Hello World from behind CG-NAT!"

⚠️ CRÍTICO: Las URLs de trycloudflare.com cambian en cada reinicio. Procede al Paso 5 para una solución permanente.



Paso 5: Túnel persistente con dominio personalizado

1. Autenticar Cloudflared

Código
  1. cloudflared tunnel login
  2. # Sigue las instrucciones del navegador y selecciona tu dominio

2. Crear túnel nombrado

Código
  1. cloudflared tunnel create hostingmobile-tunnel # cambia hostingmobile por el nombre de tu proyecto/web/servicio
  2. # Guarda el UUID: a1b2c3d4-e5f6-7890... y nunca lo compartas

3. Enrutar DNS

Código
  1. cloudflared tunnel route dns hostingmobile-tunnel tu-dominio.org
  2. # o hazlo usando la web en https://dash.cloudflare.com/173763727228282828/tu.domain.dpdns/dns/records
  3. # Ve a tu dominio, haz clic en los puntos y crea un nuevo registro DNS para tu dominio.
  4. # Selecciona CNAME y añade el subdominio (ejemplo: cgnat-bypass.stringmanolo.dpdns) y pon tu UUID.cfargotunnel.com como destino y crea el registro.
  5. # Por ejemplo: 1a11111a-11a1-1a11-a1a1-aa1aa11a11aa.cfargotunnel.com

4. Crear archivo de configuración

Código
  1. # Usa tu editor de texto favorito.
  2. vi ~/.cloudflared/config.yml

Pega esta configuración (reemplaza los valores por los tuyos):

Código
  1. tunnel: cgnat-bypass
  2. credentials-file: /root/.cloudflared/1a11111a-11a1-1a11-a1a1-aa1aa11a11aa.json
  3. ingress:
  4.  - hostname: cgnat-bypass.stringmanolo.dpdns
  5.    service: http://localhost:3000
  6.  - service: http_status:404

5. Ejecutar el servicio

Código
  1. # Inicia tu servidor en segundo plano si hiciste el paso 4.
  2. node index.js & # Esto iniciará un servidor HTTP básico HelloWorld en el puerto 3000
  3.  
  4. # Inicia el enrutamiento con el archivo de configuración
  5. cloudflared tunnel --config config.yml run

Citar
Has terminado: Tu servicio debería ser accesible. Puedes instalar apache, nginx, postgresql, etc. y configurarlo como un servidor de hosting normal.



Paso 6: Exponer protocolos adicionales

Cloudflare Tunnel soporta cualquier servicio basado en TCP:

Código
  1. ingress:
  2.  - hostname: ssh.tu-dominio.org
  3.    service: ssh://localhost:22
  4.  - hostname: rdp.tu-dominio.org
  5.    service: rdp://localhost:3389
  6.  - hostname: tcp.tu-dominio.org
  7.    service: tcp://localhost:8080
  8.  - hostname: tu-dominio.org
  9.    service: http://localhost:3000
  10.  - service: http_status:404

Asegúrate de crear el registro CNAME para cada subdominio.

Citar
_Puedes usar tcp:// para cualquiera de ellos, pero usando el nombre del protocolo (ejemplo ssh://) permite a Cloudflare ayudarte a proteger un poco el protocolo por defecto_

Creo que Cloudflare no soporta el protocolo UDP en el plan gratuito. Puedes usar herramientas como Chisel para encapsular el tráfico sobre tcp. Asegúrate de que no viola las TOS de Cloudflare para no recibir un ban.

Nota de seguridad: Para SSH/RDP, habilita Cloudflare Access (Zero Trust) para prevenir ataques de fuerza bruta.



Paso 7: Verificación y monitorización

Verificar estado del túnel

Código
  1. # Logs en tiempo real
  2. journalctl -u cloudflared -f
  3.  
  4. # Información del túnel
  5. cloudflared tunnel info hostingmobile-tunnel

Verificación externa

Puedes usar servicios gratuitos como urlscan.io para confirmar rápidamente la accesibilidad pública:

Citar
Puedes comprobar el mío para ver cómo debería verse: https://urlscan.io/result/019b3f06-2816-7068-8904-456b13c9fd90/

Monitorización de uptime (gratuita)

Configura UptimeRobot para monitorizar tu-dominio.org y recibir alertas si el túnel cae.



Mejores prácticas de seguridad

1. Habilitar Cloudflare Access (Zero Trust)

Restrinje SSH/RDP a usuarios autenticados:

Código
  1. # Configura en Cloudflare Dashboard → Zero Trust → Applications

2. Forzar HTTPS

Cloudflare proporciona certificados SSL gratuitos. Habilita "Always Use HTTPS":

Código
  1. # Cloudflare Dashboard → SSL/TLS → Edge Certificates

3. Ocultar cabeceras del servidor

En tu servicio, elimina las cabeceras de identificación:

Código
  1. response.headers.delete('x-powered-by');
  2. response.headers.delete('server');

4. Rate Limiting

Crea un Cloudflare Worker para proteger contra abusos:

Código
  1. addEventListener("fetch", (event) => {
  2.  event.respondWith(handleRequest(event.request));
  3. });
  4.  
  5. async function handleRequest(request) {
  6.  // Lógica de rate limiting aquí
  7.  return fetch(request);
  8. }



Solución de problemas

Dominio no resolviendo

Código
  1. # Verificar propagación DNS
  2. dig +short ns tu-dominio.dpdns
  3.  
  4. # Si está atascado, vuelve a crear la ruta o intenta usar la web para crear un nuevo registro
  5. cloudflared tunnel route dns hostingmobile-tunnel tu-dominio.org

Conexión del túnel rechazada

Código
  1. # Verifica que el servicio local está escuchando introduciendo la siguiente dirección en tu navegador
  2. http://localhost:3000
  3.  
  4. # Verifica logs de cloudflared
  5. journalctl -u cloudflared -n 50 --no-pager

Problemas de permisos

Código
  1. # Arreglar permisos
  2. chown -R ~/.cloudflared



Desglose de costes

ComponenteCosteNotas
Dominio (DigitalPlat)€0Gratuito con verificación de GitHub
Cloudflare€0Tier gratuito (túneles ilimitados)
Cloudflared€0Open-source
Certificado SSL€0Auto-provisionado
Ancho de banda€0100GB/mes incluido

TOTAL: €0 de infraestructura permanente



Contribuciones

¡Las contribuciones son bienvenidas! Áreas de enfoque:

  • Scripts de configuración automatizados para múltiples plataformas
  • Ejemplos de protocolos adicionales (UDP, QUIC)
  • Guías de endurecimiento de seguridad
  • Integración con registradores alternativos



Objetivo del proyecto: Permitir que cualquiera pueda hostear servicios desde redes móviles/CG-NAT con coste de infraestructura cero.



Creado por StringManolo | Repositorio en GitHub


« Última modificación: 21 Diciembre 2025, 06:42 am por @XSStringManolo » En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines