Como Funciona o SSH: Aprenda a Proteger Suas Conexões Já

Você provavelmente já ouviu falar do SSH, já que ele é um jargão frequentemente usado na internet quando se trata de qualquer coisa relacionada à segurança cibernética. Entretanto, é comum as pessoas se sentir sobrecarregadas na hora de aprender sobre o que é o SSH e como ele funciona.

Neste tutorial, vamos cobrir o básico do SSH, juntamente com os mecanismos básicos usados pelo protocolo para oferecer um método seguro de acesso remoto. Cobriremos as diferentes camadas e tipos de criptografia utilizados, juntamente com o propósito de cada camada.

O Que é SSH

SSH ou Cápsula de Segurança é um protocolo de administração remota que permite aos usuários controlar e modificar seus servidores pela Internet. O serviço foi criado como uma substituição segura para o Telnet não criptografado que usa técnicas criptográficas para garantir que todas as comunicações do servidor remoto aconteçam de forma criptografada. Ele fornece um mecanismo para autenticar um usuário remoto, transferindo entradas do cliente para o servidor de hospedagem e retransmitindo a saída para o cliente.

A Figura abaixo mostra uma janela SSH típica. Qualquer usuário Linux ou MacOS, pode colocar um SSH em seu servidor remoto, diretamente da janela do terminal. Os usuários do Windows podem aproveitar os clientes SSH com o Putty. Você pode executar comandos de segurança de modo remoto, da mesma maneira como se você estivesse operando fisicamente o computador.

como-ssh-funciona-hostinger

Este tutorial de SSH irá mostrar, de forma básica, como o SSH funciona, além das metodologias usadas pelo protocolo que oferece um método seguro de acesso remoto. É possível cobrir com diferentes camadas e tipos de criptografia utilizadas, além de propostas com camadas específicas.

Como Funciona o SSH

Se você estiver usando Linux ou Mac, então usar SSH é muito simples. Se você usar o Windows, você precisará utilizar um clienteSSH para abrir conexões desse tipo. O cliente SSH mais popular é o PuTTY, que você pode aprender mais sobre aqui.

Para usuários de Mac e Linux, dirija-se ao seu programa de terminal e siga o procedimento abaixo.

O comando SSH consiste em 3 partes distintas:

ssh {user}@{host}

O comando da tecla SSH instrui o sistema que deseja abrir uma Conexão de Shell segura criptografada. O {User} representa a conta à qual você deseja acessar. Por exemplo, você pode querer acessar o usuário raiz, que é basicamente sinônimo, para o administrador do sistema, com direitos completos para modificar qualquer coisa no sistema. O {Anfitrião} refere-se ao computador ao qual você deseja acessar.

Este pode ser um endereço IP (por exemplo, 244.235.23.19) ou, um nome de domínio (por exemplo, www.xyzdomain.com). Quando você pressionar enter, você será solicitado a inserir a senha da conta solicitada. Quando você digitou, nada aparecerá na tela, mas sua senha é, de fato, transmitida. Depois de terminar de digitar, pressione enter mais uma vez. Se sua senha estiver correta, você será saudado com uma janela de terminal remota.

Se você quiser saber mais sobre alguns comandos SSH, encontre-os aqui.

Entendendo Diferentes Técnicas de Criptografia

A vantagem significativa oferecida pelo SSH sobre seu antecessor está no uso da criptografia para transmitir de forma segura, uma informação entre o cliente e o servidor de hospedagem. O Host se refere ao servidor remoto que você está tentando acessar, enquanto o cliente é o computador que você está usando para acessar o servidor.

Há três tecnologias de criptografia usadas pelo SSH:

  • Criptografia simétrica
  • Criptografia assimétrica
  • Hashing

Criptografia Simétrica

É a forma em que a criptografia utiliza uma chave secreta para codificar e decodificar  uma mensagem do cliente e do servidor. De forma efetiva, qualquer mensagem pode ser decodificada, assim como, ser transferida.

criptografia-simetrica-ssh-hostinger

Criptografia simétrica pode também ser chamada de Chave Compartilhada ou Compartilhamento Secreto. Há nesse caso, uma chave que é usada, ou às vezes, um par de chaves onde uma chave pode facilitar o cálculo pra outra chave.

Chaves simétricas são usadas para codificar uma comunicação criptografada durante uma sessão de SSH. Tanto cliente como servidor derivam uma chave secreta usando um método agregador e que nunca é divulgado a terceiros.

O processo de criação de uma chave simétrica é formado pela chave de mudança de um algoritmo. O que muda particularmente nesse algoritmo é o fato que a chave nunca é transmitida entre cliente e servidor de hospedagem. Dessa forma, o compartilhamento público de pedaços de dados e a manipulação dos mesmos acontecem de forma independente, e calculam chaves secretas. Mesmo que uma outra máquina calcule a chave o algoritmo não será reconhecido.

