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. O TCP/ IP transporta e entrega pacotes de dados. O uso do TCP é uma forma pela qual o SSH é diferente de outros protocolos de tunelamento, alguns dos quais usam o UDP que é mais rápido, mas menos confiável.
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.
Como o acesso SSH normalmente vem com privilégios elevados, como a capacidade de instalar aplicativos em um servidor ou excluir, alterar ou extrair dados, o acesso SSH pode ser prejudicial nas mãos de um invasor, ou mesmo de um insider bem-intencionado. O SSH tem sido usado em vários ataques documentados para exfiltrar dados privados, abrir rotas de backdoor em uma rede segura e obter acesso root em servidores.
O SSH também pode passar por firewalls que deixam a porta 22 desbloqueada (como muitos fazem), permitindo que os invasores entrem em redes seguras.
Os invasores 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 manualmente são praticamente impossíveis. As chaves SSH não expiram, a menos que sejam explicitamente revogadas, portanto, 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 é rigorosamente definida, mas a maioria das fontes a descreve como um protocolo de camada 7/camada de aplicação, como HTTP, FTP e SMTP.)
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 venha com riscos de segurança, muitas organizações dependem dele para permanecerem produtivas. Para mitigar esses riscos, a Cloudflare oferece SSH com Access for Infrastructure como parte de sua plataforma SASE. Este serviço aplica os conceitos Zero Trust ao SSH, dando às organizações controle granular sobre como os usuários podem se conectar aos seus servidores SSH. Ele limita o que um usuário pode fazer, reduzindo o impacto do uso não autorizado de SSH por um invasor ou um insider.
O SSH com o Access for Infrastructure também elimina a necessidade de gerenciar as chaves SSH (um enorme desafio, conforme descrito acima). Em vez disso, as organizações podem usar certificados SSH de curta duração emitidos por uma autoridade de certificação (CA) gerenciada pela Cloudflare.
A Cloudflare também permite que as organizações monitorem e registrem o acesso e o uso de SSH, o que é essencial tanto para a recuperação de incidentes quanto para a conformidade regulatória.
Saiba mais sobre o SSH com o Access for Infrastructure.
O SSH (Secure Shell) é um protocolo de rede que estabelece conexões criptografadas entre computadores para acesso remoto seguro. Ele opera na porta TCP 22 e fornece autenticação, criptografia e integridade para proteger os dados transmitidos por redes não seguras.
As chaves SSH autenticam os usuários por meio de criptografia assimétrica com um par de chaves pública-privada em vez de senhas tradicionais. A chave privada permanece no sistema do cliente enquanto a chave pública reside no servidor, permitindo uma autenticação segura sem transmitir as credenciais reais pela rede.
O tunelamento SSH cria uma conexão segura através da qual outros dados podem passar, criptografando efetivamente o tráfego não criptografado. Isso permite o encaminhamento de porta seguro e protege as informações confidenciais de serem interceptadas durante a transmissão.
O Telnet transmite dados em texto simples. O SSH criptografa todas as comunicações para evitar ataques de espionagem e on-path. O SSH substituiu efetivamente o Telnet como padrão para acesso remoto ao servidor devido aos seus recursos de segurança superiores.
Os tipos comuns de chaves SSH incluem RSA, ECDSA e EdDSA, que oferecem diferentes níveis de segurança e desempenho. A Ed25519, uma versão do esquema de assinatura EdDSA que usa uma curva elíptica, está se tornando cada vez mais popular porque oferece segurança forte com comprimentos de chave mais curtos e operações mais rápidas.