Configurando THERO: Crear un hotspot wifi y conectarlo a la red TOR.

Ya estamos de nuevo metidos con THERO de lleno y ya por fin estamos trabajando en el software/hardware de la pieza. Durante el proceso, vamos sacando muchas referencias, consultando tutoriales, listas de correo, etc y es por eso que pensé que quizás sería interesante que estas referencias sirvan de documentación para otros proyectos.
Para comenzar un poco con esta idea, aquí va el primer tutorial sobre como vamos haciendo partes del software de THERO. Sobre este tema de crear un Access Point a través de una Raspberry PI hay mucha documentación pero está en inglés y corresponde siempre a temas específicos, es decir, cada uno lo va a adaptando a sus necesidades. Por esto, creí interesante sacar está rama sobre como lo he ido programando y me va funcionando. Claro, tengo muchas lagunas y estoy seguro que quien se lo lea y sepa un poco más, encontrará fallos o incoherencias. POR FAVOR, sería genial que nos las hicieras saber a través de los comentarios o directamente al correo que está en está página.

Aviso: Pienso dejar el post en constante actualización con lo que seguro que a lo largo acabo añadiendo / quitando cosas.
Aviso II: Por favor, no uses esta configuración sin haber leído los pros y los contras de navegar de esta forma en la documentación de TOR. Mediante esta configuración se “Torifica” todos los dispositivos que conectes al access point pero eso no significa que estés a salvo de todas las vulnerabilidades de tu navegador. Siempre se aconseja usar Tor Browser debidamente configurado (Quizás en un próximo tutorial).

Pues bien, vamos a ello…sin miedo…

Requisitos. 
Conexión a internet por cable o inalámbrica.
Raspberry Pi 3.
WIFI dongle.

Pasos previos.
Instalar un VNC o alguna manera de compartir la pantalla es una buena idea.

Comenzamos.
Abrimos un terminal y nos conectamos con la raspberry por ssh (en mi caso lo hago así para trabajar más cómodamente, una vez que ya no necesito ver el escritorio):
sudo ssh pi@192.168.0.5

Y una vez que nos conectamos nos pedirá password del usuario en la PI, siempre por defecto el usuario es pi y el password  raspberry. 
Hacemos un update al sistema para dejarlo a la última.
sudo apt-get update
sudo apt-get upgrade

Y acto seguido instalamos Hostapd y Dnsmaq, nuestras principales herramientas. 
sudo apt-get install hostapd dnsmasq

Configuración de Hostapd:
Vamos a editar el archivo de configuración de Hostapd, ya que por defecto nos viene en blanco.
sudo nano /etc/hostapd/hostapd.conf

Y pegamos lo siguiente:
interface=wlan0  #Nuestra interface Wifi, wlan0, wlan1… 
driver=nl80211  #Driver wifi (La RPI 3 no lo necesita)
ssid=THERO_00  #Nuestro nombre de la wifi. 
hw_mode=g
channel=6
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=1234567890  #Password para el wifi que emitiremos. 
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Ctrl & Y y salvamos la configuración. A continuación necesitamos que por defecto este archivo se cargue en cada inicio del servicio Hostapd.
sudo nano /etc/default/hostapd

y modificamos #demon_conf=”” por demon_conf=”/etc/hostapd/hostapd.conf” y luego salvamos.

Perfecto, ahora vamos a configurar dnsmasq. Muy importante es ir poco a poco par ano saltarse ningún paso.

Configuración de dnsmasq:
Movemos y duplicamos el archivo de configuración para hacer otro nuevo con nuestra propia configuración.
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
sudo nano /etc/dnsmasq.conf

Y pegamos lo siguiente.

interface=wlan0 # Usamos la interface wlan0
listen-address=172.24.1.1 # Explicitly specify the address to listen on
bind-interfaces # Bind to the interface to make sure we aren’t sending things elsewhere
server=8.8.8.8 # Forward DNS requests to Google DNS
domain-needed # Don’t forward short names
bogus-priv # Never forward addresses in the non-routed address spaces.
dhcp-range=172.24.1.50,172.24.1.150,12h # Asignamos IP’s entre 172.24.1.50 and 172.24.1.150

Salvamos y nos vamos al siguiente paso, también importante: Habilitar el reenvío de paquetes para IPV4.
sudo nano /etc/sysctl.conf

Buscamos el comando net.ipv4.ip_forward=1 y lo descomentamos. Salvamos y esto habilitamos que en el próximo reinicio esté funcionando. Si eres muy impaciente:
sudo sh -c “echo 1 > /proc/sys/net/ipv4/ip_forward”

Y por último con Dnsmasq, nos toca compartir la conexión de internet con todos los dispositivos conectados a nuestra PI, a través de los diferentes adaptadores que tengamos conectados físicamente a la placa. Para ello debemos de configurar nuestra NAT para que permita el trafico entre los adaptadores. Lo hacemos con los siguientes adaptadores:

Así sería para hacerlo entre el puerto ethernet y el adaptador wifi0 (Con el que serviremos internet)
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state –state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Y así para hacerlo entre el adaptador Wifi conectado también a nuestro router y el adaptador wifi0 (Con el que serviremos internet)
sudo iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
sudo iptables -A FORWARD -i wlan1 -o wlan0 -m state –state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan1-o eth0 -j ACCEPT

