Como configurar um Servidor SSH com o Tor para escondê-lo de Hackers e do Shodan

O próximo exploit de libSSH ou OpenSSH pode estar na próxima esquina. Mantenha seu serviço de SSH fora do banco de dados do Shodan antes que os hackers encontrem novas maneiras de contornar a senha que protege o servidor.

O Shodan, chamado de “mecanismo de busca dos hackers” porque é literalmente um banco de dados pesquisável de dispositivos e servidores conectados à Internet. Ele permite que qualquer pessoa pesquise webcams, roteadores, servidores, Raspberry Pis, semáforos, sistemas de ponto de venda, sistemas de controle industrial e muito mais.

A ferramenta da Web faz isso iterando aleatoriamente todos os endereços IP possíveis (estejam online ou não sendo utilizados) e tenta extrair banners de serviços em portas diferentes. Banners de serviço geralmente armazenam metadados sobre o serviço em execução, como o nome do serviço, tipo e número da versão.

Por que utilizar SSH com Tor?

Qualquer equipamento conectado à internet será inevitavelmente escaneado pelo Shodan ou outras bases de dados como o Censys. Hackers utilizam estes bancos para localizar servidores vulneráveis e desatualizados. Até administradores de sistemas que atualizam seus sistemas regularmente e seguem as melhores práticas estão expostos a este exploit. A vulnerabilidade de desvio de autenticação do libSSH é um excelente exemplo disso.

Ela permite que hackers conectem a serviços SSH sem primeiro realizar a autenticação. Os serviços mais atualizados ainda estavam vulneráveis ​​a esse exploit e colocam muitos servidores e sites em risco. Mais importante ainda, sistemas totalmente atualizados ainda estão expostos a exploits que ainda precisam ser divulgadas. Às vezes, o Blackhat acumula e vende vulnerabilidades em comunidades privadas. Não há como dizer quantos exploits não-revelados do OpenSSH podem existir hoje.

Os serviços Tor onion podem ajudar a mitigar a exposição. Assim como os websites da onion não podem ser acessados ​​usando um navegador da Web padrão, os serviços SSH podem ser configurados para permitir o acesso apenas por meio do Tor. Ele pode tornar os serviços totalmente inacessíveis para mecanismos de busca como o Shodan e mais difíceis de serem encontrados pelos hackers.

Passo 1: Instalar o Tor

A primeira coisa que nós precisamos fazer é instalar o Tor – tanto no VPS quanto no computador do cliente (desktop). O cliente pode ser um sistema Debian, Ubuntu ou Kali. Usuários do MacOS e Windows 10 podem consultar a documentação oficial do Projeto Tor para instalar o tor propriamente. À maioria dos leitores, o servidor SSH será um Debian. No entanto, isto pode ser configurado em um Desktop Ubuntu ou Raspberry Pi, para os que desejam acessar computadores remotamente em casa.

Tor está disponível em vários repositórios Linux. Na maior parte dos casos, os pacotes não são mantidos ou atualizados de forma confiável, o que significa que pode haver falta de atualizações críticas de estabilidade e segurança. Além disso, o software de anonimato deve ser sempre adquirido diretamente da fonte (por exemplo, torproject.org).

Entre no seu servidor SSH e adicione o repositório do projeto Tor à sua lista de repositórios do APT com o seguinte comando echo, que funciona no Debian.

~$ echo -e “deb https://deb.torproject.org/torproject.org $(lsb_release -sc) main \ndeb-src https://deb.torproject.org/torproject.org $(lsb_release -sc) main” > /etc/apt/sources.list.d/tor.list

Se você estiver rodando um Kali Linux, ao invés disso, utilize o seguinte comando.

~$ echo -e “deb https://deb.torproject.org/torproject.org stretch main \ndeb-src https://deb.torproject.org/torproject.org stretch main” > /etc/apt/sources.list.d/tor.list

Em seguida, baixe a chave de assinatura de pacote do Projeto Tor e importe-a para o seu keyring do APT com o seguinte comando.

~$ wget -O-  https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add – 
–2019-03-05 06:29:13– https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc Resolving deb.torproject.org (deb.torproject.org)… 82.195.75.101, 2001:41b8:202:deb:213:21ff:fe20:1426 Connecting to deb.torproject.org (deb.torproject.org)|82.195.75.101|:443… connected. HTTP request sent, awaiting response… 200 OK Length: 19665 (19K) [text/plain] Saving to: ‘STDOUT’
– 100%[================================>] 19.20K 54.8KB/s in 0.4s 
2019-03-05 06:29:16 (54.8 KB/s) – written to stdout [19665/19665]

Você verá a saída “Ok” quando a chave de assinatura tiver sido adicionada à seu keyring. Depois, atualize o APT utilizando o seguinte comando apt-get

