Onion

Description

Servidor Web Oculto con Tor

Proyecto desarrollado durante el bootcamp de ciberseguridad de 42Madrid

Este proyecto tiene como objetivo la creación de un servicio web oculto accesible a través de la red Tor, permitiendo así publicar una página web estática bajo una URL .onion. A través de este ejercicio se busca comprender los fundamentos de los servicios ocultos y el uso seguro de conexiones anónimas.


🌐 ¿Qué es Tor y qué hicimos?

Tor es una red de anonimato que enruta el tráfico a través de múltiples nodos alrededor del mundo, protegiendo la identidad y privacidad del usuario. En este proyecto configuramos un servicio web oculto dentro de esta red, cumpliendo con una serie de requisitos técnicos relacionados con Nginx, SSH y Tor, todo ejecutado de forma aislada mediante contenedores Docker.

 


🧩 Requisitos principales del proyecto

  • El sitio web estático debe ser accesible únicamente a través de una URL .onion.

  • El servidor debe correr sobre Nginx (HTTP por puerto 80) y permitir acceso por SSH en el puerto 4242.

  • No se permite la apertura de otros puertos ni el uso de reglas de firewall.

  • Archivos de configuración requeridos: index.html, nginx.conf, sshd_config, torrc.


🐳 Arquitectura con Docker

El proyecto está dividido en dos contenedores principales:

🔧 Contenedor Server

Encargado de ejecutar los servicios de Nginx, SSH y Tor, junto con todas las configuraciones necesarias.
Se construye desde una imagen de Debian e instala los paquetes requeridos, copia los archivos de configuración y levanta los servicios.
Además, crea un usuario (sshusr) con acceso al servicio SSH (contraseña: onion).

💻 Contenedor Client

Diseñado para realizar pruebas de conexión SSH al servicio oculto. También basado en Debian, instala Tor y SSH, permitiendo el uso de torify para las conexiones.


⚙️ Makefile incluido

Se incluyó un Makefile para facilitar el despliegue del entorno:

  • make – Construye ambos contenedores e imágenes.

  • make server – Construye solo la imagen del servidor.

  • make client – Construye la imagen del cliente.

  • make exe – Lanza el contenedor cliente y abre una terminal Bash.

  • make clean – Elimina y detiene los contenedores.


🔐 Servicios ocultos

El contenedor del servidor genera dos URLs .onion dentro del volumen /srv/url/, una para el servicio HTTP y otra para SSH:

  • /srv/url/hidden_service/hostname → URL del servicio web

  • /srv/url/other_hidden_service/hostname → URL del servicio SSH

Para acceder al sitio, simplemente abre el navegador Tor e introduce la URL correspondiente. Para el servicio SSH, ejecuta dentro del cliente:

torify ssh sshusr@xxxxxxx.onion -p 4242

🧪 Extra (Bonus)

  • Fortificación del acceso SSH.

  • Sitio web estático mejorado (interactivo) sin frameworks, utilizando solo librerías externas permitidas.

  • Aislamiento completo del entorno para evitar comprometer el sistema real.

Details