O protocolo Secure Shell (SSH) estabelece conexões remotas criptografadas entre computadores. Ele também permite o tunelamento.
Após ler este artigo, você será capaz de:
Conteúdo relacionado
Assine o theNET, uma recapitulação mensal feita pela Cloudflare dos insights mais populares da internet.
Copiar o link do artigo
O protocolo Secure Shell (SSH) é um método para enviar comandos com segurança a um computador em uma rede não segura. O SSH usa criptografia para autenticar e criptografar conexões entre dispositivos. O SSH também permite o tunelamento, ou encaminhamento de porta, que é quando os pacotes conseguem atravessar redes que, de outra forma, não seriam capazes de atravessar. O SSH é frequentemente usado para controlar servidores remotamente, para gerenciar a infraestrutura e para transferir arquivos.
Quando viaja, o proprietário de uma loja pode dar instruções a seus funcionários à distância para garantir que a loja funcione sem problemas enquanto ele estiver fora. Da mesma forma, o SSH permite que os administradores gerenciem servidores e dispositivos à distância. Os protocolos de gerenciamento remoto mais antigos, como o Telnet, transportavam os comandos dos administradores de uma forma que qualquer um podia ver. (Imagine se os funcionários colocassem o proprietário da loja no viva-voz durante uma chamada; todos os clientes da loja poderiam ouvir as instruções particulares). Ao contrário do Telnet, o SSH é seguro, daí o nome Secure Shell.
Conexões criptografadas remotas: o SSH estabelece uma conexão entre o dispositivo de um usuário e uma máquina distante, geralmente um servidor. Ele usa criptografia para embaralhar os dados que atravessam a conexão. Uma parte interceptadora só encontraria algo como estática, dados aleatórios que não significam nada a menos que sejam descriptografados. (O SSH usa métodos de criptografia que tornam a descriptografia proibitivamente difícil para pessoas de fora).
A capacidade fazer tunelamento: em rede, o tunelamento é um método para mover pacotes em uma rede usando um protocolo ou caminho que normalmente não seria possível usar. O tunelamento funciona envolvendo o pacote* com informações adicionais, chamadas de cabeçalhos, para alterar seu destino. Os túneis SSH usam uma técnica chamada encaminhamento de porta para enviar pacotes de uma máquina para outra. O encaminhamento de porta é explicado em mais detalhes abaixo.
*Todos os dados que atravessam uma rede são divididos em pedaços menores; esses pedaços são chamados de "pacotes."
O SSH é executado sobre o conjunto de protocolos TCP/IP, do qual grande parte da internet depende.TCP significa protocolo de controle de transmissão e IP significa protocolo de internet . O TCP/IP combina esses dois protocolos para formatar, rotear e entregar pacotes. O IP indica, entre outras informações, para qual endereço de IP um pacote deve ir (pense em um endereço de correspondência), enquanto o TCP indica para qual porta um pacote deve ir em cada endereço de IP (pense no andar de um prédio ou no número de um apartamento).
O TCP é um protocolo de camada de transporte: ele se preocupa com o transporte e a entrega de pacotes. Normalmente, protocolos adicionais são usados sobre o TCP/IP para colocar os dados transmitidos em um formato que o aplicativo possa usar. O SSH é um desses protocolos. (Outros exemplos incluem HTTP, FTP e SMTP).
Essas chaves "assimétricas", assim chamadas porque têm valores diferentes, também possibilitam que os dois lados da conexão negociem chaves idênticas, chaves simétricas, compartilhadas para criptografia adicional no canal. Após a conclusão dessa negociação, os dois lados usam as chaves simétricas para criptografar os dados que trocam.
Em uma conexão SSH, ambos os lados têm um par de chaves público/privada, e cada lado autentica o outro usando essas chaves. Isso diferencia o SSH do HTTPS, que, na maioria das implementações, verifica apenas a identidade do servidor web em uma conexão cliente-servidor. (Outras diferenças incluem o fato que o HTTPS geralmente não permite que o cliente acesse a linha de comando do servidor e que os firewalls às vezes bloqueiam o SSH, mas quase nunca bloqueiam o HTTPS).
Embora a criptografia de chave pública autentique os dispositivos conectados no SSH, um computador devidamente protegido ainda exigirá a autenticação da pessoa que estiver usando o SSH. Geralmente, isso é feito inserindo um nome de usuário e uma senha.
Depois que a autenticação é concluída, a pessoa pode executar comandos na máquina remota como se estivesse fazendo isso em sua própria máquina local.
O encaminhamento de porta é como encaminhar uma mensagem entre duas pessoas. O Bob pode enviar uma mensagem para a Alice, que, por sua vez, a transmite para Dave. Da mesma forma, o encaminhamento de porta envia pacotes de dados direcionados a um endereço de IP e porta em uma máquina para um endereço de IP e porta em uma máquina diferente.
Por exemplo, imagine que um administrador queira fazer uma alteração em um servidor dentro de uma rede privada que ele gerencia e queira fazer isso de um local remoto. No entanto, por motivos de segurança, esse servidor só recebe pacotes de outros computadores dentro da rede privada. Em vez disso, o administrador pode se conectar a um segundo servidor dentro da rede, um que esteja aberto para receber tráfego da internet, e, em seguida, usar o encaminhamento de porta SSH para se conectar ao primeiro servidor. Do ponto de vista do primeiro servidor, o pacote de dados do administrador está vindo de dentro da rede privada.
Os sistemas operacionais Linux e Mac vêm com o SSH integrado. As máquinas com Windows podem precisar da instalação de um aplicativo cliente SSH. Em computadores Mac e Linux, os usuários podem abrir o aplicativo Terminal e inserir diretamente os comandos SSH.
Tecnicamente, o SSH pode transmitir qualquer dado arbitrário por uma rede, e o tunelamento SSH pode ser configurado para uma infinidade de propósitos. No entanto, os casos de uso mais comuns do SSH são:
A porta 22 é a porta padrão para SSH. Às vezes, os firewalls podem bloquear o acesso a determinadas portas em servidores atrás do firewall, mas deixam a porta 22 aberta. Portanto, o SSH é útil para acessar servidores do outro lado do firewall: o pacote direcionado à porta 22 não é bloqueado e pode ser encaminhado para qualquer outra porta.
Qualquer protocolo pode ser abusado por partes maliciosas e a natureza criptografada além dos recursos de tunelamento do SSH o tornam particularmente atraente para invasores. O SSH tem sido usado em vários ataques documentados para extrair dados privados, abrir rotas de backdoor em uma rede segura e até mesmo obter acesso ao root em servidores.
Certos tipos de ataques também podem roubar chaves SSH para acessar computadores e servidores privados. De fato, o gerenciamento de chaves SSH é um grande problema de segurança para grandes organizações, pois seus muitos servidores podem usar milhares ou até milhões de chaves, e o monitoramento e a atualização dessas chaves são praticamente impossíveis. Quando um invasor obtém uma chave, ele pode ter acesso permanente por meses ou anos.
Uma das principais diferenças entre o SSH e outros protocolos de tunelamento é a camada OSI em que eles operam. GRE, IP-in-IP e IPsec são todos protocolos da camada de rede. Dessa forma, eles não estão cientes das portas (um conceito da camada de transporte) e, em vez disso, operam entre endereços de IP. (A camada OSI exata do SSH não é estritamente definida, mas a maioria das fontes a descreve como um protocolo da camada 7/camada de aplicação).
Outra diferença é o uso do TCP pelo SSH. O TCP, conforme descrito acima, é um protocolo de camada de transporte e um dos principais usados na internet. Outro protocolo de camada de transporte amplamente usado é o UDP, o User Datagram Protocol. O UDP é um protocolo de transporte de "melhor esforço", enviar pacotes sem garantir sua entrega, o que o torna mais rápido, mas às vezes resulta em perda de pacotes. Embora o TCP seja mais lento que o UDP, ele garante a entrega de todos os pacotes em ordem e, portanto, é mais confiável.
O IPsec usa exclusivamente o UDP em vez do TCP para permitir que os pacotes IPsec passem pelos firewalls. Portanto, os túneis IPsec são normalmente mais rápidos do que os túneis SSH, mas podem perder pacotes em trânsito. O GRE e o IP-in-IP podem ser usados com TCP ou UDP.
Por fim, o SSH criptografa apenas um aplicativo por vez, e não todo o tráfego de e para um dispositivo. Isso diferencia o SSH do IPsec, que criptografa todo o tráfego de rede, independentemente do aplicativo de onde ele vem. Por esse motivo, o SSH não é usado para configurar VPNs.
Embora o SSH seja amplamente utilizado, expor as portas de um servidor à internet é sempre arriscado. OCloudflare Zero Trust permite que as organizações disponibilizem seus servidores SSH na internet sem o risco de abrir essas portas de entrada. Os servidores podem ser conectados com segurança à rede da Cloudflare. Os administradores e outros usuários podem então acessar o servidor por meio da Cloudflare instalando um cliente Cloudflare WARP em seus dispositivos. Saiba mais aqui.