OnionPi

Vamos a utilizar nuestra Raspberry Pi para crear un punto de acceso, en el cual toda la información pasa por la red TOR y al cual podremos conectarnos para navegar de forma anónima.

Vamos a utilizar nuestra Raspberry para hacer un punto de acceso, en el cual toda la información pasa por la red TOR y al cual nosotros podremos conectarnos para navegar de forma anónima. Qué es TOR: http://es.wikipedia.org/wiki/Tor

Necesitamos:

1. Raspberry Pi, modelo B revisión 1 o 2.

2. Una tarjeta SD de 8GB o más, o un adaptador de microSD a SD y una microSD de 8GB o más. También nos puede servir una de 4 GB.

3. Un adaptador wireless USB, en concreto yo he usado un nano USB wireless con el chip Realtek, parecido a este: http://raspberryplugandplay.com/index.php?id_product=15&controller=product&id_lang=1 (No me dan comisión ni nada).

4. Una imagen (OS) para nuestra Raspberry, ya instalada. Yo utilizo esta. Instalar el sistema operativo es realmente fácil y existen multitud de tutoriales.

Aunque el proceso es sencillo, por cualquier problema concreto que no os deje avanzar podéis escribirme a edh@autistici.org.

1. Raspberry AP.

Lo primero que necesitaremos hacer es configurar nuestra Raspberry como un punto de acceso wifi, pára lo cual utilizaremos hostap. Asegurate de que tienes conexión a internet vía Ethernet, nos conectamos por ssh o le enchufamos un teclado y continuamos con:

sudo apt-get install hostapd isc-dhcp-server
sudo apt-get update   #por si acaso.

Una vez instalado esto, pasaremos a configurar nuestro servidor DHCP. Así el punto de acceso asignará IPs de forma automática a los que se conecten.

sudo nano /etc/dhcp/dhcpd.conf

Dentro del archivo, buscamos las líneas:

option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

Y las comentamos:

#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

Ahora buscamos estas lineas:

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

Y descomentamos la última:

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative;

Añadimos estas líneas al final del archivo:

