SSH é o acrônimo de Secure Shell. É um termo genérico que se refere às versões dos protocolos SSH, por exemplo, SSH-1 e SSH-2, entre outros, como OpenSSH. Embora muitas vezes seja chamado de uma versão do SSH, é, estritamente falando, um conjunto que consiste em utilitários de rede baseados no protocolo SSH.
Os protocolos SSH especificam padrões para operar serviços de rede de forma segura entre hosts não confiáveis em redes não seguras. As comunicações entre um cliente e um servidor que usam SSH são criptografadas, portanto, é ideal para uso em redes não seguras.
Originalmente, a palavra shell em SSH se referia a um programa que processava comandos Unix. Com o tempo, o termo tem sido cada vez mais aplicado às interfaces de usuário dos servidores, o que torna a interação com eles mais fácil. Um exemplo de outro shell comumente usado é o Prompt de Comando do Windows (cmd.exe), que fornece acesso às ferramentas do sistema operacional Windows. O SSH em si não é um shell, como o Bourne shell do Unix ou o shell C; em vez disso, ele cria um canal para executar um shell em um computador remoto.
O SSH gerencia mais da metade dos servidores da Web do mundo, no local e na nuvem. O SSH é usado para proteger, configurar, gerenciar, manter e operar servidores de rede, roteadores, firewalls, switches, sistemas operacionais e aplicativos. Os protocolos SSH abrangem autenticação, criptografia e integridade de dados. O SSH é tão popular que, assim como o Google, é frequentemente usado como um verbo, por exemplo, SSH-ing.
Há duas versões principais do SSH: SSH-1 e SSH-2. Um quarto tipo de SSH, o SSH-1.9, foi definido em 2006. TI é usado para identificar servidores que são compatíveis com versões anteriores do SSH, especificamente que um servidor oferece suporte ao SSH-2 e a versões anteriores do SSH.
O SSH é mais comumente usado por variantes dos sistemas operacionais Unix, por exemplo, Linux e macOS. TI também é usado com o Microsoft Windows, por exemplo, o Windows 10 usa o OpenSSH como seu cliente SSH e servidor SSH padrão.
Em comparação com o SSH-1, o SSH-2 vem com melhorias na segurança e nos recursos, mas não é compatível com o SSH-1. Uma das melhorias de segurança do SSH-2 é o uso do Diffie-Hellman key Exchange. A troca de chaves Diffie-Hellman é um método de troca de chaves criptográficas em um canal público, como a Internet. O SSH-2 também acrescentou códigos adicionais de autenticação de mensagens para melhorar a integridade dos dados.
Devido a falhas de projeto, o SSH-1 é geralmente considerado obsoleto. A maioria dos sistemas modernos é compatível com o SSH-2.
Os alertas personalizados e a visualização de dados permitem que você identifique e evite rapidamente problemas de saúde e desempenho da rede.
O SSH foi desenvolvido por Tatu Ylonen, um pesquisador da Universidade de Tecnologia de Helsinque, em 1995. Ylonen criou a primeira versão do protocolo depois que a rede da universidade foi invadida e milhares de nomes de usuário e senhas foram violados. O objetivo de Ylonen era desenvolver uma solução que ele pudesse usar para fazer logs remotos na Internet com segurança.
Primeiro, Ylonen passou algum tempo estudando criptografia, a espinha dorsal do SSH. Depois de padronizar o SSH pela IETF (Internet Engineering Task Force), ele projetou o SFTP (SSH File Transfer Protocol) e, em seguida, fundou a SSH Communications Security Corporation para fornecer suporte comercial às versões pagas do SSH.
Projetado para substituir o Telnet (porta 23) e o FTP (porta 21), Tatu Ylonen conseguiu que o SSH fosse alocado na porta 22 pela IANA (Internet Assigned Numbers Authority).
As notificações em tempo real significam uma solução de problemas mais rápida para que você possa agir antes que ocorram problemas mais sérios.
O SSH é baseado em um modelo de arquitetura cliente-servidor. Nesse modelo, um host é qualquer computador conectado a uma rede; clientes e servidores são programas executados em um host.
Um usuário usa seu computador (o cliente) para se conectar a um computador remoto (o servidor). Usando uma interface gráfica de usuário (GUI) ou uma ferramenta de linha de comando, o usuário pode transferir dados entre o cliente e o servidor. Tanto o cliente quanto o servidor devem ter o SSH ativado.
O cliente SSH é um programa no computador que faz uma solicitação que usa SSH para se conectar a um sistema remoto. Para sistemas operacionais do tipo Unix, a funcionalidade SSH é incorporada. Para sistemas operacionais que não sejam do tipo Unix, também há clientes externos disponíveis, como PuTTY, EasySSH e Cyberduck. Para sistemas operacionais Windows, há também vários clientes SSH, como PuTTY, Solar-PuTTy, WinSCP e MobaXterm.
A maioria dos clientes SSH oferece mais funcionalidades do que a execução tradicional da linha de comando SSH, por exemplo, a capacidade de executar várias sessões simultaneamente, destacar palavras-chave entre sessões, usar outros tipos de conexão, como Telnet, e salvar credenciais.
O SSH é frequentemente usado em conjunto com vários outros protocolos da Internet. O SFTP é uma alternativa segura aos protocolos tradicionais FTP e Secure Copy (SCP) que suportam transferências de arquivos entre hosts em uma rede. O SFTP permite criptografia e descriptografia rápidas e dinâmicas.
Em ambientes corporativos, as conexões SSH automatizadas são comumente usadas para transferências de arquivos criptografados e autenticação automatizada para processos máquina a máquina (M2M). As tarefas automatizadas incluem backup e arquivamento de dados, relatórios, limpeza de bancos de dados, backups de sistemas e manutenção de redes.
As empresas podem usar túneis SSH para compartilhar arquivos com segurança com os clientes.
O SSH permite logins seguros em computadores remotos. TI é usado rotineiramente por administradores de rede e webmasters para proteger transferências de arquivos, automatizar transferências de dados usando scripts SSH, estabelecer VPNs, testar aplicativos, reinicializar sistemas, alterar permissões de arquivos e gerenciar o acesso de usuários. A maioria dos administradores usa rotineiramente um cliente SSH para acessar com segurança servidores remotos, switches, roteadores, plataformas de virtualização e sistemas operacionais. As tarefas incluem streaming de vídeo usando SFTP, criação de uma única sessão autenticada para várias conexões, realização de backups remotos, conexão de pastas remotas a um diretório local e uso de uma chave de criptografia para várias contas em vez de senhas diferentes.
Normalmente, os aplicativos TCP/IP usam uma porta dedicada para se comunicar. Com o encaminhamento de portas, vários aplicativos podem usar uma única porta, ou seja, a porta 22.
Para estabelecer uma conexão SSH, o computador remoto deve executar um daemon SSH (sshd), que é um programa que escuta as solicitações de conexão, normalmente na porta 22, autentica as solicitações de conexão e aciona as conexões.
O daemon SSH permite a troca criptografada de dados entre hosts não confiáveis em uma rede não segura usando o protocolo SSH. Um daemon é um aplicativo que é executado em segundo plano e, como qualquer outro aplicativo, é codificado e configurado para executar tarefas específicas para um aplicativo específico.
O SSH é definido por várias publicações de Request For Comments (RFCs). Uma RFC descreve padrões, protocolos e tecnologias que são relevantes para a Internet, como o SSH. Por exemplo, há documentos padrão para todas as camadas do SSH, algoritmos criptográficos do SSH e certificados de segurança do SSH. Há também uma RFC que especifica que a camada de transporte do SSH deve permitir o perfect forward secrecy (PFS). O perfect forward secrecy garante que, se a chave privada de um servidor for comprometida, um hacker não poderá acessar os dados transmitidos anteriormente.
O SSH é composto de três camadas: transporte, autenticação de usuário e camadas de conexão.
A camada de transporte lida com a criptografia e a descriptografia dos dados trocados. A camada de transporte também autentica o servidor e estabelece a confidencialidade e a integridade.
A camada de autenticação do usuário autentica a identidade do cliente.
A camada de conexão gerencia os canais pelos quais os dados trafegam entre as partes autenticadas no processo de troca de dados. Há canais, ou fluxos de dados, para diferentes tipos de comunicação, por exemplo, conexões simultâneas a diferentes terminais ou serviços remotos ou sessões X11 encaminhadas.
A principal vantagem do SSH em relação às alternativas é o uso de criptografia. O SSH criptografa todo o tráfego entre um cliente e um servidor enquanto está em trânsito. Qualquer pessoa que escutar o tráfego, por exemplo, usando um programa de espionagem de pacotes, não conseguirá acessar ou descriptografar os dados transmitidos.
O SSH usa três métodos de criptografia: criptografia simétrica, criptografia assimétrica e hashing.
A criptografia simétrica envolve uma chave secreta que é usada tanto para a criptografia quanto para a descriptografia de uma conexão SSH inteira. A chave simétrica é criada usando um algoritmo de Exchange de chaves acordado.
A criptografia assimétrica envolve duas chaves separadas - um par de chaves público-privadas - para criptografia e descriptografia. Em uma sessão SSH, a criptografia assimétrica é usada para configurar a criptografia simétrica. No estágio de criptografia simétrica, o cliente e o servidor produzem pares de chaves temporárias e trocam a chave pública para criar a chave simétrica. A criptografia assimétrica também é usada para autenticar a identidade do cliente para o servidor.
O método de hashing converte os dados que estão sendo transmitidos em outro valor exclusivo. O SSH usa hashing para verificar a autenticidade das mensagens.
O SSH oferece suporte a encaminhamento de porta e tunelamento. Os termos encaminhamento de porta e tunelamento são frequentemente usados de forma intercambiável. No entanto, tunelamento é um termo mais abrangente que descreve três tipos de encaminhamento de porta: encaminhamento de porta local, encaminhamento de porta remota e encaminhamento de porta dinâmica.
O tunelamento SSH pode ser usado para transferir tráfego não criptografado em uma rede por meio de um canal criptografado. Por exemplo, um túnel SSH criptografado pode ser criado para transmitir dados entre um servidor FTP e um cliente, embora o protocolo FTP não seja criptografado. Os túneis SSH também podem ser usados para acessar conteúdo com restrição geográfica e para contornar firewalls.
O SSH permite o encaminhamento de X11, que pode ser usado quando um usuário deseja se conectar a um servidor remoto e também precisa de uma interface de usuário para visualizar o aplicativo em execução ou os dados. O encaminhamento de X11 permite que um usuário inicie um aplicativo remoto e transmita a saída do aplicativo para uma máquina Windows local.
O PRTG é um software abrangente de monitoramento de rede e mantém o controle de toda a sua infraestrutura de TI.
O SSH foi projetado para substituir protocolos shell remotos não seguros, como Telnet, FTP, rsh, rlogin e rexec. Esses protocolos são inerentemente inseguros, pois trocam informações, inclusive senhas, em texto simples, o que é vulnerável a violações de segurança. A principal vantagem do SSH é o uso de criptografia para garantir a transferência segura de informações entre o cliente e o servidor.
O SSH permite que os usuários executem comandos shell em um computador remoto da mesma forma como se estivessem sentados em frente ao computador físico. Usando comandos e scripts SSH, os administradores podem visualizar, remover ou mover arquivos, criar novas pastas, arquivos e diretórios e fazer download de arquivos.
A camada de conexão SSH permite vários fluxos de dados por meio de uma única conexão TCP. Essa capacidade é chamada de multiplexação e significa que são necessárias menos conexões TCP, o que permite que recursos escassos sejam compartilhados e também reduz a sobrecarga.
A capacidade do SSH de usar o túnel e o encaminhamento de portas pode ser usada para contornar firewalls restritivos.
O SSH permite que os administradores de rede limitem remotamente o acesso dos usuários a uma rede.
As chaves SSH, em vez de nomes de usuário e senhas, podem ser usadas para autenticar os usuários que fazem logs em um sistema. Um agente SSH é um programa que armazena chaves privadas na memória e fornece serviços de autenticação. As chaves SSH são mais difíceis de serem hackeadas do que as senhas, embora o processo de autenticação SSH seja um pouco mais difícil de configurar do que o uso de nomes de usuário e senhas. O uso de chaves SSH reduz o sucesso de ataques de força bruta com senhas.
Os túneis SSH são usados na computação em nuvem para resolver problemas de conectividade e evitar vulnerabilidades de segurança em que as máquinas virtuais baseadas em nuvem são expostas diretamente à Internet. Os túneis SSH fornecem um caminho seguro pela Internet e por meio de um firewall para uma máquina virtual.
O SSH-2 é geralmente considerado seguro. Entretanto, todas as implementações de segurança têm vulnerabilidades.
O SSH é compatível com o tunelamento, usado, por exemplo, por administradores para fazer o tunelamento em uma rede a partir de locais remotos. No entanto, transações SSH de saída irrestrita podem resultar em vulnerabilidades de segurança. O tunelamento pode criar backdoors para hackers e também pode violar algumas normas de segurança, como PCI e HIPAA. As transações SSH de entrada podem ser controladas mais facilmente do que as transações SSH de saída, por exemplo, redirecionando as conexões da porta 22 (SSH) para um endereço IP específico.
As chaves SSH, geralmente usadas pelos usuários para fazer logs em vez de senhas, nunca expiram. Em grandes organizações, pode haver centenas de chaves SSH em vários servidores. O gerenciamento inadequado das chaves de usuário SSH pode resultar na proliferação de chaves, o que pode fornecer uma porta dos fundos para os hackers. O tunelamento SSH pode permitir que um invasor use essas chaves SSH para contornar firewalls. No entanto, os ataques de tunelamento não são específicos dos sistemas que usam SSH.
Alguns hosts podem compartilhar a mesma chave porque ela foi pré-configurada em um dispositivo. As chaves privadas desses dispositivos podem ser acessadas por meio de engenharia reversa. Chaves mais antigas e de comprimento curto também podem permitir que um invasor derive os valores das chaves privadas.
O SSH pode ser lento para responder a comandos de alta largura de banda em conexões lentas.
Alguns estudos sugerem que a maioria das falhas de segurança do SSH se deve ao mau gerenciamento do SSH pelos departamentos de TI.