quarta-feira, 4 de novembro de 2015

Hardcore Devel #38 - Acesso Remoto

Estamos novamente falando sobre computação e tecnologia.


E hoje eu vou falar um pouco sobre as formas de acesso remoto a máquinas.

Acessar uma máquina remotamente é um dos principais pré-requisitos para o trabalho de tecnologia da informação. Todo mundo já deve ter ouvido falar disso, e talvez alguns até ja tenham feito, e quem fez talvez não saiba nem metade dos recursos que existem pra acesso remoto e os mais variados programas e seus funcionamentos, então hoje eu vou fazer uma espécie de lista. Eu vou falar bem rapidamente sobre as tecnologias que existem pra acesso remoto.

Se voce se interessar, pesquise ou pergunte.

1 - LogMeIn / TeamViewer
Esses dois aqui são famosos. Eles são programas diferentes mas são basicamente a mesma coisa. Você faz acesso remoto na sua máquina instalando um programa na máquina que vai ser acessada, e outro na máquina que vai acessar. Essa forma simples de fazer a coisa faz tudo parecer magia, só que existem alguns detalhes sórdidos que não são divulgados.

Pra fazer essa conexão acontecer, esse programa que fica na máquina a ser acessada faz acesso em algum servidor da empresa que está fornecendo o software. A forma com a qual essas empresas fazem a distribuição da informação corretamente necessita dessa concentração de informação. Em outras palavras, eles estão vendo o que você está fazendo, talvez de alguma forma criptografado. Só que não adianta de nada nesses caso, pois de posse da chave que são eles que devem gerar, eles quebram a criptografia.

Funcionam e ainda estão no ar. Isso mostra que as empresas tem comprometimento com o serviço.

2 - Servidores / Clientes
Então descendo um pouco no nível, você descobre que não tem jeito. De alguma forma a sua máquina precisa abrir uma porta de comunicação e ficar potencialmente vulnerável. Pra fazer acesso remoto você precisa abrir um servidor na máquina a ser acessada. Quando a gente fala em abrir um servidor nesse caso, não é fazer da máquina acessável pelo seu navegador, e sim instalar um programa que consiga entender as mensagens enviadas por outro programa. O TeamViewer e o LogMeIn fazem isso também, não se engane. O que estamos falando dessa vez é o acesso feito sem intermediários.

Pra fazer isso, você precisa saber qual é o endereço IP e a porta na qual aquele software servidor está rodando. Se você tem essa informação você consegue fazer a conexão. Obviamente, saber IP e porta é muito mais difícil do que saber alguns numerozinhos que o software da pra você, não é mesmo?

2.1 - RDP
RDP significa Remote Desktop Protocol, e na verdade foi iniciado pela Microsoft que depois abriu a especificação pra qualquer um escrever programas que sejam capazes de acessar máquinas windows remotamente(caso o acesso remoto estivesse habilitado). Qualquer programa de acesso remoto a Windows que não sejam os últimos listados utilizam RDP pra fazer a comunicação entre uma máquina e outra. Se existe algum diferente, me desculpe, mas a grande maioria segue essa linha.

Isso porque o RDP funciona bem. E o nosso windows já vem de fábrica com essas coisas prontas. Só que pra você usar isso com o seu computador de casa é mais difícil. A sua máquina está provavelmente atrás de uma NAT, e as NATs, ao mesmo tempo que resolveram um problema da internet, criaram outro. Isso porque o seu endereço não é facilmente encontrado quando você está atrás dessa rede interna.

Mas já existe. Procure executar o programa, mstsc. Obviamente você não deve conhecer nenhum endereço IP de nenhum computador que você queria conectar e que esteja com os serviço remoto aberto, é só pra quem não conhece saber que isso existe. só que acontece uma coisa importante aqui. Essa versão do windows de acesso remoto é usuário único. Sabe aquela coisa dos computadores terem múltiplos usuários fazendo diversas tarefas ao mesmo tempo? Então, eis aqui uma exemplo de como isso pode acontecer.

Só que a coisa é bem simples. Se alguém está conectado em uma máquina com o usuário ZeDasCouves. Nenhuma outra pessoa deve ser conectar. Se duas pessoas tentaram, fazer a conexão RDP em uma máquina que usa o servidor RDP da Microsoft que já vem com o Windows, um dos dois vai cair. Não lembro se o primeiro cai pra dar lugar ao segundo ou o segundo nem consegue entrar, mas é isso que acontece.

2.2 - SSH
Agora, se você gosta de diversas pessoas acessando o mesmo usuário em uma máquina, uma boa tela preta de linha de comandos, e simplicidade, você provavelmente está falando do SSH, que significa Secure SHell. A forma de acesso ao SSH é toda pela linha de comando, só que ele evoluiu junto com os sistemas UNIX. O SSH foi desenvolvido em Berkeley pela galera do BSD.

E ele evoluiu junto com os sistemas sobre os quais ele funciona. Ele consegue fazer tunnel e diversas outras coisas que eu nunca vi nenhum outro servidor de acesso remoto fazer. Você consegue fazer ele rodar um programa que precisa da interface gráfica usando a interface do cliente. Isso é simplesmente mágico.

Esse aqui é mais popular entre os usuários de Linux e outros sistemas abertos. Isso porque esse tipo de usuário também já está acostumado a usar a linha de comando para executar diversas tarefas e esses servidores são particularmente úteis quando as máquinas já são muito atarefadas. Esse é um dos tipo de servidor mais leve de acesso remoto que existe, mas ele tinha um concorrente.

2.3 - Telnet
Eu nunca usei Telnet. Talvez não venha a usar porque a coisa ficou obsoleta e não evoluiu como o SSH, mas a idéia era a mesma, só que ele era mais independente de plataforma e existia para os dois sistemas.

Não sei dizer exatamente porque ele caiu em desuso, mas ele ainda existe e se você saca de usar a linha de comando em Windows ele ainda vai te ajudar bastante porque ele tem uma filosofia muito similar a do primeiro.

Essa coisa é histórica. Eu não podia deixar de citar.

2.4 - Aleatório
Existem diversos softwares por aí que fazem esse tipo de coisa. O jrdesktop é um que eu testei que funciona e é feito em Java. Ele tem uma característica de interface gráfica. Ele consegue enviar o estado da interface independente do sistema operacional que o cliente estiver usando, similarmente ao RDP, e ele tem suporte a múltiplas pessoas se conectando com o mesmo usuário.

Mas aí tem que pesquisar porque existem diversos programas que fazem e permitem acesso remoto. E aqui estamos falando de programas que não usam nenhum dos protocolos de comunicação usados por esses programas já citados anteriormente. Então existe algumas questões ligadas a robustez da comunicação desses programas.



E eu vou encerrar por aqui. Ja falei bastante. Eu falei disso porque estou estudando o freerdp.com, que fornece ferramentas pra desenvolver programas que usem o RDP como protocolo de comunicação entre cliente e servidor.

Mas por enquanto é só!

Nenhum comentário:

Postar um comentário