subnet 192.168.42.0 netmask 255.255.255.0 {
range 192.168.42.10 192.168.42.50;
option broadcast-address 192.168.42.255;
option routers 192.168.42.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Acabamos de definir el rango de IPs, la puerta de enlace predeterminada, netmask y DNS’s.
Guardamos: ctrl+O, enter, y salimos: ctrl+X (si estás copiando y pegando o usas nano).
Ahora vamos a configurar el dispositivo que va a correr DHCP:

sudo nano /etc/default/isc-dhcp-server

Dentro del archivo, en la línea que pone INTERFACES=””, ponemos el nombre de nuestra tarjeta de red. En este caso yo estoy usando una tarjeta wifi usb rtl normal y corriente y la tendré conectada al segundo puerto usb de la raspberry, por tanto quedaría algo así:

INTERFACES=”wlan1”

Debemos configurar wlan1 para que tenga una IP estática:

sudo nano /etc/network/interfaces

Quedando algo así:

auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
iface wlan1 inet static
address 192.168.42.1
netmask 255.255.255.0
up iptables-restore < /etc/iptables.ipv4.nat

La última linea servirá para que cuando terminemos de configurar iptables la configuración se cargue en cada reinicio.
Lo siguiente será configurar el punto de acceso, el archivo hostapd.conf, y aquí es dónde viene la trampa. Tendremos que compilar nuestro propio archivo hostapd, ya que el que nos proponen en el tutorial de la página de Adafruit solo sirve para las tarjetas wifi que venden ellos, son buenos pero no tontos. En concreto, el driver que nosotros queremos utilizar es el nl80211, vamos a ello:

Primero instalamos las librerías necesarias:

sudo apt-get install libnl-dev

(solo si te da problemas: sudo apt-get install libnl-3-dev)

Configuramos hostapd:

sudo nano /etc/hostapd/hostapd.conf

Quedando algo así:

interface=wlan1
driver=nl80211
ssid=tHor
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=mybifrost
#http://es.wikipedia.org/wiki/Bifrost No te acostarás sin saber algo más.
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Nombre del punto de acceso, contraseña, canal y demás.
Ahora indicaremos a hostap dónde se encuentra nuestro archivo de configuración:

sudo nano /etc/default/hostapd

Buscamos:

#DAEMON_CONF=""

Y ponemos:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Que no se nos olvide guardar, que no hay que dejar espacios y ese tipo de cosas.
Ahora configuraremos y activaremos la NAT:

sudo nano /etc/sysctl.conf

Ponemos en la parte de abajo del archivo:

net.ipv4.ip_forward=1

Guardamos e iniciamos el forward:

sudo echo “1” > /proc/sys/net/ipv4/ip_forward

Ahora vamos a configurar iptables:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan1 -m state –state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan1 -o eth0 -j ACCEPT

Y metemos el resultado en nuestro archivo de configuración:

sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

Solo nos queda descargar y compilar hostapd:

sudo git clone git://w1.fi/srv/git/hostap.git
cd hostap/hostapd
sudo cp defconfig .config
sudo nano .config

Buscamos esto:

#CONFIG_DRIVER_NL80211=y

Y lo descomentamos:

CONFIG_DRIVER_NL80211=y

Guardamos, salimos, cruzamos los dedos y:

sudo make

Bueno, un problema menos, ahora vamos a ponerlo todo en su sitio:

sudo mv /usr/sbin/hostapd /usr/sbin/hostapd.ORIGINAL 
sudo mv hostapd /usr/sbin

Permisos:

sudo chmod 755 /usr/sbin/hostapd

Comprobamos que levanta el punto de acceso, no hace falta que nos conectamos todavía:

sudo service hostapd start 
sudo service isc-dhcp-server start

Lo añadimos para que inicie en boot:

sudo update-rc.d hostapd enable 
sudo update-rc.d isc-dhcp-server enable

Y podemos pasar a la parte 2.
PD: según Adafruit, para algunas distribuciones puede ser necesario quitar el wpasupplicant, en mi caso utilizo pwnpi y no ha sido necesario, pero el comando es:

sudo mv /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service ~/

2. OnionPI

Esta parte es mucho más corta, instalamos TOR:

sudo apt-get install tor

Configuramos:

sudo nano /etc/tor/torrc

Copiamos esto arriba del todo del archivo:

Log notice file /var/log/tor/notices.log
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.42.1
DNSPort 53
DNSListenAddress 192.168.42.1

Volvemos a configurar iptables, borramos lo antiguo:

sudo iptables -F
sudo iptables -t nat –F

Ponemos lo nuevo:

sudo iptables -t nat -A PREROUTING -i wlan1 -p tcp --dport 22 -j REDIRECT --to-ports 22
sudo iptables -t nat -A PREROUTING -i wlan1 -p udp --dport 53 -j REDIRECT --to-ports 53
sudo iptables -t nat -A PREROUTING -i wlan1 -p tcp --syn -j REDIRECT --to-ports 9040
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

El puerto 22 lo dirigimos al puerto 22, para poder conectarnos por SSH a la Raspberry cuando estemos conectados al AP. El puerto 9040 es el de TOR que acabamos configurar arriba.

Y por si te has hecho la picha un lio, el archivo /etc/iptables.ipv4.nat tiene que quedar así:

# Generated by iptables-save v1.4.14 on Thu Feb  6 02:10:47 2014
*filter
:INPUT ACCEPT [482:52092]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [564:69516]
-A FORWARD -i eth0 -o wlan1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -j ACCEPT
COMMIT
# Completed on Thu Feb  6 02:10:47 2014
# Generated by iptables-save v1.4.14 on Thu Feb  6 02:10:47 2014
*nat
:PREROUTING ACCEPT [1:185]
:INPUT ACCEPT [2:245]
:OUTPUT ACCEPT [32:1920]
:POSTROUTING ACCEPT [32:1920]
-A PREROUTING -i wlan1 -p tcp -m tcp --dport 22 -j REDIRECT --to-ports 22
-A PREROUTING -i wlan1 -p tcp -m tcp --dport 53 -j REDIRECT --to-ports 53
-A PREROUTING -i wlan1 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j REDIRECT --to-ports 9040
-A POSTROUTING -o eth0 -j MASQUERADE

Creamos el log por si nos da problemas, esperemos que no:

sudo touch /var/log/tor/notices.log
sudo chown debian-tor /var/log/tor/notices.log
sudo chmod 644 /var/log/tor/notices.log

Iniciamos tor:

sudo service tor start

Al boot:

sudo update-rc.d tor enable

¡Y listo! Ahora es momento de meterse al punto de acceso, ir a cualesmiip.com y comprobar que todo está bien. A veces tarda un poco en iniciar, un minuto o minuto y medio como mucho. También se puede hacer el mismo proceso pero con dos tarjetas wifi en lugar de estar conectado por ethernet.

Ya nos veremos en las reuniones. En breve subiremos una imagen completa para que sea solo descargar y meter en la SD. Podéis poner el tutorial donde queráis pero no se os olvide mencionar la fuente, que eso hace llorar al niño Jesús.
EDH.

Fuentes:

http://learn.adafruit.com/onion-pi/
http://wireless.kernel.org/en/users/Documentation/hostapd