Notamos que dessa forma, cada sessão de SSH é específica para cada token e de forma secreta, o que requer uma autenticação prioritária do cliente. Uma vez gerada a chave, todos os pacotes serão movidos a duas máquinas de forma criptografada pelas chaves privativas. Isso inclui senha digitada pelo usuário, assim como as credenciais sempre protegidas pelo pacote de rede.

Há uma variedade de cifras de criptografias simétricas, incluindo, mas não limitando ao uso da AES (Criptografia Padrão Avançada), CAST128, Blowfish, etc. Antes de se estabelecer uma conexão segura, o cliente e o servidor de hospedagem decidem quais cifras serão usadas, em uma ordem de preferência, de cifras para utilização. Por exemplo, se dois Ubuntu 14.04 LTS estiverem se comunicando um com o outro acima do SSH, será utilizado aes128-ctr como suas cifras padrão.

Criptografia Assimétrica

Ao contrário da criptografia simétrica, a criptografia assimétrica usa duas chaves separadas para criptografia e descriptografia. Essas duas chaves são conhecidas como chave-pública e chave-privada. Juntas, as chaves são conhecidas como pública-privada e formam um par de chaves.

criptografia-assimétrica-hostinger

A chave pública, como o próprio nome sugere, é aberta, distribuída e compartilhada com todas as partes. A relação entre duas chaves é extremamente complexa: uma mensagem é criptografada por uma chave pública, e pode ser decriptografada pela mesma chave privada. Essa uma relação de uma via que dá sentido a chave pública em próprias mensagens, mas não pode ser decodificada pela chave privada.

A chave privada precisa ser renomeada como privada para a conexão ser segura, e ninguém  deve saber disso. A força de toda a conexão reside no fato de que, a chave privada nunca é revelada, pois é o único componente capaz de descriptografar mensagens que foram criptografadas usando sua própria chave.

Portanto, qualquer parte com a capacidade de descriptografar mensagens publicamente assinadas deve possuir a chave privada correspondente. Ao contrário da percepção geral, a criptografia assimétrica não é usada para criptografar toda a sessão SSH. Em vez disso, ela só é usada durante o algoritmo de troca de chaves de criptografia simétrica.

Antes de iniciar uma conexão segura, ambas as partes geram pares de chaves público-privadas temporárias e compartilham suas respectivas chaves privadas para produzir a chave secreta compartilhada.

Uma vez que uma comunicação simétrica segura for estabelecida, o servidor usa a chave pública dos clientes para gerar, testar e transmitir ao cliente para autenticação. Se o cliente conseguir descriptografar com sucesso a mensagem, isso significa que ela contém a chave privada necessária para a conexão. Então, a sessão SSH começa.

Hashing

One-way hashing é mais uma forma de criptografia usada em conexões seguras de Shell. As funções do one-way-hash diferem das duas formas de criptografia acima mencionadas, no sentido de que elas nunca devem ser descriptografadas.

Eles geram um valor exclusivo, um sentido único de comprimento fixo para cada entrada que não mostra nenhuma tendência clara que possa ser explorada. Isso torna praticamente impossível de ser feita a reversão.

ssh-tutorial-hashing-hostinger

É fácil gerar uma criptografia hash vindo de uma porta de entrada, mas é impossível gerar uma entrada a partir de um hash. Isso significa que, quando um cliente determina uma entrada correta, ele pode gerar uma criptografia hash, comparar o valor e verificar onde fica a entrada correta.

O SSH usa hashes para verificar a autenticidade das mensagens. Isso é feito usando os códigos de autenticação de mensagens baseados em Hash, um comando específico não utilizado por mais ninguém. Enquanto o algoritmo criptografado está sendo selecionado, uma mensagem de autenticação é também selecionada.

Este trabalho é parecido com o da seleção de cifras, visto na seção de criptografia simétrica. Esta mensagem transmitida precisa conter um MAC, que é calculado usando uma chave simétrica, uma pacote sequencial numérico e de mensagens de conteúdo. É enviado para fora de forma simétrica, com dados criptografados em uma sessão de pacote de comunicação.

Entendendo Diferentes Técnicas de Criptografia

O modo de trabalho de SSH utiliza um modelo de cliente-servidor para autenticar com segurança dois sistemas remotos e codificar os dados que passam entre eles.

O SSH opera em portas-padrão 22 TCP (isso pode ser mudado quando necessário). O servidor captura as informações pela porta 22 (ou outra porta assinada SSH) para receber as conexões.

ssh-cliente-servidor-hostinger