~$ apt-get update 
Get:2 https://deb.torproject.org/torproject.org stretch InRelease [4,965 B]Get:4 https://deb.torproject.org/torproject.org stretch/main Sources [1,169 B]Get:5 https://deb.torproject.org/torproject.org stretch/main amd64 Packages [2,400 B]Fetched 8,534 B in 8s (1,091 B/s)Reading package lists… Done

Instale o Tor utilizando o seguinte comando apt-get e está concluído.

~$ apt-get install tor deb.torproject.org-keyring torsocks Reading package lists… Done Building dependency tree Reading state information… Done Suggested packages: mixmaster torbrowser-launcher socat tor-arm apparmor-utils obfs4proxy The following NEW packages will be installed: deb.torproject.org-keyring The following packages will be upgraded: tor

Ambos os clientes e o VPS rodando o servidor SSH devem ter o Tor instalado. Certifique-se de seguir os passos acima em ambos.

Passo 2: Criar um Serviço Onion no Servidor

O processo do Tor provavelmente será executado imediatamente após a instalação, assim como root (sudo), pare o processo. Isto pode ser feito utilizando o comando systemctl.

~$ sudo systemctl stop tor

Após, utilize o editor de texto para abrir o arquivo /etc/tor/torrc. Este é o arquivo de configuração utilizado pelo Tor para modificar seu comportamento e criar serviços onion.

~$ sudo nano /etc/tor/torrc

Haverá muitas informações neste arquivo. A maior parte delas não é relevante para este artigo. Desça a rolagem um pouco até a seção “This section is just for location-hidden services”. No Debian e no Kali, ele consta conforme abaixo.

############### This section is just for location-hidden services ##### Once you have configured a hidden service, you can look at the## contents of the file “…/hidden_service/hostname” for the address## to tell people.#### HiddenServicePort x y:z says to redirect requests on port x to the## address y:z.
#HiddenServiceDir /var/lib/tor/hidden_service/#HiddenServicePort 80 127.0.0.1:80

#HiddenServiceDir /var/lib/tor/other_hidden_service/ #HiddenServicePort 80 127.0.0.1:80#HiddenServicePort 22 127.0.0.1:22