Estos permisos permiten que THERO o nuestro proyecto pueda conectarse indistintamente, por cable o por wifi, a nuestro router y así no depender de estar cerca físicamente del cable. También nos permite usar una raspberry pi como una extensión de nuestra red. Super importante es guardar estos cambios correctamente, lo hacemos así.
sudo sh -c “iptables-save > /etc/iptables.ipv4.nat”

Para que estos cambios se conserven en cada reinicio también debemos hacer entrar en sudo nano /etc/rc.local y antes de exit 0, añadir lo siguiente:
iptables-restore < /etc/iptables.ipv4.nat

ATENCIÓN: Hay mucha gente que tiene problemas para guardar estas configuraciones debido a permisos. Yo me volví loco en este paso, hay bastantes referencia por ahí con este tema. 

Seguimos, ahora vamos a configurar las interfaces, es decir, todos los adaptadores que tenemos conectados con una IP estática y alguna cosa más. Es hora de abrir una cerveza, ya estamos cerca del final 😉
sudo nano /etc/network/interfaces

Primero vamos a buscar el adaptador con el que queremos emitir wifi y lo configuramos poniendo lo siguiente. Importante comentar el wpa_supplicant.conf.
allow-hotplug wlan0
iface wlan0 inet static
address 172.24.1.1
netmask 255.255.255.0
network 172.24.1.0
broadcast 172.24.1.255
# wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Por último y con este archivo, nos vamos al final y guardamos la configuración para que cuando arranquen se inicien las rutas que antes configuramos.
up iptables-restore

En el caso de que tengamos otro adaptador wifi, vamos a configurarlo para que este se conecte automáticamente a la wifi que deseemos. En /etc/network/interfaces deberíamos tener otra sección que pone allow-hotplug wlan1 y la cual vamos a dejarla como está pero vamos a configurar el archivo wpa_supplicant.conf para que este si que busque la wifi que le corresponde a este adaptador.
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Y pegamos lo siguiente:
network={
ssid=”mySSID”
psk=”Router Password”
key_mgmt=WPA-PSK
}

Ok, de momento vamos a reiniciar todo el sistema de conexiones:
sudo service dhcpcd restart
sudo service hostapd start
sudo service dnsmasq start

Y antes de probar nuestro hotspot dejamos estos scripts en el inicio de nuestra maquina.
sudo update-rc.d hostapd enable
sudo update-rc.d isc-dhcp-server enable

Probamos a arrancar manualmente el hotspot. En teoría deberías de tener internet si te conectas con cualquier dispositivo, revisa los pasos por si algo no estuviera configurado correctamente.
sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf

En la consola remota deberíamos de ver algo similar a esto.

img_4394-copy
Como podemos ver en la foto, mediante el VNC comprobamos que todo funciona correctamente y nuestros adaptadores están configurados.

img_4373-copy
Instalar y configurar TOR:

Instalamos TOR:
sudo apt-get install tor

Cuando lo tengamos instalado, nos vamos el archivo de configuración de TOR.
sudo nano /etc/tor/torrc

Y ponemos lo siguiente en la parte de arriba:
Log notice file /var/log/tor/notices.log
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.12.1
DNSPort 53
DNSListenAddress 192.168.12.1

Esta configuración informa a TOR sobre nuestras IP’s del access point y pregunta si debe volver anónimo todo el trafico que pasa a través de el. Lo siguiente que tenemos que es cambiar de nuevo la NAT para que nuestro adaptador pase a través de TOR.  Y comenzamos con borrar nuestros anteriores settings:
sudo iptables -F
sudo iptables -t nat -F

Igualmente, vamos a hacer una excepción para poder seguir accediendo a la Raspberry Pi por el puerto 22 vía ssh.
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp –dport 22 -j REDIRECT –to-ports 22

Y ahora añadimos dos normas más para las búsquedas DNS y otro para direccionar todo el tráfico a través del puerto 9040 que es el que usa Tor.
sudo iptables -t nat -A PREROUTING -i wlan0 -p udp –dport 53 -j REDIRECT –to-ports 53
sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp –syn -j REDIRECT –to-ports 9040

Y de nuevo tenemos que salvar todo esto:
sudo sh -c “iptables-save > /etc/iptables.ipv4.nat”

Ahora arrancamos el servicio TOR y hacemos que se guarde en el inicio.
sudo service tor start
sudo update-rc.d tor enable

Y de nuevo probamos manualmente con sudo /usr/sbin/hostapd /etc/hostapd/hostapd.conf

et voilà!
img_4392-copy

Aquí van todas las referencias y tutoriales de donde he sacado toda esta información y con los que he confeccionado este tutorial:
http://www.techradar.com/how-to/computing/how-to-use-a-raspberry-pi-to-browse-anonymously-1305789
http://www.raspberryconnect.com/network/item/315-rpi3-auto-wifi-hotspot-if-no-internet
https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/

Y aquí va una pequeña lista de links para la resolución de posibles problemas durante el proceso:

Con dnsmasq y sus errores:
https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=128449

Clonar la tarjeta con el sistema ya configurado, importante esto:
https://smittytone.wordpress.com/2013/09/06/back-up-a-raspberry-pi-sd-card-using-a-mac/


Tags: , , , , , , , , , , , ,

Leave a Reply

Your email address will not be published. Required fields are marked *