logo raspberry pi brasil

Raspberry Pi Brasil

A comunidade brasileira do Raspberry Pi e do Software Livre

Acessando o Raspberry Pi fora de casa via Tor

Usar o Raspberry Pi como um servidor é forma extremamente conveniente e simples de aprender a utilizar o software livre. Com seu baixo consumo de energia, hardware e armazenamento baratos, e baixa necessidade de arrefecimento, modelos como o Raspberry Pi 3 funcionam como ótimos servidores de pequeno a médio porte na sua rede caseira. Quando queremos acessá-lo de fora da nossa rede caseira, geralmente podemos fazê-lo através de uma técnica chamada Port Forwarding, que envolve colocar o Raspberry Pi numa posição privilegiada na rede e ser enxergado da própria internet.

Porém, algumas vezes esta combinação pode não ser completamente possível, por conta de fatores associados ao seu roteador ou até mesmo se o seu provedor de internet não expõe endereços individuais na internet. Quando isto acontece, felizmente ainda temos uma alternativa para acessar nossos arquivos remotamente: a rede Tor. Famosa (ou infame) por proporcionar privacidade e anonimato nas atividades da internet, há um uso menos conhecido do Tor que permite você acessar um computador atrás de um roteador através de uma ferramenta chamada Hidden Services. Vejamos como fazer isso neste post.

Como os Tor Hidden Services funcionam

O Tor foi criado em 2002 pela Marinha Americana como uma forma de se anonimizar tráfego na internet e dificultar sua análise. Desde sua concepção, o projeto primeiramente foca na proteção da privacidade dos usuários, a qual é alcançada através da utilização de três camadas criptografadas de tráfego, que tornam virtualmente impossível qualquer ponto na rede de descobrir quem está acessando o quê.

Descrição de como a rede Tor funciona
O Tor anonimiza a sua conexão com a internet fazendo-a passar por três "pontos intermediários," que impossibilitam identificar quem está falando com quem. Crédito: Wikimedia.org

Com o tempo, o Tor Project expandiu o seu escopo para incluir também a funcionalidade Hidden Service que permite você hospedar um site ou serviço dentro do Tor sem ser possível identificar quem são os seus visitantes, e nem seus visitantes quem você é. Esta implementação é bastante controversa, pois pode habilitar alguém a hospedar conteúdo de legalidade duvidosa, mas vem com outra ótima função: se tornar acessível mesmo atrás de um firewall ou roteador.

Por esta razão, podemos utilizar Hidden Services como uma forma de acesso remoto da internet ao nosso Raspberry Pi de forma segura combinando-o com o Protocolo SSH. Assim, caso não seja possível acessar o seu Raspberry Pi via port forwarding, podemos ainda acessá-lo provado que:

  1. Ele possua alguma conexão à internet.
  2. O sistema Tor e o SSH estejam instalados e operando nele.
  3. O seu dispositivo cliente também possua Tor instalado.

Trataremos a seguir sobre os pontos #2 e #3.

Criando um Hidden Service de SSH no Raspberry Pi

Um Hidden Service nada mais é do que um serviço disponibilizado através da rede Tor. Você em teoria pode criar um Hidden Service para qualquer serviço do Linux, embora os mais comuns sejam Servidor Web ou SSH. E enquanto serviços na internet costumam utilizar domínios da internet (.com, .net, etc), Hidden Services utilizam endereços .onion, que são gerados de maneira aleatória.

Como o SSH já vem habilitado por padrão no Raspberry Pi OS, para hospedar o serviço SSH como Hidden Service no Raspberry Pi, primeiro instale o Tor com o seguinte comando:

sudo apt-get install tor

O Tor é instalado e iniciado automaticamente. Na sua configuração padrão, o Tor atende bem os requerimentos de anonimato como um cliente, mas se você precisa hospedar serviços com ele, precisa de configurações adicionais. Vamos editá-lo para adicionar um Hidden Service rodando o SSH. Adicione as seguintes linhas ao arquivo de configuração central do Tor: /etc/tor/torrc:

HiddenServiceDir /var/lib/tor/ssh
HiddenServicePort 22 127.0.0.1:22
# assumindo que SSH está na porta 22

Salve o arquivo e reinicie o Tor com o seguinte comando:

sudo systemctl restart tor

Ao reiniciar, o Tor irá criar um diretório com informações específicas para o seu novo Hidden Service do SSH localizado em /var/lib/tor/ssh (conforme criado acima), acessível somente pelo usuário root por conta da segurança. Ao passo que você não precisará editar nenhum outro arquivo de configuração, o arquivo hostname dentro deste diretório contém o endereço .onion do seu Hidden Service, do qual você precisará para acessá-lo remotamente. Um endereço .onion de exemplo poderia ser:

