Um proxy Tor em um Raspberry Pi

Neste tutorial, passo por todas as etapas para configurar um proxy Tor em um Raspberry Pi (Modelo B). Este trabalho foi baseado em alguns tutoriais da Adafruit .

Cenário

Configurando um Raspberry Pi

Instalando um sistema operacional no cartão SD

Você pode instalar o NOOBS e escolher seu sistema operacional:
http://www.raspberrypi.org/help/noobs-setup .

Ou você pode baixar o Fedora ARM Installer e a imagem do sistema operacional de sua preferência:
http://fedoraproject.org/wiki/Fedora ARM Installer .

Configuração de rede

A maneira mais fácil é conectar seu Pi na rede através de uma interface ethernet . A conexão do cabo deve permitir a conexão direta, desde que o roteador da rede permita DHCP.

Além disso, você também pode configurar uma conexão sem fio, que requer que seu roteador transmita o SSID. No Raspbian, há um ícone de configuração de WiFi. Digite wlan0 adaptere digitalize. Depois de se conectar em sua rede, você também poderá ver o IP do seu Pi.

Configuração de entrada / saída

A maneira mais fácil de se conectar ao seu Pi é por meio de um cabo HDMI a um monitor e a um teclado USB. Outra opção é por meio de um cabo de console ou uma conexão SSH.

Conexão através de um cabo de console (níveis lógicos de 3,3 V)

As conexões são para as conexões de pino externas do cabeçalho GPIO:

  • O fio vermelho deve ser conectado a 5V.
  • O cabo preto para GND,
  • O fio branco para TXD.
  • A liderança verde para RXD.

Se o cabo serial (vermelho) estiver conectado, não conecte o adaptador de alimentação USB do Pi.
Cenário

No Linux, você pode usar a tela :

$ sudo apt-get install screen
$ sudo screen
/dev/ttyUSB0 115200

No Windows, você pode usar uma emulação de terminal como Putty e os drivers deste link:
http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=225&pcid=41 . Verifique o número da porta serial COM no gerenciador de dispositivos e conecte com a velocidade 115200.

Conexão SSH

Você precisa habilitar SSH no Pi:

$ sudo raspi-config

Encontre o IP do Pi por:

$ sudo ifconfig

Em seu PC Linux (usando “pi” como usuário):

$ sudo PI-IP -l pi

Você pode (deve) definir chaves RSA. Em uma sessão de terminal no cliente Linux, digite:

$ mkdir ~/.ssh
$ chmod
700 ~/.ssh
$ ssh
-keygen -t rsa

Agora copie a chave pública para o Pi digitando no cliente:

$ ssh-copy-id <userid>@<hostname or ip address>

Configurando um Ponto de Acesso Wi-Fi

Você precisa de um cabo Ethernet e um adaptador sem fio. Primeiro, verifique se você vê o módulo wlan0 (o WiFi):

$ ifconfig -a 

Configuração do servidor DHCP

Instale o software que atuará como hostap (ponto de acesso do host):

$ sudo apt-get install hostapd isc-dhcp-server

Se o Pi não conseguir os repositórios apt-get:

$ sudo apt-get update 

Editar :/etc/networks/interfaces

auto lo

iface lo inet loopback

iface eth0 inet dhcp


allow
-hotplug wlan0

iface wlan0 inet
static
address
192.168.42.1
netmask
255.255.255.0

Em seguida, edite o arquivo de configuração do servidor DHCP :/etc/dhcp/dhcpd.conf

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;
}

Agora, adicione a linha abaixo a :/etc/default/isc-dhcp-server

INTERFACES="wlan0" 

Reinicie a rede:

$ sudo /etc/init.d/networking restart

Encaminhamento de IP

Ative o encaminhamento de IP e configure o NAT para permitir que vários clientes se conectem ao WiFi e tenham todos os dados ‘encapsulados’ por meio de um único IP Ethernet:

$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward
$ sudo nano
/etc/sysctl.conf

Remova o comentário da próxima linha para habilitar o encaminhamento de pacotes para IPv4:

net.ipv4.ip_forward=1

E atualizar:

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

Configuração de Firewall

Nós inserimos regras de iptables para permitir NAT (tradução de endereços de rede) :

$ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$ iptables
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ iptables
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT

Para tornar verdadeiro o acima em cada reinicialização:

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

Para segurança adicional (bloqueia o acesso de sub-redes RFC 1918 na sua interface de internet (eth0), bem como pacotes ICMP (ping) e conexões ssh.):

