Categorías
Hacking Networking Services - Software

Preservando el Anonimato y Extendiendo su Uso – Servicios Anonimos, EEPSITES y SSH en I2P – Parte XXVI

EEPSITES EN I2P

Una de las características que más llaman la atención en I2P es la capacidad de publicar diferentes tipos de servicios de forma anónima en la red de I2P, de tal forma que estos puedan ser consultados por cualquier cliente que se encuentre navegando en la red de I2P. Estos servicios publicados son equivalentes a los Hidden Services que se exponen en TOR, sin embargo, los Servicios que se pueden exponer en I2P son mucho más rápidos y de fácil acceso en comparación con los Hidden Services en TOR sin sacrificar características tan importantes como la seguridad y desde luego el anonimato. Como se ha explicado anteriormente, cada instancia de I2P viene con un sitio web configurado por defecto (cada sitio web es llamado en el mundo de I2P como un eepsite), este eepsite se ejecuta en un servidor web Jetty que permitirá ejecutar aplicaciones web basadas en Java, soportando tecnologías tales como Servlets y JSP, la ubicación por defecto de dicho eepsite esta determinada por el mecanismo de instalación de I2P, si se ha instalado en modo “PORTABLE” la ruta de dicho eepsite se encuentra el directorio especificado como portable, en el caso contrario la ubicación será ~/.i2p/eepsite.

Por otro lado, todos los eepsites se deben crear como túneles en http://127.0.0.1:7657/i2ptunnel por defecto existe un túnel que apunta al sitio web instalado en la instancia de I2P, este túnel puede consultarse desde un navegador web (una vez se ha iniciado el servicio) en 127.0.0.1:7658. Ahora se enseñará el procedimiento que se debe de seguir para publicar un eepsite en la red de I2P para que otros usuarios puedan acceder a este:

  1. Si se desea editar el sitio web instalado por defecto solamente es necesario editar y/o subir ficheros al directorio <DIR_I2P>/eepsite/docroot allí se pueden ubicar ficheros estáticos tales como páginas HTML e imágenes.

  2. Una vez editado dicho fichero es necesario consultar la clave correspondiente al “local destination”, todos los destinos en I2P son claves de 512 bytes y estas claves deben ser traducidas a nombres de host que están en Base32, los cuales tienen una estructura muy similar a las direcciones *.onion de TOR. El valor de la clave para cada eepsite creado se debe consultar directamente desde su correspondiente túnel, el cual puede ser consultado en la aplicación I2PTunnel

  3. La clave de 512 bytes almacenada en el campo “Local Destination” terminada con “AAAA” puede ser registrada con un dominio propio en I2P, Para ello es necesario dirigirse hacia: http://stats.i2p/ y seleccionar la opción “Addressbook Services”. Una vez allí se debe seleccionar la opción “a key add form” en donde se solicitará ingresar la clave y el nombre de dominio que se desea registrar (se recomienda consultar con anterioridad si el nombre de dominio deseado se encuentra disponible consultando los AddressBook de SusiDNS). La siguiente imagen enseña el formulario que se debe rellenar para que el dominio quede registrado en la red I2P y sea accesible a otros usuarios.

  4. Con los pasos anteriores queda registrado el dominio en la red I2P, la siguiente pantalla que se enseña después del registro del dominio muestra información sobre el nombre del dominio recién creado con sufijo .i2p y un enlace con formato base32, el cual como ya se ha dicho, es muy similar a las direcciones *.onion en TOR. Es posible utilizar tanto la dirección en Base32 como directamente el nombre del dominio registrado en un navegador web configurado para trabajar con I2P, a efectos prácticos es exactamente igual, ya que ambas direcciones apuntan al mismo servicio. Con estos sencillos pasos el servidor EEPSITE ha quedado registrado en la red I2P

El mismo procedimiento anterior puede ser aplicado a sitios web existentes en internet, por ejemplo el presente blog se encuentra actualmente registrado en la red I2P con un dominio propio utilizando la configuración y todos los ficheros y documentos que se encuentran hospedados en un servidor en internet. El procedimiento para hacer esto es básicamente el mismo, solamente que en esta ocasión es necesario crear el túnel manualmente y apuntarlo al sitio web que se desea registrar en I2P tal como muestra la siguiente imagen.

Estas son las únicas propiedades que es necesario editar, lo demás se puede quedar como esta, después de guardar por primera vez este túnel, se podrá ver como se genera de forma automática el “local destination” Posteriormente este “Local Destination” es ingresado en el servicio de registro de I2P tal como se describió en lineas anteriores, tal como se enseña en la siguiente imagen.

Una vez finalizado el proceso de registro, automáticamente el servicio generará la dirección con formato Base32 asociada al dominio utilizado que será accesible desde el interior de la red I2P.

SSH EN I2P