$ sudo cat /var/lib/tor/ssh/hostname
abcdefabcdefabcdefabcdefabcdefabcdefabcdef.onion

Guarde este endereço em algum lugar, pois você precisará-dele para configurar o dispositivo cliente.

Acessando o SSH via Tor no seu dispositivo

Onion Routing explicado
O princípio do Onion Routing consiste em "encapar" uma mensagem com três chaves distintas para que ninguém exceto o destinatário possa vê-la. Crédito: Wikimedia.org

Já andamos metade do caminho configurando o servidor, mas igualmente necessário é configurar o seu dispositivo cliente para também utilizar o Tor para identificar e acessar o seu Raspberry Pi. Assumiremos aqui que você está utilizando Linux no dispositivo cliente.

Conforme especificamos nos requerimentos acima, você também deverá instalar o Tor no seu dispositivo para acessar um Hidden Service, e adicionalmente um programa chamado netcat que fará o roteamento da conexão SSH pela rede Tor. Utilizando Ubuntu ou Debian, o comando para instalar é:

sudo apt-get install netcat

Edite o arquivo de configuração ~/.ssh/config e adicione uma nova entrada para o seu Hidden Service:

Host meuraspi-tor
    # use o hostname que obteve do raspberry pi anteriormente
    Hostname abcdefabcdefabcdefabcdefabcdefabcdefabcdef.onion 
    User nomedeusuario
    ProxyCommand netcat --proxy 127.0.0.1:9050 --proxy-type socks5 %h %p

Dica: se você já possui um host SSH habilitado, é de praxe criar sua "versão torificada" simplesmente adicionando -tor no campo Host. Por exemplo, se o seu Raspberry Pi internamente é o Host raspi, seu acesso via Tor seria raspi-tor.

Adicionalmente, se você configurou seu SSH para utilizar chaves ao invés de senhas na autenticação, deve especificar a localização delas novamente:

Host meuraspi-tor
    Hostname abcdefabcdefabcdefabcdefabcdefabcdefabcdef.onion 
    User nomedeusuario
    # especifique a localização da chave privada:
    IdentityFile /home/usuario/.ssh/minhachave
    ProxyCommand netcat --proxy 127.0.0.1:9050 --proxy-type socks5 %h %p

Salve o arquivo, e teste a conexão com o comando:

ssh meuraspi-tor

Note que, por conta da utilização do Tor e o roteamento por vários hosts, a velocidade da conexão é reduzida drasticamente. O SSH irá perguntar se você reconhece o fingerprint por conta dele ser um host novo. Se você enxerga o seu login do Raspberry Pi com sucesso, parabéns: o seu Hidden Service foi configurado corretamente, e está disponível além da sua rede caseira.

Prós e contras de um Hidden Service no Raspberry Pi

Embora prático e simples de se implementar, nem tudo são flores com os Hidden Services. Embora sua maior vantagem seja a privacidade adicional e o acesso independente de firewall ou NAT, eles possuem duas grandes limitações:

Uma grande vantagem, porém, é a segurança adicional que é providenciada ao seu próprio Raspberry Pi: como você não o disponibiliza diretamente na internet, não há risco adicional que scanners e adversários encontrem seu Raspberry Pi e tentem atacá-lo.

Bônus: acessando seu Raspberry Pi do seu smartphone

Não há como se tornar mais móvel hoje em dia do que através de um smartphone e conexão 4G e, dependendo da sua rotina, é provável que você passe mais tempo na rua do que com acesso a um computador. Há como acessar seu Raspberry Pi desta forma?

Incrivelmente, sim! Mas, por enquanto, apenas no Android...

screenshot do Termux
O aplicativo Termux rodando no Android. Crédito: Wikimedia.org

Graças a um aplicativo Android chamado Termux, você pode ter acesso a um verdadeiro shell Linux no seu próprio celular. É possível instalar software do Linux dentro do aplicativo, incluindo o SSH e o Tor. Combinando os dois e os configurando como nos exemplos acima, é possível acessá-lo da mesma maneira do que num desktop.

Nós descobrimos o Termux relativamente recentemente, mas desde então ele facilmente se tornou nosso aplicativo favorito, e o altamente recomendamos. Se você tem mais interesse em conhecer este aplicativo, escrevemos um post mais detalhado de como podemos utilizá-lo a fundo. Confira!


Você utilizou hidden services ou o Tor antes? Já conhecia esta utilização para acesso remoto? Escreva para nós no Mastodon!

Publicado em 2021-04-15

Categorizado em: softwarelivre raspberrypi segurança servidor internet