O que é SSH? Protocolo SSH explicado

A cada dia que passa, a segurança desempenha um papel mais importante na internet. O protocolo de segurança SSH (Secure Socket Shell), por exemplo, parte do conjunto de protocolos TCP/IP, permite que usuários estabeleçam uma conexão segura entre dois computadores. Ele é usado desde 1995 e foi atualizado diversas vezes ao longo do tempo. Aprenda o que é SSH, conheça seus termos mais importantes e entenda como a criptografia funciona no protocolo SSH.

Fato

Shell é a parte do sistema operacional que permite que usuários acessem o computador. Normalmente, a expressão diz respeito à uma linha de comando baseada em texto (prompt de comando, terminal ou console), mas a interface gráfica do usuário também é chamada de shell. Já o método de estabelecer uma conexão é chamado Secure Socket Shell.

Para que serve o protocolo SSH?

O protocolo SSH possibilita que dois computadores estabeleçam uma conexão direta e segura dentro de uma rede potencialmente insegura, como é o caso da internet. Seu uso é necessário para que terceiros não consigam acessar o fluxo de dados, pois isso pode fazer com que dados sensíveis caiam em mãos erradas. Antes do surgimento do Secure Socket Shell, outras formas de estabelecer uma conexão direta entre dois computadores existiam. No entanto, as aplicações da época, como Telnet, Remote Shell e rlogin, eram inseguras. Já o SSH criptografa a conexão entre dois computadores, permitindo que um desses computadores seja operado remotamente pelo outro.

O protocolo SSH não oferece apenas uma conexão criptografada, como também garante que conexões sejam estabelecidas somente entre computadores designados, ou seja, ataques man-in-the-middle ficam impossibilitados. Isso assegura que dados transmitidos não sejam manipulados enquanto estiverem a caminho do destinatário. Computadores remotos sempre foram acessados por linhas de comando, usadas para enviar instruções ao dispositivo remoto. No entanto, hoje também é possível usar o protocolo VNC (Virtual Network Computing) para espelhar uma interface gráfica do usuário (que nem sempre está disponível nos servidores) no seu próprio computador e, dessa forma, controlar outro computador.

Muitas áreas podem aplicar o protocolo SSH para:

  • Gerenciar servidores que não podem ser acessados localmente.
  • Transmitir arquivos com segurança.
  • Criar backups com segurança.
  • Possibilitar a conexão entre dois computadores utilizando criptografia de ponta-a-ponta.
  • Fazer a manutenção de outros computadores remotamente.

O desenvolvimento do SSH também influenciou outros protocolos. Por exemplo, o protocolo FTP (inserguro), usado para transferir arquivos entre servidores, passou por aprimoramentos que deram origem ao SFTP: SSH File Transfer Protocol.

Uma vantagem do SSH é que o protocolo pode ser executado em todos os sistemas operacionais comuns. Originalmente uma aplicação para Unix, o protocolo SSH também passou a ser implementado em todas as distribuições do Linux e do macOS. Ele também pode ser usado no Windows, caso você instale o programa correspondente.

SSH vs OpenSSH

O Secure Socket Shell foi criado em 1995, em um projeto de código aberto. Nesse mesmo ano, o desenvolvedor Tatu Ylönen fundou uma empresa que expandiu esse protocolo e começou a trabalhá-lo comercialmente. Assim o projeto, inicialmente aberto, se transformou em um software privado. A comunidade de TI não aceitou a “privatização” e desenvolveu uma divisão aberta do protocolo SSH-1: o OpenSSH. Como ambos continuam a ser desenvolvidos, duas variações desse protocolo estão disponíveis: o protocolo privado SSH-2 (mais evoluído, já que vulnerabilidades de segurança foram encontradas no SSH-1), e o protocolo público OpenSSH.

O OpenSSH e o SSH são relativamente parecidos em termos de funcionalidade e escopo. A diferença está, principalmente, no custo e no suporte oferecido. Caso opte por adquirir o protocolo SSH, você receberá suporte 24 horas. Esse recurso é especialmente útil para grandes empresas, com gerentes de TI alternados. Por outro lado, o OpenSSH oferece a vantagem de ter uma comunidade e de ser de código aberto, o que significa que o projeto está em constante desenvolvimento e conta com contribuições de diversos especialistas.

Como funciona o protocolo SSH?

O Secure Socket Shell faz uso de múltiplas técnicas de criptografia e autenticação. Por um lado, isso garante que os fluxos de dados não sejam lidos ou manipulados. Por outro lado, somente dispositivos autorizados podem entrar em contato uns com os outros.

Autenticação

Para começar, o servidor SSH e o cliente autenticam um ao outro. O servidor envia um certificado ao cliente para verificar se é o servidor correto. Sempre que esse contato é estabelecido, há o risco de um terceiro se colocar entre os dois participantes e interceptar a conexão. No SSH, o próprio certificado é criptografado, não sendo possível imitá-lo. Como o cliente sabe qual é o certificado correto, nenhum terceiro consegue contatar o servidor em questão.

