Cuando quieres publicar algo en la internet puedes acudir a comprar un dominio y a rentar un servidor de hosting compartido o rentar un servidor de mayor performance con proveedores como DigitalOcean.com, pero cuando quieres publicar un sitio anónimo en la deep web lo que requieres son cosas muy diferentes y aquí te digo como publicar tu sitio .onion en Centos 7.
Como instalar tu sitio .onion en Centos 7
Lo primero que tienes que hacer es instalar centos 7 con la opción «minimal install» y además en esa opción incluir las «Develpment Tools» al momento de la instalación.
Una vez que tengas instalado el servidos debes tener configurada al menos una interfaz de red que tenga asignada una IP y que tenga conectividad hacia la LAN.
Cuando tengas acceso a internet busca actualizar el servidor con el comando yum, así:
# yum update
Una vez que tengas el sistema actualizado debes instalar un servidor web con el que puedas publicar el contenido que deseas tener en tu hidden service dentro de la red Tor.
Instalar un servidor web
Para instalar este servidor puedes usar Lighttpd un servidor web ligero y que nos permite tener un buen desempeño y seguridad en poco espacio.
Ver: Como instalar Lighttpd en Centos 7
Instalar PHP para tu servidor web lighttpd
Si quieres tener en tu Hidden Service alguna página que requiera PHP entonces puedes instalarlo de forma que funcione con Lighttpd con el siguiente comando:
# yum install php php-fpm lighttpd-fastcgi php-gd php-mysql php-tidy php-xmlrpc php-common php-cli php-xml
Luego debes editar el siguiente archivo para cambiar los parámetros de user y group.
# vi /etc/php-fpm.d/www.conf
Y debes modificar los valores para que queden de la siguiente manera:
user = lighttpd group = lighttpd
Luego activa el servicio php-fpm y arranca el servicio para que php funcione
systemctl enable php-fpm.service systemctl start php-fpm.service
Luego debes modificar el archivo /etc/php.ini
vi /etc/php.ini
y quitar el comentario de la siguiente línea «;cgi.fix_pathinfo=1» eliminando el simbolo «;» para que quede así:
cgi.fix_pathinfo=1
Luego debes hacer lo mismo, editar el archivo /etc/lighttpd/modules.conf
vi /etc/lighttpd/modules.conf
y de nuevo debes quitar un comentario, es esta ocasión debes buscar la linea que dice “#include conf.d/fastcgi.conf” y debes eliminar el caracter «#» para que quede así:
include conf.d/fastcgi.conf
El siguiente paso que es editar el archivo /etc/lighttpd/conf.d/fastcgi.conf
vi /etc/lighttpd/conf.d/fastcgi.conf
Para agregar un pequeño texto luego, debes localizar el texto que dice: «#fastcgi.server = ( «.php» =>» y una linea antes debes de insertar el siguiente texto:
fastcgi.server += ( ".php" => (( "host" => "127.0.0.1", "port" => "9000", "broken-scriptfilename" => "enable" )) )
Por último debes reiniciar el servidor lighttpd para que los cambios se activen y puedas verificar que tu servidor puede procesar páginas php. Para hacerlo ejecuta este comando:
# systemctl restart lighttpd.service
Instalar una base de datos
Muchos de los scripts que puedes usar o crear para tu Hidden Service en tor pueden requerir el uso de una báse de datos y en centos 7 puedes instalar MariaDB que funciona prácticamente como Mysql con muchas mejoras. Para instalar tu báse de datos ve el siguiente post:
Ver: Como instalar MariaDB en Centos 7
Instalar Tor en Centos 7
Para instalar Tor en Centos 7 lo que debes hacer primero es instalar el repositorio para poder instalar los paquetes rpm y las futuras actualizaciones. Para hacerlo debes crear un archivo en el directorio /etc/yum.repos.d/ con el siguiente comando:
# vi /etc/yum.repos.d/tor.repo
Dentro de este archivo debes agregar el siguiente texto:
[tor] name=Tor repo enabled=1 baseurl=https://deb.torproject.org/torproject.org/rpm/el/7/$basearch/ gpgcheck=1 gpgkey=https://deb.torproject.org/torproject.org/rpm/RPM-GPG-KEY-torproject.org.asc [tor-source] name=Tor source repo enabled=1 autorefresh=0 baseurl=https://deb.torproject.org/torproject.org/rpm/el/7/SRPMS gpgcheck=1 gpgkey=https://deb.torproject.org/torproject.org/rpm/RPM-GPG-KEY-torproject.org.asc
El siguiente paso es modificar el repositorio EPEL ya que incluye también un paquete llamado tor y hay que desactivarlo para que no entre en conflicto con los paquetes que nos interesan. Edita el archivo /etc/yum.repos.d/epel.repo con el siguiente comando:
vi /etc/yum.repos.d/epel.repo
y agrega en las tres secciones del archivo una línea después de la linea «enabled» el testo «exclude=tor» para que se vea así:
enabled=1 exclude=tor gpgcheck=1
Graba el archivo y verifica que el origen del paquete tor sea el repositorio que has creado y no el de EPEL, para hacerlo ejecuta el siguiente comando:
yum update yum list | grep tor
Y comprueba que la salida corresponde a la siguente:
tor.x86_64 0.2.5.10-tor.2.rh7_0_1406 tor tor-debuginfo.x86_64 0.2.5.10-tor.2.rh7_0_1406 tor
la última columna indica el repositorio donde se encuentra el paquete y si dice cualquier cosa diferente de tor, entonces debes verificar el estado de los repositorios. Si ves la palabra «tor» en la 3er columna del texto entonces puedes proceder a instalar Tor en Centos 7. Para hacerlo, ejecuta el siguiente comando:
yum install tor
Ahora que Tor está instalado es momento de crear los hidden services con un usuario que no tenga privilegios de root. Para esto vas a crear un usuario al que podremos llama operador-tor.
# adduser operador-tor # passwd operador-tor
y luego inicia una sesión con este usuario y arranca el servicio
# su - operador-tor $ tor
Te mostrará una salida de texto parecida a esto:
$ tor Nov 10 16:33:46.424 [notice] Tor v0.2.5.10 (git-52198c0e51a1a8c1) running on Linux with Libevent 2.0.21-stable, OpenSSL 1.0.1e-fips and Zlib 1.2.7. Nov 10 16:33:46.424 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning Nov 10 16:33:46.424 [notice] Read configuration file "/etc/tor/torrc". Nov 10 16:33:46.436 [notice] Opening Socks listener on 127.0.0.1:9050 Nov 10 16:33:46.000 [notice] Parsing GEOIP IPv4 file /usr/share/tor/geoip. Nov 10 16:33:46.000 [notice] Parsing GEOIP IPv6 file /usr/share/tor/geoip6. Nov 10 16:33:46.000 [notice] We were built to run on a 64-bit CPU, with OpenSSL 1.0.1 or later, but with a version of OpenSSL that apparently lacks accelerated support for the NIST P-224 and P-256 groups. Building openssl with such support (using the enable-ec_nistp_64_gcc_128 option when configuring it) would make ECDH much faster. Nov 10 16:33:46.000 [notice] Bootstrapped 0%: Starting Nov 10 16:33:46.000 [notice] Bootstrapped 5%: Connecting to directory server
Presiona Ctrl+C y vas a interrumpir la ejecución de tor para configurar los servicios. Por último vas a deshabilitar que Tor arranque automáticamente para que lo puedas ejecutar con un usuario sin privilegios de root, para hacer esto ejecuta este comando:
# systemctl disable tor.service
Ajustando lighttpd para Tor
En un servidor que tenga Tor puedes crear uno o varios hidden services de manera simple y los puedes crear de la misma forma solo hay que repetir los pasos. Primero vamos a configurar algunos detalles en el servidor lighttpd para que el servicio http sea visto únicamente por el host local, es decir solo la ip 127.0.0.1 va a poder ver el servicio, así nos aseguramos que ningún otro host, en internet o en la LAN, pueda ver lo que publiquemos.
Para hacerlo edita el archivo /etc/lighttpd/lighttpd.conf
vi /etc/lighttpd/lighttpd.conf
Luego localiza la linea que dice «#server.bind = «127.0.0.1» y elimina el caracter «#» para dejar activa esa configuración, con ello nos aseguramos que solo la ip local pueda ver el contenido. Esta linea debe quedar así:
server.bind = "127.0.0.1"
Luego reinicia el servidor lighttpd con el siguiente comando:
# systemctl restart lighttpd.service
Para verificar esto puedes instalar el programa lynx y verificar localmente la página que viste cuando instalaste lighttp, esto lo haces con los siguientes comandos:
# yum install lynx # lynx 127.0.0.1
y te mostrará solo un texto parecido a esto:
Powered by lighttpd LIGHTTPD - fly light. Powered by GNU/Linux Powered by Lighttpd
Eso te indicará que puedes ver la página web por medio del servidor lighttpd en el host local, luego puedes verificar en otro equipo conectado a tu LAN que la página no se puede acceder desde otro host, al abrir un navegador y poner la ip de tu servidor te debe mostrar que la página no es accesible.
Puedes comentar y des comentar esta configuración y validar que funciona, es decir que accedas desde otro equipo y que puedas ver la página cuando la configuración server.bind = «127.0.0.1» esté comentada con el caracter «#» y que no sea accesible cuando borres ese caracter, grabes el archivo y reinicies el servicio lighttpd como te muestro en los comandos.
Creando un Hidden Service en Tor
Los pasos siguientes don para crear el Hidden Service, que puede ser accedido desde un browser Tor con un dominio .onion. Este tipo de dominios es gratuito y lo creas al momento de generar un Hidden Service y en tu Servidor Centos puedes crear tantos como quieras, aquí te doy los pasos para crear el primero.
Para crear un hidden service debes editar el archivo /etc/tor/torrc
vi /etc/tor/torrc
localiza el siguiente texto
#HiddenServiceDir /var/lib/tor/hidden_service/ #HiddenServicePort 80 127.0.0.1:80
y luego agrega enseguida de estas lineas la configuración de tu hidden service
HiddenServiceDir /home/operador-tor/hidden_service1/ HiddenServicePort 80 127.0.0.1:11131
Graba el archivo y luego crea el directorio que está en la configuración
# su - operador-tor $ mkdir hidden_service1 $ exit
Lo que estás indicando es que vas acrear un hidden service que tendrá en la carpeta /home/operador-tor/hidden_service1/ y que operará en el puerto 11,131 del host local, hasta aquí esta configurada la parte de tor.
Ahora debes crear el servicio http en el puerto 11,131 (o el que tu quieras configurar) en lighttpd, para hacer esto vas a editar el archivo /etc/lighttpd/lighttpd.conf
# vi /etc/lighttpd/lighttpd.conf
y al final del archivo vas a agregar las siguientes lineas:
$SERVER["socket"] == ":11131" { server.document-root = "/var/www/hidden_service1" }
Luego vas crear la carpeta donde vas a publicar el contenido para tu hidden service
# mkdir /var/www/hidden_service1
Y vas a crear un archivo llamado index.html que contendrá solo un texto y lo vas a crear con este comando
# echo "Mi Hidden Service 1" > /var/www/hidden_service1/index.html
Una vez echo esto debes reiniciar el servidor lighttpd para que los cambios tengan efecto
# systemctl restart lighttpd.service
Puedes verificar el contenido web del hidden service con el comando lynx
# lynx 127.0.0.1:11131
Si ves el texto que escribiste en el archivo index.html puedes estar seguro que todo está correcto.
Ahora solo falta iniciar el tor para publicar tu hidden service. Debes iniciar una sesión con el usuario «operador-tor» y luego arrancar tor, esto lo puedes hacer con los comandos siguientes:
#su - operador-tor $ tor &
Una vez que esté funcionando tor verás varias lineas de texto como estas:
Bootstrapped 80%: Connecting to the Tor network Bootstrapped 85%: Finishing handshake with first hop Bootstrapped 90%: Establishing a Tor circuit Tor has successfully opened a circuit. Looks like client functionality is working. Bootstrapped 100%: Done
Cuando este texto aparezca tu conexión a tor estará funcionando, ahora es tiempo de ver tu dominio .onion en funcionamiento.
Este dominio fue creado al momento en que arrancaste tor. Para conocer tu dominio solo debes ver el archivo hostname que fue creado en ese directorio del Hidden Service que configuraste y puedes verlo con el comando cat, así:
$ cat /home/operador-tor/hidden_service1/hostname u22cnvxoljbnkffs.onion
Para verificar que tu dominio .onion está funcionando puedes utilizar el Tor Borwser y buscar este dominios en la URL y te mostrará el texto que escribiste en el archivo index.html. Te muestro un ejemplo:
Cuando veas esto puedes tomarte una Cervezas bien frías para celebrar por que tienes tu dominio .onion funcionando dentro de la red tor o lo que llaman la Deep Web. Ahora lo que puedes hacer es publicar mas Hidden Services, solo sigue los pasos desde «Creando un Hidden Service en Tor» y sigue de nuevo los pasos usando Hidden_Service2 y un puerto como 11132, mata el proceso de tor y arrancalo de nuevo ademas de reiniciar el servidor lighttpd. Así de simple.
Espero que te haya sido de utilidad, recuerda que esto es una implementación básica de estos servicios y no cubre temas de seguridad, ni de anonimato total, síguelo bajo tu propio riesgo.
Tu Servidor y Amigo
Luis Armando Medina
Sígueme en Twitter: @larmedina