17 de out de 2014

SSH Tunnelling com Koding

Muitas vezes precisamos utilizar a internet em lugares públicos. O risco de sofrer um ataque Man in The Middle é muito alto. Isso quer dizer que algum atacante pode estar monitorando todo o tráfego entre você e a internet. Sites que fornecem HTTPS (HyperText Transfer Protocol Secure) resolvem o problema do ataque MITM (na verdade, em muitos casos o ataque ainda pode ser realizado mesmo com o HTTPS, mas falaremos disso em outro post). Porém, nem todos os sites que acessamos oferecem o HTTPS. Para contornar o problema podemos utilizar o SSH Tunnelling. Com isso, criamos um túnel criptografado entre o nosso computador e o nosso servidor pessoal (que sabemos que está livre de qualquer tipo de sniffing). Além de ser mais seguro, caso a rede tenha alguma limitação como bloquear o facebook, o nosso túnel vai conseguir contornar isso, e então, você poderá acessar qualquer site, sem restrições.




Acontece que não são todas as pessoas que possuem um servidor pessoal para utilizar quando quiser. O site koding.com nos oferece uma VM linux com acesso root. Então vamos utilizar o Koding como nosso servidor pessoal. A ideia é fazer um túnel entre nosso computador e a VM.

Primeiramente, entre no site koding.com e faça o cadastro. É bem simples e intuitivo. Quando terminar o cadastro, vai aparecer um terminal pra você (no navegador mesmo).

Agora, precisamos configurar o acesso ao SSH do Koding. Para isso, abrimos o Terminal do nosso computador vamos gerar uma SSH Key, executando o seguinte comando:


ssh-keygen -t rsa -C "your_email@example.com"

Depois copie o conteúdo do arquivo localizado em:

~/.ssh/id_rsa.pub

Essa é a nossa chave pública.
Agora volte no terminal do Koding, crie a pasta .ssh. Dentro dessa pasta, crie o arquivo authorized_keys e cole o que você copiou.


mkdir -p .ssh
cd .ssh
nano authorized_keys

Agora só precisamos pegar o endereço da nossa VM e conectar nela através do SSH. Na imagem abaixo eu mostro onde fica o endereço da VM.



Agora que temos o endereço vamos conectar. A sintaxe será: ssh username@enderecodavm



Beleza, conseguimos conectar por SSH, mas esse ainda não é o túnel. Existem alguns administradores que bloqueiam diversas portas na rede. Nós conectamos pela porta 22, mas imagina se a porta 22 estiver bloqueada naquele Wireless do shopping? Para isso, vamos mudar a porta em que o servidor do ssh está rodando. Vamos utilizar uma porta que não está sendo utilizada na nossa VM e que o administrador da rede que você está conectado não pode bloquear. Essa porta é a 443. Caso o administrador bloqueie essa porta, ninguém conseguiria acessar nenhum site que tivesse o HTTPS. Portanto, ela sempre estará livre.
Edite o arquivo localizado em /etc/ssh/sshd_config e mude a porta para 443.



Agora o servidor ssh está na porta 443. Finalmente, vamos fazer o SSH Tunnelling.
O comando é:


ssh pythoneiro@upkk0ec3286f.pythoneiro.koding.io -p 443 -ND 8080

Agora, pra utilizar, é só configurar localhost:8080 como proxy em nosso navegador.


Repare abaixo que todo site que eu acesso, é como se a VM estivesse acessando.




Espero que tenham gostado.
Até mais...

5 comentários:

  1. pode fazer um video enciando melhor ?

    ResponderExcluir
    Respostas
    1. Quando eu tiver um tempo livre eu faço um vídeo explicando.

      Excluir
  2. "Sites que fornecem HTTPS (HyperText Transfer Protocol Secure) resolvem o problema do ataque MITM" Tem certeza man? Pelo que já pesquisei, mesmo com HTTPs é possível ainda capturar o trafego.

    ResponderExcluir
    Respostas
    1. É, eu acabei escrevendo sem fazer as ressalvas. Os ataques com sslstrip, no início funcionavam muito bem, até a implementação do HSTS. Depois, o próprio criador do sslstrip desenvolveu uma versão que faz o bypass parcial, mas só funciona em alguns browsers. Mas você está certo. Vou colocar um parêntese ali.

      Excluir