Lo más común en I2P es publicar sitios web (eepsites) sin embargo no es el único tipo de servicio que se puede publicar en dicha red, de hecho, del mismo modo que es posible publicar diferentes tipos de servicios ocultos en TOR (Hidden Services) es posible crear túneles de prácticamente cualquier tipo de servicio que se encuentre en ejecución en la maquina local. Con TOR automáticamente se crea un servicio SOCKS que por defecto utiliza el puerto 9050 (ver entradas anteriores de esta serie para mayor información) este servicio normalmente es el punto de anclaje entre un Hidden Service publicado en TOR y sus correspondientes clientes. En una instancia de I2P no se inicia por defecto un servidor SOCKS como en TOR, no obstante es posible crear un túnel SOCKS desde I2PTunnel, el cual puede servir posteriormente como pasarela para los clientes que desean consultar el servicio publicado en la red I2P. Para esto se lleva a cabo el siguiente procedimiento:

  1. Crear el Servicio SSH en el interior de la red TOR, para ello es necesario crear un túnel estándar desde I2PTunnel en la sección de “I2P Server Tunnels”, en dicho túnel solamente es necesario indicar las opciones básicas correspondientes al servidor SSH tal como se enseña en la siguiente imagen

    Una vez que se pulse sobre el botón “Save” ubicado al final de la página se generará automáticamente el “Local Destination” correspondiente al servicio, del mismo modo en la barra de Status de I2PTunnel aparecerán los mensajes de configuración correspondiente, es importante anotar que en dicha interfaz se podrá ver el hostname del servicio recién creado en Base32 y con sufijo *.i2p, esta será la dirección del servicio que será utilizada por los clientes.

  2. Ahora que se ha creado el túnel “Server” es necesario crear el túnel “client” que servirá como pasarela para contactar con el servicio recientemente creado. En este caso el cliente será un servidor SOCKS 4/4A/5 el cual puede ser seleccionado en la sección de “I2P Client Tunnels”, la opción para crear este nuevo túnel cliente se encuentra ubicada al final de la página. En dicha opción solamente es necesario indicar los valores básicos que corresponden a la creación del servidor, es importante que el campo “Reachable by” tenga el valor correspondiente a lo que se desea hacer con el proxy SOCKS; por ejemplo si solamente se va a utilizar como proxy local, basta con especificar la dirección local “127.0.0.1” en el caso de que sea utilizado por el segmento de red, se utiliza la dirección IP del segmento de red local.

    Posteriormente, se inician ambos túneles creados (el túnel server con SSH y el túnel client con SOCKS). En el momento en el que se inician ambos servicios, automáticamente se generan los correspondientes mensajes en la sección de estatus, además también se enseña la dirección en Base32 del servicio SSH que será utilizada

  3. Ahora que todos los servicios desde I2P se encuentran en ejecución es el momento de probar que funciona correctamente, para ello se puede utilizar cualquier cliente SSH como por ejemplo Putty o directamente desde la consola (probablemente mucho más cómodo para la mayoría) en el caso de Putty es muy sencillo, solamente es necesario establecer el Proxy apuntando al puerto “6666” en la maquina local y posteriormente indicar como destino el hostname en base32 generado por I2P tal como se enseña en la siguientes imágenes:

    Como puede apreciarse, desde Putty es muy sencillo, desde linea de comandos tampoco es demasiado difícil y de hecho, ya se ha explicado en una entrada anterior de esta serie como utilizar un Proxy Socks para conectar un Hidden Service en TOR, en este caso el concepto es el mismo, dicha entrada se encuentra aquí: http://thehackerway.com/2011/10/28/preservando-el-anonimato-y-extendiendo-su-uso-%E2%80%93-utilizando-ssh-y-tor-juntos-%E2%80%93-parte-viii/

    Algunos de los procedimientos más habituales para esto es utilizar SOCAT, la utilidad Connect-Proxy o Corkscrew. Dado que esto ya se ha explicado en el enlace anterior, en esta ocasión solamente se va a utilizar Connect-Proxy para explicar como establecer una conexión desde el cliente hacia el servicio SSH remoto. Para ello es necesario editar el fichero de configuración /etc/ssh/ssh_config en el cual se incluirá la siguiente linea

    ProxyCommand connect -S localhost:6666 %h %p

    Posteriormente se ejecutará el comando SSH correspondiente especificando la dirección Base32 del servicio I2P (en este caso se ha indicado el usuario ROOT, puede ser cualquier usuario valido en el sistema evidentemente y el hostname también deberá corresponder al que anteriormente ha generado I2P (cada usuario que este probando esto deberá indicar el suyo propio).

    >ssh XXXXXXXXXXX.b32.i2p -l root

    Si el servicio solicita la contraseña del usuario (ya sea utilizando Putty o desde consola) indica que la configuración esta funcionando correctamente.

Seguramente una de las principales apreciaciones que se pueden resaltar en comparación de TOR, es sin lugar a dudas, la velocidad, los Hidden Services en TOR son realmente lentos, algo que es intrínseco a la plataforma y la arquitectura de TOR, con I2P estos servicios anónimos son muchísimo más rápidos (pero solamente pueden ser accedidos si se encuentran en el interior de la red I2P), esta es una de las apreciaciones iniciales que saltan a la vista, no obstante existen muchas más diferencias entre las redes anónimas más utilizadas actualmente (TOR, FreeNet y I2P) cuyo análisis comparativo será explicado en detalle en las últimas entradas de esta serie.

Por Daniel Echeverri

Formador e investigador en temas relacionados con la seguridad informática y hacking. Es el autor del blog thehackerway.com el cual ha sido el ganador del European Cybersecurity Blogger Awards 2021 en la categoría de “Best Technical Content“.

3 respuestas a «Preservando el Anonimato y Extendiendo su Uso – Servicios Anonimos, EEPSITES y SSH en I2P – Parte XXVI»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *