O que é SSH
SSH, ou Secure Shell, é um protocolo de administração remota que permite aos utilizadores controlar e modificar os seus servidores remotos através da Internet. O serviço foi criado como um substituto seguro da Telnet não encriptada e utiliza técnicas criptográficas para assegurar que toda a comunicação de e para o servidor remoto acontece de uma forma encriptada. Fornece um mecanismo para autenticar um utilizador remoto, transferir entradas do cliente para o anfitrião, e reencaminhar a saída de volta para o cliente.
A figura abaixo mostra uma Janela SSH típica. Qualquer utilizador de Linux ou macOS pode SSH no seu servidor remoto directamente a partir da janela do terminal. Os utilizadores de Windows podem tirar partido de clientes SSH como Putty. Pode executar comandos shell da mesma forma que faria se estivesse a operar fisicamente o computador remoto.
br> Este tutorial SSH cobrirá as bases de como funciona o ssh, juntamente com as tecnologias subjacentes utilizadas pelo protocolo para oferecer um método seguro de acesso remoto. Cobrirá as diferentes camadas e tipos de encriptação utilizados, juntamente com a finalidade de cada camada.
Get o seu alojamento Linux VPS com Hostinger. Obtenha até 77% de desconto!
P>Comece Aqui
Como funciona o SSH
Se estiver a usar Linux ou Mac, então usar SSH é muito simples. Se utilizar Windows, terá de utilizar um cliente SSH para abrir ligações SSH. O cliente SSH mais popular é PuTTY, sobre o qual pode saber mais aqui.
Para utilizadores Mac e Linux, dirija-se ao seu programa terminal e depois siga o procedimento abaixo:
O comando SSH consiste em 3 partes distintas:
ssh {user}@{host}
O comando chave SSH instrui o seu sistema de que quer abrir uma ligação segura encriptada em Shell. {utilizador} representa a conta a que pretende aceder. Por exemplo, pode querer aceder ao utilizador raiz, que é basicamente sinónimo de administrador de sistema com direitos completos para modificar qualquer coisa no sistema. {apresentador} refere-se ao computador a que pretende aceder. 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 clicar em enter, ser-lhe-á pedido que introduza a palavra-passe para a conta solicitada. Quando a digitar, nada aparecerá no ecrã, mas a sua palavra-passe está, de facto, a ser transmitida. Uma vez terminada a digitação, carregue em enter mais uma vez. Se a sua palavra-passe estiver correcta, será recebida com uma janela de terminal remoto.
Se quiser saber mais alguns comandos SSH, descubra-os aqui.
Entendendo Diferentes Técnicas de Encriptação
A vantagem significativa oferecida pelo SSH sobre os seus antecessores é o uso de encriptação para assegurar a transferência segura de informação entre o anfitrião e o cliente. Host refere-se ao servidor remoto a que se tenta aceder, enquanto que o cliente é o computador que se está a utilizar para aceder ao host. Existem três tecnologias diferentes de encriptação utilizadas pelo SSH:
- Criptação simétrica
- Criptação assimétrica
- Hashing.
Criptação simétrica
Criptação simétrica é uma forma de encriptação em que uma chave secreta é utilizada tanto para encriptação como para desencriptação de uma mensagem tanto pelo cliente como pelo anfitrião. Efectivamente, qualquer pessoa que possua a chave pode decifrar a mensagem a ser transferida.
A encriptação simétrica é muitas vezes chamada de chave partilhada ou encriptação secreta partilhada. Há normalmente apenas uma chave que é utilizada, ou por vezes um par de chaves onde uma chave pode ser facilmente calculada utilizando a outra chave.
As chaves simétricas são utilizadas para encriptar toda a comunicação durante uma Sessão SSH. Tanto o cliente como o servidor derivam a chave secreta utilizando um método acordado, e a chave resultante nunca é revelada a terceiros. O processo de criação de uma chave simétrica é levado a cabo por um algoritmo de troca de chaves. O que torna este algoritmo particularmente seguro é o facto de a chave nunca ser transmitida entre o cliente e o anfitrião. Em vez disso, os dois computadores partilham partes públicas de dados e depois manipulam-nas para calcular independentemente a chave secreta. Mesmo que outra máquina capture os dados partilhados publicamente, não será capaz de calcular a chave porque o algoritmo de troca de chaves não é conhecido.
Deve notar-se, contudo, que o símbolo secreto é específico para cada sessão SSH, e é gerado antes da autenticação do cliente. Uma vez gerada a chave, todos os pacotes que se movem entre as duas máquinas devem ser encriptados pela chave privada. Isto inclui a senha digitada na consola pelo utilizador, pelo que as credenciais estão sempre protegidas de sniffers de pacotes de rede.
Existe uma variedade de cifras de encriptação simétricas, incluindo, mas não limitadas a, AES (Advanced Encryption Standard), CAST128, Blowfish, etc. Antes de estabelecer uma ligação segura, o cliente e um anfitrião decidem qual a cifra a utilizar, publicando uma lista de cifras suportadas por ordem de preferência. A cifra mais preferida dos clientes que suportam cifras que está presente na lista do anfitrião é usada como cifra bidireccional.
Por exemplo, se duas máquinas Ubuntu 14.04 LTS estão a comunicar entre si por SSH, usarão aes128-ctr como cifra padrão.
Asymmetric Encryption
Criptografia simétrica, a cifra assimétrica usa duas chaves separadas para encriptação e desencriptação. Estas duas chaves são conhecidas como a chave pública e a chave privada. Juntas, estas duas chaves formam um par de chaves públicas-privadas.
A chave pública, como o nome sugere é distribuída abertamente e partilhada com todas as partes. Embora esteja intimamente ligada à chave privada em termos de funcionalidade, a chave privada não pode ser calculada matematicamente a partir da chave pública. A relação entre as duas chaves é altamente complexa: uma mensagem que é codificada pela chave pública de uma máquina, só pode ser decifrada pela chave privada da mesma máquina. Esta relação unidireccional significa que a chave pública não pode desencriptar as suas próprias mensagens, nem pode desencriptar nada encriptado pela chave privada.
A chave privada deve permanecer privada, isto é, para que a ligação seja assegurada, nenhum terceiro deve nunca a conhecer. A força de toda a ligação reside no facto de que a chave privada nunca é revelada, pois é o único componente capaz de desencriptar mensagens que foram encriptadas utilizando a sua própria chave pública. Portanto, qualquer parte com capacidade para decifrar mensagens assinadas publicamente deve possuir a chave privada correspondente.
Não é utilizada a encriptação assimétrica para encriptar toda a sessão SSH, tal como a percepção geral. Em vez disso, só é utilizada durante o algoritmo de troca de chaves da encriptação simétrica. Antes de iniciar uma ligação segura, ambas as partes geram pares de chaves públicas-privadas temporárias, e partilham as suas respectivas chaves privadas para produzir a chave secreta partilhada.
Após ter sido estabelecida uma comunicação simétrica segura, o servidor utiliza a chave pública do cliente para gerar e desafiar e transmiti-la ao cliente para autenticação. Se o cliente conseguir decifrar a mensagem com sucesso, significa que detém a chave privada necessária para a ligação. A sessão SSH começa então.
Hashing
Um hashing de uma forma é outra forma de criptografia usada em Conexões Seguras de Shell. As funções de hashing unidireccional diferem das duas formas de encriptação acima referidas, no sentido em que nunca devem ser descriptografadas. Elas geram um valor único de um comprimento fixo para cada entrada que não mostra nenhuma tendência clara que possa ser explorada. Isto torna-as praticamente impossíveis de inverter.
É fácil gerar um hash criptográfico a partir de um dado input, mas impossível de gerar o input a partir do hash. Isto significa que se um cliente possuir a entrada correcta, pode gerar o hash criptográfico e comparar o seu valor para verificar se possui a entrada correcta.
SSH utiliza hashes para verificar a autenticidade das mensagens. Isto é feito utilizando HMACs, ou Hash-based Message Authentication Codes (Códigos de Autenticação de Mensagens com Base em Hash). Isto assegura que o comando recebido não é adulterado de forma alguma.
Enquanto o algoritmo de encriptação simétrica está a ser seleccionado, um algoritmo de autenticação de mensagem adequado é também seleccionado. Isto funciona de forma semelhante à forma como a cifra é seleccionada, como explicado na secção de encriptação simétrica.
Cada mensagem que é transmitida deve conter um MAC, que é calculado utilizando a chave simétrica, o número de sequência de pacotes, e o conteúdo da mensagem. É enviada fora dos dados simetricamente encriptados como a secção de conclusão do pacote de comunicação.
Como funciona o SSH com estas técnicas de encriptação
A forma como o SSH funciona é através da utilização de um modelo cliente-servidor para permitir a autenticação de dois sistemas remotos e a encriptação dos dados que passam entre eles.
SSH opera na porta TCP 22 por defeito (embora isto possa ser alterado se necessário). O anfitrião (servidor) escuta na porta 22 (ou em qualquer outra porta atribuída SSH) para conexões de entrada. Organiza a ligação segura autenticando o cliente e abrindo o ambiente shell correcto se a verificação for bem sucedida.
O cliente deve iniciar a ligação SSH iniciando o aperto de mão TCP com o servidor, assegurando uma ligação simétrica segura, verificando se a identidade mostrada pelo servidor corresponde aos registos anteriores (tipicamente registados num ficheiro de armazenamento de chaves RSA), e apresentando as credenciais de utilizador necessárias para autenticar a ligação.
Existem duas fases para estabelecer uma ligação: primeiro, ambos os sistemas devem acordar normas de encriptação para proteger comunicações futuras, e segundo, o utilizador deve autenticar-se a si próprio. Se as credenciais corresponderem, então é concedido ao utilizador o acesso.
Session Encryption Negotiation
Quando um cliente tenta ligar-se ao servidor via TCP, o servidor apresenta os protocolos de encriptação e respectivas versões que suporta. Se o cliente tiver um par de protocolos e versões semelhantes, é alcançado um acordo e a ligação é iniciada com o protocolo aceite. O servidor também utiliza uma chave pública assimétrica que o cliente pode utilizar para verificar a autenticidade do anfitrião.
Após isto ser estabelecido, as duas partes utilizam o que é conhecido como Algoritmo de Troca de Chaves Diffie-Hellman para criar uma chave simétrica. Este algoritmo permite que tanto o cliente como o servidor cheguem a uma chave de encriptação partilhada que será utilizada doravante para encriptar toda a sessão de comunicação.
Aqui está como o algoritmo funciona a um nível muito básico:
- Bambos o cliente e o servidor concordam num número primo muito grande, que obviamente não tem qualquer factor em comum. Este valor de número primo é também conhecido como o valor da semente.
- Next, as duas partes concordam num mecanismo de encriptação comum para gerar outro conjunto de valores através da manipulação dos valores da semente de uma forma algorítmica específica. Estes mecanismos, também conhecidos como geradores de encriptação, executam grandes operações sobre a semente. Um exemplo de tal gerador é o AES (Advanced Encryption Standard).
- Esta chave privada recentemente gerada, com o número partilhado e algoritmo de encriptação (por exemplo AES), é utilizada para calcular uma chave pública que é distribuída ao outro computador.
- As partes utilizam então a sua chave privada pessoal, a chave pública partilhada da outra máquina e o número primo original para criar uma chave partilhada final. Esta chave é calculada independentemente por ambos os computadores mas criará a mesma chave de encriptação em ambos os lados.
- Agora que ambos os lados têm uma chave partilhada, podem encriptar simetricamente toda a sessão SSH. A mesma chave pode ser usada para encriptar e desencriptar mensagens (leia-se: secção sobre encriptação simétrica).
li>As duas partes geram independentemente outro número primo. Esta é utilizada como chave privada secreta para a interacção.
Agora que a sessão protegida simetricamente encriptada foi estabelecida, o utilizador deve ser autenticado.
Autenticar o Utilizador
A fase final antes do utilizador ter acesso ao servidor é autenticar as suas credenciais. Para tal, a maioria dos utilizadores do SSH utilizam uma palavra-passe. O utilizador é solicitado a introduzir o nome de utilizador, seguido da palavra-passe. Estas credenciais passam com segurança através do túnel simetricamente encriptado, pelo que não há qualquer hipótese de serem capturadas por terceiros.
P>As senhas são encriptadas, ainda assim não se recomenda a utilização de senhas para ligações seguras. Isto deve-se ao facto de muitos bots poderem simplesmente forçar facilmente ou por defeito as palavras-passe e obter acesso à sua conta. Em vez disso, a alternativa recomendada é o SSH Key Pairs.
Estes são um conjunto de chaves assimétricas utilizadas para autenticar o utilizador sem a necessidade de introduzir qualquer palavra-passe.
Conclusion
Ganhar uma compreensão profunda da forma como o SSH funciona pode ajudar os utilizadores a compreender os aspectos de segurança desta tecnologia. A maioria das pessoas considera que este processo é extremamente complexo e incompreensível, mas é muito mais simples do que a maioria das pessoas pensa. Se se perguntar quanto tempo leva um computador a calcular um hash e autenticar um utilizador, bem, isso acontece em menos de um segundo. De facto, o tempo máximo é gasto na transferência de dados através da Internet.
esperadamente, este tutorial SSH ajudou-o a ver como diferentes tecnologias podem ser agrupadas para criar um sistema robusto em que cada mecanismo tem um papel muito importante a desempenhar. Além disso, agora já sabe porque é que o Telnet se tornou uma coisa do passado assim que o SSH surgiu.
Para mais tutoriais Linux, não deixe de consultar a nossa secção de tutoriais VPS.
Este post foi modificado pela última vez a 16 de Junho de 2020 4:37 am