No entanto, após a autenticação do servidor, o cliente também precisa comprovar que tem acesso autorizado. Uma senha pode ser usada para essa finalidade. Ela (ou seu valor de hash criptografado) é armazenada no servidor. Assim, usuários são obrigados a inserir a senha sempre que se conectarem a um servidor diferente durante a mesma sessão. Existe também um método alternativo de autenticação do cliente, que usa um par de chaves composto por uma chave pública e uma chave privada.

A chave privada é criada exclusivamente para o seu próprio computador, e é protegida por uma frase-passe, mais longa que uma senha comum. Ela é armazenada somente no seu computador e permanece sempre oculta. Caso queira estabelecer uma conexão SSH, você deverá informar a frase-passe para ter acesso à chave privada.

Também existem chaves públicas no servidor (assim como no próprio cliente). O servidor cria um problema criptográfico com sua chave pública e o envia ao cliente. Em seguida, o cliente descriptografa o problema com sua própria chave privada, devolve a solução e informa ao servidor que a conexão foi permitida, uma vez que é legítima.

Durante uma sessão, você só precisa inserir a frase-passe uma vez para se conectar a qualquer número de servidores. Ao final dela, os usuários devem se desconectar de seus computadores locais para garantir que terceiros não tenham acesso físico a eles, que têm acesso ao servidor.

Criptografia

Após a autenticação mútua, os dois participantes da comunicação estabelecem uma conexão criptografada. Para que isso ocorra, é gerada uma chave que expira quando a sessão é encerrada. Ela não deve ser confundida com o par das chaves pública e privada, que é usado apenas para a troca de chaves. A chave usada na criptografia simétrica é válida apenas por uma sessão. Tanto cliente quanto servidor têm a mesma chave, portanto, todas as mensagens trocadas entre eles podem ser criptografadas e descriptografadas. Cliente e servidor criam a chave simultaneamente, mas de forma independente. No chamado algoritmo de troca de chaves, ambas as partes usam tanto informações públicas quanto secretas para criar a chave.

Outra forma de criptografia realizada pelo protocolo SSH ocorre por meio de hashing. Um hash é um tipo de assinatura de dados transmitidos. Um algoritmo gera um hash único a partir dos dados a serem transmitidos. Se eles forem manipulados, o valor de hash é automaticamente alterado. Dessa forma, o destinatário saberá que terceiros alteraram os dados no meio do caminho. Os valores de hash são projetados de forma que não possam ser simulados com facilidade. Não é possível criar duas transmissões diferentes com o mesmo hash. O recurso é conhecido como proteção contra colisão (collision protection).

Portas SSH

Portas TCP são terminais (endpoints) que abrem servidores e clientes, permitindo a comunicação entre eles. É por meio das portas que os parceiros de comunicação recebem e enviam pacotes de dados. O TCP tem um espaço de endereçamento de 16 bits, o que possibilita a abertura de 65.535 portas. No entanto, a Internet Assigned Numbers Authority (IANA) atribui um número de porta para determinadas aplicações. Por padrão, todas as conexões SSH são executadas na porta 22.

Nota

Como a porta pela qual as conexões SSH passam é amplamente conhecida e transmite dados sensíveis, ela é o destino favorito de criminosos virtuais. Por esse motivo, alguns usuários acreditam que faz sentido realocar a porta SSH. No entanto, isso só aumenta a proteção a curto prazo. Com um port scanner, é possível descobrir todas as portas usadas por um computador.

O protocolo SSH também permite o redirecionamento de portas (port forwarding). A porta SSH de um cliente ou de um servidor é usada por um outro participante dentro da rede local, para criar uma conexão segura pela internet. Para fazer isso, os participantes criam um túnel: os dados são recebidos pela porta 22 e encaminhados ao cliente que está na rede local.

Clientes SSH

O cliente SSH costuma ser o próprio computador que você usa para estabelecer uma conexão com o servidor. Em alguns casos (a depender do seu sistema opercional), você precisará instalar um software para estabelecer uma conexão SSH. Esse tipo de programa costuma ser chamado de SSH clients. O Tectia SSH é pago, vem da comunicação de segurança SSH e contém, adicionalmente, um server software. Há, também, alternativas gratuitas, como o software de código aberto PuTTy (para Windows e Linux) e o lsh, que funciona em todos os sistemas operacionais baseados em Unix.

Dica

Alguns programas oferecem aos usuários uma interface gráfica que simplifica a configuração e a implementação do protocolo SSH. A princípio, o Secure Socket Shell também pode ser executado por linha de comando, mesmo sem ter sido instalado no macOS ou em outro sistema operacional em Unix.

Servidores SSH

O servidor SSH é a contraparte do cliente. O termo também é usado para se referir ao software. Boa parte dos softwares de clientes também funciona nos servidores. Além disso, existem softwares projetados exclusivamente para servidores SSH. É normal que o SSH seja iniciado nos servidores quando o computador é inicializado. Assim, você consegue acessar o servidor externamente a qualquer momento, via SSH.

A rigor, o servidor SSH não precisa estar localizado em um centro de dados remoto. Por exemplo, um usuário também pode instalar um servidor SSH em seu próprio computador e aproveitar as vantagens do redirecionamento de portas do conforto do seu lar.

Este artigo foi útil?
Para melhorar a sua experiência, este site usa cookies. Ao acessar o nosso site, você concorda com nosso uso de cookies. Mais informações
Page top