Descomente (#) uma linha “HiddenServiceDir” e outra em “HiddenServicePort”, conforme abaixo.

############### This section is just for location-hidden services ##### Once you have configured a hidden service, you can look at the## contents of the file “…/hidden_service/hostname” for the address## to tell people.#### HiddenServicePort x y:z says to redirect requests on port x to the## address y:z.

#HiddenServiceDir /var/lib/tor/hidden_service/#HiddenServicePort 80 127.0.0.1:80
HiddenServiceDir /var/lib/tor/other_hidden_service/#HiddenServicePort 80 127.0.0.1:80HiddenServicePort 22 127.0.0.1:22

Salve e saia do editor. Então, reinicie o tor utilizando o comando abaixo.

~$ sudo systemctl restart tor

O arquivo “hostname” no diretório /var/lib/tor/other_hidden_service/ armazenará o novo endereço onion. Utilize cat para ler o arquivo. Anote este endereço onion, ele será requisitado no próximo passo.

~$ cat /var/lib/tor/other_hidden_service/hostname
pkgsxmtmdrlxp7l3gfqysi3ceaochd4vnv7eax2fuyridmcz7ucvluad.onion

Passo 3: Verificar se o Serviço Onion está Funcionando (Opcional)

Antes de proceder, é bom garantir que o serviço SSH esteja acessível utilizando o novo endereço onion. Isto pode ser verificado utilizando o torsocks, um invólucro de shell usado para aplicativos de linha de comando transparentes Tor-ify, como curl, wget ou nmap.

Os seguintes comandos de torsocks e curl consultam o novo serviço onion. Certifique-se de anexar o número da porta SSH (: 22), caso contrário, o curl consultará a porta 80 por padrão e dará falha. Uma consulta bem-sucedida retornará o banner da versão SSH, conforme mostrado abaixo.

~$ torsocks curl
SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u5

Passo 4: Fazer o Serviço SSH Privado

Por padrão, a maioria dos serviços SSH são escutados em todo a interface IPv4. Enquanto não é o caso para todas as distribuições Linux, isto é fato para os mais populares como o Ubuntuo e o Debian. Isto é geralmente representado por “0.0.0.0” no arquivo /etc/ssh/sshd_config, onde o SSH armazena todos os serviços de configuração.

Os serviços SSH configurados desta forma permitem acessar o servidor de qualquer computador do mundo. O que é conveniente para administradores de sites que precisam efetuar mudanças em seus sites de diferentes dispositivos e redes.

Primeiro, vamos olhar o serviço SSH rodando em segundo plano. Utilize ss, uma ferramenta para investigar sockets, para exibir processos (-p) ouvir (-l) para conexões TCP (-t).

~$ ss -plt 
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:ssh *:* users:((“sshd”,pid=1148,fd=3))

Se o servidor possuir aplicações rodando em segundo plano (por exemplo, Apache, Nginx, IRC, etc.), muitos serviços aparecerão aqui. Vamos focar na coluna do LocalAddress:Port que lê *:ssh. Wildcards indicam que o serviço SSH está ouvindo em toda interface IPv4 e IPv6 disponível.

Shodan é capaz de localizar este serviço SSH porque está disponível (ouvindo) neste estado. Para mudar isso, abra o arquivo /etc/ssh/sshd_config e encontre a linha “ListenAddress”.

~$ sudo nano /etc/ssh/sshd_config

No Debian, ele aparece como consta abaixo. Elas provavelmente estarão comentadas, o que é normal. Quando todo ListenAddress estiver comentado, o SSH retornará à sua configuração padrão para ouvir em todas as interfaces.

#Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress ::

Mude a linha ListenAddress para “127.0.0.1” e descomente-a:

#Port 22 #AddressFamily any ListenAddress 127.0.0.1 #ListenAddress ::

Então, reinicie o serviço SSH.

~$ sudo systemctl restart ssh

Imediatamente após a execução do comando systemctl, a conexão atual do SSH pode fechar. O serviço SSH não estará mais disponível em nenhum endereço IPv4 ou IPv6, por isso é normal que a conexão seja interrompida.

Passo 5: Conectar ao Servidor SSH Utilizando o Tor

Felizmente, o serviço onion foi configurado no servidor para que o serviço SSH ainda possa ser alcançado. Agora, a partir do cliente (desktop), utilize o comando torsocks abaixo para conectar no serviço SSH.

~$ torsocks ssh -p 22 username@pkgsxmtmdrlxp7l3gfqysi3ceaochd4vnv7eax2fuyridmcz7ucvluad.onion 
The authenticity of host ‘pkgsxmtmdrlxp7l3gfqysi3ceaochd4vnv7eax2fuyridmcz7ucvluad.onion (127.42.42.0)’ can’t be established. ECDSA key fingerprint is SHA256:f22LX7WJfLGOiKxP+0+cA/l5Q1GsJLFA30ZyMyGLMl4. Are you sure you want to continue connecting (yes/no)? yes 
Warning: Permanently added ‘pkgsxmtmdrlxp7l3gfqysi3ceaochd4vnv7eax2fuyridmcz7ucvluad.onion’ (ECDSA) to the list of known hosts. username@pkgsxmtmdrlxp7l3gfqysi3ceaochd4vnv7eax2fuyridmcz7ucvluad.onion’s password:

Passo 6: Certifique-se que o Serviço SSH Não está Visível no Shodan

Após logar no servidor utilizando o endereço onion, utilize o comando ssh para visualizar os serviços em execução. Ele não deve mais reportar o SSH em toda a interface disponível, apenas 127.0.0.1.

~$ ss -plt 
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 127.0.0.1:ssh *:* users:((“sshd”,pid=1162,fd=3))

Nós podemos verificar isto através de uma varredura simples da versão nmap (-sV) no servidor.

~$ nmap -p 22 -sV <vps ip here> PORT STATE SERVICE VERSION 22/tcp closed ssh

O serviço SSH pode ainda aparecer no Shodan por dias ou até semanas. O Shodan não é muito bom em remover banners e informações de serviços antigos. Mas isso não significa que o serviço SSH ainda esteja acessível aos invasores.

Conclusão

De longe, a maior limitação do uso do SSH com serviços onion é a lentidão. As respostas no terminal podem ser dolorosamente lentas para alguém que não está acostumado a serviços onion e Tor.

Configurar o Tor para funcionar com serviços SSH, oculta-o do Shodan, mas ainda assim não é totalmente impossível localizá-lo. Ele ainda pode ser alcançado usando o Tor, que minimiza significativamente sua exposição geral, mas não o torna totalmente imune a ataques.

Há um recurso de segurança no Tor chamado HiddenServiceAuthorizeClient. Esse recurso permite que os usuários essencialmente protejam com senha o serviço onion com um cookie de autenticação. No momento da redação deste artigo, o HiddenServiceAuthorizeClient ainda não era compatível com os serviços onion mais recentes da próxima geração. Seria possível gerar serviços onions mais antigos, mas parece uma prática de segurança ruim utilizar um recurso que logo será obsoleto no Tor. No futuro, será possível usar o HiddenServiceAuthorizeClient com onions de próxima geração para torná-las completamente inacessíveis para qualquer pessoa, exceto você. Por enquanto, alterar o número da porta SSH para algo não-padrão, como 62359 ou 41171, ajudará a mantê-lo fora do radar de script-kiddies na varredura em massa da darknet na porta 22.

How to Set Up an SSH Server with Tor to Hide It from Shodan & Hackers. Null Byte. Disponível em: <https://medium.com/@NullByteWht/how-to-set-up-an-ssh-server-with-tor-to-hide-it-from-shodan-hackers-eda93927a742>. Acesso em 08 de jul. 2019.

 

Posts relacionados