Crear un hidden service (una pagina .onion) desde 0.
Buenas,
Como he mencionado en el post anterior, vamos a crearnos un servidor en la "Deep Web" o mejor dicho, la red de Tor.
La idea es básicamente crear una máquina virtual, instalar Debian, instalar Apache y PHP, instalar Tor, configurar lo para que actué de hidden service, abrir puertos y tirar a Internet. ¿Suena fácil? Pues lo es =)
Empecemos por configurar la máquina virtual. Yo utilizare VirtualBox pues es gratuito y una alternativa a tener un servidor, para los que tengan alguna Raspberry, algún router capaz de tirar de OpenWrt o simplemente un servidor.. perfecto, solo os tenéis que saltar el paso de configuración de VirtualBox.
Empezaremos por descargar Debian. La versión actual a fecha de hoy es Debian Wheezy 7.5. Con descargar una ISO Small CD basta.
Obviamente también nos hace falta VirtualBox → https://www.virtualbox.org/wiki/Downloads
Teniendo esto, nos vamos a VirtualBox y creamos una maquina nueva. De nombre la pondré "Tor Server", versión Linux Debian 32bit, 512Mb de RAM, imagen de disco Virtualbox (VDI) con tamaño dinámico pero limitado a 8Gb.
Una vez creada la maquina, antes de iniciarla vamos a configurar la. Seleccionamos la maquina, le damos a Settings (configuración), y:
- En la pestaña de Storage (almacenamiento) en el espacio vació de controlador IDE vamos a poner la ISO que acabamos de descargar. Es básicamente seleccionar "Vació", a la derecha darle al icono de disco, seleccionar disco virtual, buscar la ISO y listo.
- En la pestaña de Audio, vamos a deseleccionar la casilla "Enable Audio" (Habilitar audio). En recientes versiones de VirtualBox y Debian, al parecer hay un problema y la instalación se queda congelada si el audio esta habilitado.
- En la pestaña de Red, en Adaptador 1 vamos a seleccionar que es un Bridged Adapter (Adaptador Puente). Esto es importante ya que queremos conectarnos por SSH a nuestra maquina virtual para subir archivos y otras cosas.. y para ello es mejor que esta tenga su propia IP local.
Hecho esto, le damos a OK (Aceptar) y ya podemos iniciar la maquina virtual.
Una vez arrancada la maquina, le damos a Install (no el gráfico), esperamos que cargue y seguimos los pasos. Realmente es todo muy sencillo:
1 - Seleccionar el idioma
2 - Seleccionar el territorio (Other → resto de países/continentes).
3 - Seleccionar la configuración regional (fuentes)
4 - Seleccionar el mapa de teclado
5 - Seleccionar el host (puedes inventarte cualquier cosa..)
6 - Seleccionar el dominio (localhost)
7 - La contraseña root.. aseguraros de que sea segura.
8 - Nombre de usuario (el real*).. yo me llamare Ben Rodriguez ...
9 - Nick
10 - Contraseña de usuario.
11 - Zona horaria.
12 - Tabla de particiones. Puesto que lo hacemos para experimentar, Guiado - Usar el disco entero.
13 - Seleccionar disco..
14 - Todos los archivos en una partición (?), Finalizar, Guardar cambios.
15 - Seleccionar el servidor mas cercado... (sin proxy)
16 - No participar en la encuesta.
17 - De-seleccionar [Debian desktop enviroment] y [Print server]. (Usar espacio). Continuar.
18 - Instalar GRUB.
19 - Sacamos la unidad virtual del menú "dispositivos", damos a continuar y esperamos que cargue Debían.
Vamos a entrar con nuestro nick.
El siguiente paso es añadir nuestro usuario al grupo sudo y instalar el propio sudo.. para poder instalar el software que vamos a necesitar.
Para ello vamos a tener que utilizar un momento el usuario root. Comando: su y meter contraseña.
Una vez añadido, hay que desloguarse y volver a entrar para que tome en cuenta los efectos.
Y hecho esto, volvemos a loguear. Nos toca instalar Apache y PHP para ir montando el servidor..
Ponemos la contraseña y le damos a Y.
También nos hará falta un servidor SSH para poder controlar el servidor desde nuestro SO y subir archivos.. etc.
Nos hará falta asegurarnos de que no se pueden meter con el usuario root y que tampoco nos jodan a base de bruteforce así que.. vamos a editar el archivo de configuración.
Vamos a cambiar la linea PermitRootLogin yes por PermitRootLogin no
Guardamos (Ctrl + X , Y) y vamos a instalar denyhosts para evitar bruteforce.
Este servicio baneara las IP's que intenten hacer bruteforce en el archivo /etc/hosts Otro parecido es fail2ban que hace uso de iptables.
Bien, teniendo el servidor iniciado, nos hace falta darle permisos a la carpeta /var/www para que nuestro usuario pueda subir/modificar/tocar archivos sin pedir permisos a sudo. Al instalar apache se crea automáticamente un grupo de usuarios llamado www-data. Tenemos que formar parte de el así que..
Vamos ademas a comprar las acciones de /var/www..
Bien, ahora vamos a configurar Apache para que solo acepte conexiones de 127.0.0.1. Así, si alguien intenta conectarse al puerto 80 de nuestra IP real no podrá ver el contenido.. por tanto sera visible solo desde localhost o desde TOR =)
Vamos a modificar el vhost de Apache.
Cambiamos por . Guardamos (Ctrl + X, Y), y tambien toca cambiar el ports.conf
Cambiamos NameVirtualHost *:80 por NameVirtualHost 127.0.0.1:80 y Listen 80 por Listen 127.0.0.1:80. De nuevo guardamos y reiniciamos apche.
Y reiniciamos apache.
Por ultimo en esta parte, vamos a instalar UFW. UFW es un cliente-firewall que nos permite de manera sencilla bloquear ciertos puertos, y dado que a nosotros nos interesa tener solo unos pocos puertos abiertos, mejor que mejor.
Bien, nos queda lo mas importante instalar TOR.
Bien, una vez instalado, vamos a modificar lo para que actué de servidor.
Vamos un poco mas abajo de la linea:
############# This section is just for location-hidden services ###
Y quitamos la almohadilla (#) de las siguentes lineas.
Guardamos (Ctrl + X, Y) y reiniciamos tor.
Si todo ha ido bien, al escribir:
Nos saldrá.. el dominio .onion que nos ha sido asignado. En la carpeta /var/lib/tor/hidden_service hay dos archivos. El hostname que tiene el dominio asignado y el private_key que tiene el hash de dicho dominio. Si no queréis perder este dominio, os recomiendo que os hagáis una copia y la guardéis en algún lugar seguro xD.
Bien, si habéis hecho todo, y habéis apuntado la url del hidden service, ejecutando tor desde otro ordenador habitual y poniendo la url debería daros un resultado tal que así:
En la mayoria de las distros GNU/Linux el cliente ssh viene instalado por defecto. De no ser asi, basta con leeros la wiki de la distro. Si estais en Windows, podeis utilizar Putty.
Para ver la IP de la maquina virtual, podemos utilizar
En eth0, buscamos inet addr. Luego basta con conectarse a esa IP, aceptar que no es segura, poner nuestro usuario si hace falta, y nuestra contraseña. Desde aquí podeis hacer lo mismo que hemos estado haciendo hasta ahora.
Vamos a subir un archivo .php muy sencillo. Le dare de nombre phpinfo.php y contendra:
En una terminal de nuestra distro basta con:
Si estáis en PuTTy podéis leer esta explicación, pero es básicamente igual.
Y...
Bueno, esto es todo. Gracias por leer =)
Saludos
Como he mencionado en el post anterior, vamos a crearnos un servidor en la "Deep Web" o mejor dicho, la red de Tor.
La idea es básicamente crear una máquina virtual, instalar Debian, instalar Apache y PHP, instalar Tor, configurar lo para que actué de hidden service, abrir puertos y tirar a Internet. ¿Suena fácil? Pues lo es =)
Empecemos por configurar la máquina virtual. Yo utilizare VirtualBox pues es gratuito y una alternativa a tener un servidor, para los que tengan alguna Raspberry, algún router capaz de tirar de OpenWrt o simplemente un servidor.. perfecto, solo os tenéis que saltar el paso de configuración de VirtualBox.
Nota
Obviamente es mejor tener el hidden service en una maquina virtual o un servidor aparte. NO recomiendo para nada tenerlo configurado en nuestro SO principal ya que en caso de algún leak (brecha), se pueden ver afectados los datos personales.
Configurando VirtualBox
Empezaremos por descargar Debian. La versión actual a fecha de hoy es Debian Wheezy 7.5. Con descargar una ISO Small CD basta.
Obviamente también nos hace falta VirtualBox → https://www.virtualbox.org/wiki/Downloads
Teniendo esto, nos vamos a VirtualBox y creamos una maquina nueva. De nombre la pondré "Tor Server", versión Linux Debian 32bit, 512Mb de RAM, imagen de disco Virtualbox (VDI) con tamaño dinámico pero limitado a 8Gb.
Una vez creada la maquina, antes de iniciarla vamos a configurar la. Seleccionamos la maquina, le damos a Settings (configuración), y:
- En la pestaña de Storage (almacenamiento) en el espacio vació de controlador IDE vamos a poner la ISO que acabamos de descargar. Es básicamente seleccionar "Vació", a la derecha darle al icono de disco, seleccionar disco virtual, buscar la ISO y listo.
- En la pestaña de Audio, vamos a deseleccionar la casilla "Enable Audio" (Habilitar audio). En recientes versiones de VirtualBox y Debian, al parecer hay un problema y la instalación se queda congelada si el audio esta habilitado.
- En la pestaña de Red, en Adaptador 1 vamos a seleccionar que es un Bridged Adapter (Adaptador Puente). Esto es importante ya que queremos conectarnos por SSH a nuestra maquina virtual para subir archivos y otras cosas.. y para ello es mejor que esta tenga su propia IP local.
Hecho esto, le damos a OK (Aceptar) y ya podemos iniciar la maquina virtual.
Instalando Debian
Una vez arrancada la maquina, le damos a Install (no el gráfico), esperamos que cargue y seguimos los pasos. Realmente es todo muy sencillo:
1 - Seleccionar el idioma
2 - Seleccionar el territorio (Other → resto de países/continentes).
3 - Seleccionar la configuración regional (fuentes)
4 - Seleccionar el mapa de teclado
5 - Seleccionar el host (puedes inventarte cualquier cosa..)
6 - Seleccionar el dominio (localhost)
7 - La contraseña root.. aseguraros de que sea segura.
8 - Nombre de usuario (el real*).. yo me llamare Ben Rodriguez ...
9 - Nick
10 - Contraseña de usuario.
11 - Zona horaria.
12 - Tabla de particiones. Puesto que lo hacemos para experimentar, Guiado - Usar el disco entero.
13 - Seleccionar disco..
14 - Todos los archivos en una partición (?), Finalizar, Guardar cambios.
15 - Seleccionar el servidor mas cercado... (sin proxy)
16 - No participar en la encuesta.
17 - De-seleccionar [Debian desktop enviroment] y [Print server]. (Usar espacio). Continuar.
18 - Instalar GRUB.
19 - Sacamos la unidad virtual del menú "dispositivos", damos a continuar y esperamos que cargue Debían.
Configurando Debian
Vamos a entrar con nuestro nick.
Debian GNU/Linux 7 debian tty1 debian login: usuario Password:
El siguiente paso es añadir nuestro usuario al grupo sudo y instalar el propio sudo.. para poder instalar el software que vamos a necesitar.
Para ello vamos a tener que utilizar un momento el usuario root. Comando: su y meter contraseña.
usuario@debian:~$ su Password: root@debian:/home/usuario# apt-get install sudo root@debian:/home/usuario# adduser usuario sudo
Una vez añadido, hay que desloguarse y volver a entrar para que tome en cuenta los efectos.
root@debian:/home/usuario# exit usuario@debian:~$ logout
Y hecho esto, volvemos a loguear. Nos toca instalar Apache y PHP para ir montando el servidor..
usuario@debian:~$ sudo apt-get install apache2 php5
Ponemos la contraseña y le damos a Y.
También nos hará falta un servidor SSH para poder controlar el servidor desde nuestro SO y subir archivos.. etc.
usuario@debian:~$ sudo apt-get install openssh-server
Nos hará falta asegurarnos de que no se pueden meter con el usuario root y que tampoco nos jodan a base de bruteforce así que.. vamos a editar el archivo de configuración.
usuario@debian:~$ sudo nano /etc/ssh/sshd_config
Vamos a cambiar la linea PermitRootLogin yes por PermitRootLogin no
Guardamos (Ctrl + X , Y) y vamos a instalar denyhosts para evitar bruteforce.
usuario@debian:~$ sudo apt-get install denyhosts
Este servicio baneara las IP's que intenten hacer bruteforce en el archivo /etc/hosts Otro parecido es fail2ban que hace uso de iptables.
Bien, teniendo el servidor iniciado, nos hace falta darle permisos a la carpeta /var/www para que nuestro usuario pueda subir/modificar/tocar archivos sin pedir permisos a sudo. Al instalar apache se crea automáticamente un grupo de usuarios llamado www-data. Tenemos que formar parte de el así que..
usuario@debian:~$ sudo adduser usuario www-data
Vamos ademas a comprar las acciones de /var/www..
usuario@debian:~$ sudo chown usuario:www-data -R /var/www usuario@debian:~$ sudo chmod 0755 -R /var/www usuario@debian:~$ sudo chmod g+s -R /var/www
Bien, ahora vamos a configurar Apache para que solo acepte conexiones de 127.0.0.1. Así, si alguien intenta conectarse al puerto 80 de nuestra IP real no podrá ver el contenido.. por tanto sera visible solo desde localhost o desde TOR =)
Vamos a modificar el vhost de Apache.
usuario@debian:~$ sudo nano /etc/apache2/sites-enabled/000-default
Cambiamos
usuario@debian:~$ sudo nano /etc/apache2/ports.conf
Cambiamos NameVirtualHost *:80 por NameVirtualHost 127.0.0.1:80 y Listen 80 por Listen 127.0.0.1:80. De nuevo guardamos y reiniciamos apche.
Y reiniciamos apache.
usuario@debian:~$ sudo service apache2 restart
Por ultimo en esta parte, vamos a instalar UFW. UFW es un cliente-firewall que nos permite de manera sencilla bloquear ciertos puertos, y dado que a nosotros nos interesa tener solo unos pocos puertos abiertos, mejor que mejor.
usuario@debian:~$ sudo apt-get install ufw usuario@debian:~$ sudo ufw disable usuario@debian:~$ sudo ufw reset usuario@debian:~$ sudo ufw default deny incoming usuario@debian:~$ sudo ufw default allow outgoing usuario@debian:~$ sudo ufw allow 80 usuario@debian:~$ sudo ufw allow 9050 usuario@debian:~$ sudo ufw allow OpenSSH usuario@debian:~$ sudo ufw allow ntp usuario@debian:~$ sudo ufw enable
Instalar Tor
Bien, nos queda lo mas importante instalar TOR.
usuario@debian:~$ sudo apt-get install tor
Bien, una vez instalado, vamos a modificar lo para que actué de servidor.
usuario@debian:~$ sudo nano /etc/tor/torrc
Vamos un poco mas abajo de la linea:
############# This section is just for location-hidden services ###
Y quitamos la almohadilla (#) de las siguentes lineas.
HiddenServiceDir /var/lib/tor/hidden_service HiddenServircePort 80 127.0.0.1:80
Guardamos (Ctrl + X, Y) y reiniciamos tor.
usuario@debian:~$ sudo service tor restart
Si todo ha ido bien, al escribir:
usuario@debian:~$ sudo cat /var/lib/tor/hidden_service/hostname
Nos saldrá.. el dominio .onion que nos ha sido asignado. En la carpeta /var/lib/tor/hidden_service hay dos archivos. El hostname que tiene el dominio asignado y el private_key que tiene el hash de dicho dominio. Si no queréis perder este dominio, os recomiendo que os hagáis una copia y la guardéis en algún lugar seguro xD.
Bien, si habéis hecho todo, y habéis apuntado la url del hidden service, ejecutando tor desde otro ordenador habitual y poniendo la url debería daros un resultado tal que así:
Conexión por SSH
En la mayoria de las distros GNU/Linux el cliente ssh viene instalado por defecto. De no ser asi, basta con leeros la wiki de la distro. Si estais en Windows, podeis utilizar Putty.
Para ver la IP de la maquina virtual, podemos utilizar
usuario@debian:~$ sudo ifconfig
En eth0, buscamos inet addr. Luego basta con conectarse a esa IP, aceptar que no es segura, poner nuestro usuario si hace falta, y nuestra contraseña. Desde aquí podeis hacer lo mismo que hemos estado haciendo hasta ahora.
Subir un archivo
Vamos a subir un archivo .php muy sencillo. Le dare de nombre phpinfo.php y contendra:
<?php phpinfo(); ?>
En una terminal de nuestra distro basta con:
scp /ruta/del/archivo/elarchivo usuario@IPlocalMAQUINA:/var/www/
Si estáis en PuTTy podéis leer esta explicación, pero es básicamente igual.
Y...
Bueno, esto es todo. Gracias por leer =)
Saludos
Comentarios
Publicar un comentario