Cómo autoalojar tu sitio web en la dark web con Tor
Self-Hosting on the Dark Web

El autor explica paso a paso cómo publicar su sitio personal como servicio oculto de Tor. Configura un HiddenServiceDir y un HiddenServicePort en /etc/tor/torrc, apunta nginx a 127.0.0.1:8080 y genera una segunda compilación del sitio con la dirección .onion como baseURL. Sin certificados, DNS ni IP expuesta: la dirección deriva de una clave pública y Tor cifra todo de extremo a extremo.
No hay autoridad certificadora, ni DNS, ni IP expuesta: la dirección se deriva directamente de una clave pública, y la conexión está cifrada de extremo a extremo por Tor.
- p4bl0
Mi sitio web personal lleva años alojado en Tor. Es fácil hacerlo desde tu casa incluso detrás de un NAT porque, desde tu punto de vista, es una conexión saliente (lo que también lo convierte en una forma genial de exponer servicios locales incluso cuando estás detrás de un NAT y no tienes una IP estática), y por diseño tu IP personal queda oculta para tus visitantes.
Escribí sobre ello en 2600 hace casi diez años (¿¡ya?!). Puedes encontrar una copia de mi artículo aquí: https://pablorauzy.fr/outreach/2600/how-to-run-a-tor-hidden-...
Si tienes una copia Onion de tu sitio web, no olvides la cabecera http Onion-Location, que redirigirá automáticamente a los usuarios de Tor Browser a la versión onion del sitio web incluso si lo visitan en la dirección de la web clara.
Si a la gente le interesa, también tengo un artículo de seguimiento sobre I2P: https://pablorauzy.fr/outreach/2600/how-to-run-an-i2p-hidden...
- ivanmontillam
Lo que realmente me encanta de los sitios Onion es que, si son lo bastante grandes, la ingeniería de rendimiento se vuelve realmente específica de Tor. Algunos ejemplos:
- Incrustar los recursos como base64 (el src de la img del logo de la cabecera como base64, todo el CSS debería ir inline, etc.).
- Aprovechar CSS todo lo posible (si usas animaciones y transiciones, usa CSS todo lo posible para ellas, evita JS para eso).
- Asegurarte de que tu sitio web se renderice mayormente en el backend. Si vas a tener JS, tu sitio web debería funcionar sin él.
- La seguridad se vuelve REALMENTE divertida, es decir, evita ataques XSS, CSRF, inyección SQL y cualquier otro tipo de inyección todo lo posible.
Como alguien resume en otro comentario[0], mantén la verborrea al mínimo posible. Por verborrea entiendo que se refieren a empaquetar tantos datos como puedas en la misma conexión Keep-Alive. Evita hacer nuevas peticiones HTTP todo lo posible, ya que cada una podría asignarse a una nueva ruta Onion y ralentizar las cosas.
Si puedes enviar tu sitio web al navegador en una sola conexión, has ganado.
Siempre me ha impresionado el rendimiento de estos grandes sitios Onion; realmente llevan al límite la creatividad en ingeniería de software, dadas estas restricciones y la naturaleza de Tor.
--
[0]: https://news.ycombinator.com/item?id=49872320
EDIT: Formato de los puntos de la lista.
- basilikum
Probablemente quieras añadir la cabecera Onion-Location al sitio de la web clara para que Tor Browser pueda informar automáticamente al visitante sobre ello: https://community.torproject.org/onion-services/advanced/oni...
- mzajc
Además de usar un puerto separado, yo también sugeriría ejecutar el servicio oculto en una dirección de bind que no sea 127.0.0.1, por si alguna vez alojas otra cosa en ese puerto y olvidas desactivar el servicio oculto:
> HiddenServicePort 80 127.13.37.1:8080
> listen 127.13.37.1:8080;
De esta forma, los desconocidos no podrán conectarse a un servicio vinculado a 127.0.0.1, en caso de que alguna vez decidas reutilizar el puerto y olvides desactivar el servicio oculto.
También necesitarás usar puertos y/o direcciones de bind separados si alojas varios servicios ocultos y no quieres que la gente pueda correlacionarlos: si nginx no coincide con la cabecera Host, servirá el sitio que aparezca primero alfabéticamente.
- dherls
¿Cuál es el beneficio de construir el mismo sitio web dos veces con nombres de host diferentes en lugar de usar enlaces relativos al contenido en el mismo dominio?