O cliente precisa começar a conexão SSH inicializando o TCP com o servidor, por uma conexão segura simétrica, verificando de onde aparece a identidade previamente gravada no servidor (tipicamente gravada em uma chave de arquivo RSA) e apresentando as credenciais requeridas e autenticadas pela conexão.

Nesse caso, há dois estágios para se estabelecer uma conexão. Primeiro, ambos os sistemas precisam concordar com uma criptografia padrão para proteger as comunicações futuras, e segundo, o usuário precisa autenticar as duas. Se as credenciais se igualarem, então o usuário terá acesso garantido.

Negociando a Sessão de Criptografia

Quando um cliente tenta conectar ao servidor via TCP, o servidor apresenta a criptografia de protocolos e versões respectivas de suporte. Se o cliente tiver aceito um par de protocolos e a versão, for de comum acordo, a conexão iniciará com a aceitação do protocolo. O servidor usará uma chave pública assimétrica com o cliente que irá verificar a autenticidade da hospedagem.

Uma vez verificada e estabelecida, as duas partes usam o que é conhecido como Chave de Algoritmo de Mudança Diffie-Hellman para criar uma chave simétrica.

Este algoritmo permite que tanto o cliente como o servidor compartilhem a chave criptografada que será usada para realizar a sessão de comunicação. Aqui, segue como o algoritmo funciona em nível básico:

  1. Tanto o cliente como o servidor concordam na utilização de um número primário extenso, do jeito que não haja nenhum fator em comum. Esse primeiro valor de número é também conhecido como seed value, ou valor inicial.
  2. Em seguida, as duas partes concordam em um mecanismo de codificação comum para gerar mais um padrão de valores que manipulam os valores iniciais e os algoritmos na raiz. Estes mecanismos são também conhecidos como AES (Padrão de Criptografia Avançada).
  3. Ambas as partes geram de forma independente um número primário. Isso é usado na interação de chaves privadas secretas.
  4. Esta nova chave privada é gerada com um número compartilhado e a criptografia de um algoritmo (e.g. AES), é usada para computar uma chave pública distribuída a outro computador.
  5. As partes então usam uma chave privada personificada, a chave pública compartilhada da outra máquina e o número original para criar uma chave compartilhada final. Esta chave é calculada de forma independente por ambos os computadores, mas criará a mesma chave de criptografia em ambos os lados.
  6. Agora que ambos os lados tem uma chave compartilhada, é possível criar uma criptografia simétrica para todas a sessão de SSH. A mesma chave pode ser usada para criptografar e descriptografar mensagens (leia: criptografia simétrica na seção). Agora que a criptografia de segurança simétrica foi realizada, o usuário precisa ser autenticado.

Autenticando o Usuário

Este é o estágio final antes do usuário obter suas credenciais de acesso ao servidor de forma autenticada. Para isto, a maioria dos usuários de SSH utilizam uma senha.

O usuário precisa colocar a senha e o nome de usuário. Essas credenciais utilizam de um túnel criptrografado simétrico, então não há chance de ser capturado por terceiros.

Dessa maneira, as senhas são criptografadas, mas mesmo assim, não é recomendado utilizar conexões não seguras. Isto ocorre porque muitos robôs podem simplesmente utilizar facilmente senhas padrões e conseguir acesso a sua conta. Assim, recomendamos a utilização do pares de chave SSH.

Há um padrão de chaves assimétricas usadas para autenticar o usuário de forma que não precise se colocar nenhuma senha.

Conclusão

Ao obter uma compreensão mais profunda do funcionamento do SSH ajuda os usuários nos aspectos de segurança desta tecnologia. A maioria das pessoas considera este processo extremamente complexo e incompreensível, mas é muito mais simples do que a maioria das pessoas pensa.

Se você está se perguntando quanto tempo demora um computador para calcular um processo de criptografia e descriptografia, e autenticar um usuário, bem…isso acontece em menos de um segundo. Na verdade, o tempo máximo é gasto na transferência de dados pela Internet.

Esperamos que este tutorial do SSH o tenha ajudado a ver a maneira como diferentes tecnologias podem ser agrupadas para criar um sistema robusto, no qual cada mecanismo tem um importante para desempenhar. Além disso, agora você sabe porque a Telnet tornou-se uma coisa do passado assim que SSH surgiu.

Para mais tutoriais do Linux, certifique-se de verificar nossa seção de tutoriais do VPS.

Author
O autor

Ariane G.

A Ariane é SEO Team Leader com experiência em conteúdo, localização e SEO. Seu desafio é levar a Hostinger ao topo dos resultados no Brasil, França e Reino Unido. Eventualmente ela compartilha seu conhecimento no blog e nos tutoriais da Hostinger e no tempo livre ela gosta de explorar lugares novos e viver intencionalmente.