$ sudo iptables -A INPUT -s 192.168.0.0/24 -i eth0 -j DROP
$ sudo iptables
-A INPUT -s 10.0.0.0/8 -i eth0 -j DROP
$ sudo iptables
-A INPUT -s 172.16.0.0/12 -i eth0 -j DROP
$ sudo iptables
-A INPUT -s 224.0.0.0/4 -i eth0 -j DROP
$ sudo iptables
-A INPUT -s 240.0.0.0/5 -i eth0 -j DROP
$ sudo iptables
-A INPUT -s 127.0.0.0/8 -i eth0 -j DROP
$ sudo iptables
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j DROP
$ sudo iptables
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP
$ sudo iptables
-save > /etc/iptables.up.rules

Se você quiser ver quantos pacotes seu firewall está bloqueando:

$ iptables -L -n -v

Se o seu eth0 ainda mostra um endereço privado, provavelmente não foi renovado quando você o moveu para o seu modem. Corrija isso executando:

$ sudo ifdown eth0 && sudo ifup eth0

Configuração do Ponto de Acesso

Configure o ponto de acesso com hostpad, editando :/etc/hostapd/hostapd.conf

interface=wlan0
driver
=rtl871xdrv
ssid
=Pi_AP
hw_mode
=g
channel
=6
macaddr_acl
=0
auth_algs
=1
ignore_broadcast_ssid
=0
wpa
=2
wpa_passphrase
=Raspberry
wpa_key_mgmt
=WPA-PSK
wpa_pairwise
=TKIP
rsn_pairwise
=CCMP

Agora diremos ao Pi onde encontrar esse arquivo de configuração em :/etc/default/hostapd

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

E inicie o ponto de acesso executando o hostpad:

$ hostapd -d /etc/hostapd/hostapd.conf

Para iniciar automaticamente, adicione o comando a :/etc/rc.local

$ hostapd -B /etc/hostapd/hostapd.conf

Logs e status

Para ver os dados de registro do sistema, execute no Pi:

$ tail -f /var/log/syslog

Você sempre pode verificar o status do servidor AP host e do servidor DHCP com:

$ sudo service hostapd status
$ sudo service isc
-dhcp-server status

Configurando um Daemon

Agora que sabemos que funciona, podemos configurá-lo como um ‘daemon’ (um programa que será iniciado quando o Pi for inicializado):

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

Para iniciar os serviços daemon. Verifique se ambos começam com sucesso (sem ‘falha’ ou ‘erros’)

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

Removendo WPA-Suplicante

Dependendo da sua distribuição, pode ser necessário remover o WPASupplicant . Faça isso executando este comando:

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

Configurando o Tor Proxy

Agora você tem um ponto de acesso sem fio em seu Pi. Para torná-lo um proxy Tor, primeiro instale o Tor:

$ sudo apt-get install tor

Em seguida, edite o arquivo de configuração do Tor em /etc/tor/torrc:

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

Altere as tabelas de roteamento de IP para que as conexões por meio da interface WiFi (wlan0) sejam roteadas por meio do software Tor. Para eliminar as regras antigas da tabela IP NAT, faça o seguinte:

$ sudo iptables -F
$ sudo iptables
-t nat -F

Adicione o iptables, para poder fazer o ssh:

$ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 22 -j REDIRECT --to-ports 22 

Para rotear todos os DNS (porta UDP 53) da interface wlan0 para a porta interna 53 (DNSPort em nosso torrc):

$ sudo iptables -t nat -A PREROUTING -i wlan0 -p udp --dport 53 -j REDIRECT --to-ports 53

Para rotear todo o tráfego TCP da interface wlan0 para a porta 9040 (TransPort em nosso torrc):

$ sudo iptables -t nat -A PREROUTING -i wlan0 -p tcp --syn -j REDIRECT --to-ports 9040 

Verifique se os iptables estão corretos com:

$ sudo iptables -t nat -L

Se tudo estiver bem, vamos salvá-lo em nosso antigo arquivo de salvamento NAT:

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

A seguir, criaremos nosso arquivo de log (útil para depuração) com:

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

Verifique com:

ls -l /var/log/tor

Finalmente, você pode iniciar o serviço Tor manualmente:

$ sudo service tor start

E faça com que comece na inicialização:

$ sudo update-rc.d tor enable

É isso aí! Navegador seguro!