Usuário(a):Fsmiamoto/Secure Shell

Origem: Wikipédia, a enciclopédia livre.

Secure Shell (SSH) é um protocolo de rede criptográfico para operação de serviços de rede de forma segura sobre uma rede insegura.[1] O melhor exemplo de aplicação conhecido é para login remoto de usuários a sistemas de computadores.

O SSH fornece um canal seguro sobre uma rede insegura em uma arquitetura cliente-servidor, conectando uma aplicação cliente SSH com um servidor SSH.[2] Aplicações comuns incluem login em linha de comando remoto e execução remota de comandos, mas qualquer serviço de rede pode ser protegido com SSH. A especificação do protocolo distingue entre duas versões maiores, referidas como SSH-1 e SSH-2.

A aplicação mais visível do protocolo é para acesso a contas shell em sistemas operacionais do tipo Unix, mas também verifica-se algum uso limitado no Windows. Em 2015, a Microsoft anunciou que incluiriam suporte nativo para SSH em uma liberação futura.[3]

O SSH foi projetado como um substituto para o Telnet e para protocolos de shell remotos inseguros como os protocolos Berkeley rlogin, rsh e rexec. Estes protocolos enviam informações, notavelmente senhas, em texto puro, tornando-os suscetíveis à interceptação e divulgação usando análise de pacotes.[4] A criptografia usada pelo SSH objetiva fornecer confidencialidade e integridade de dados sobre uma rede insegura, como a Internet, apesar dos arquivos vazados por Edward Snowden indicarem que a Agência de Segurança Nacional pode algumas vezes descriptografar o SSH, permitindo-os ler o conteúdo de sessões SSH.[5]

Definição[editar | editar código-fonte]

O SSH usa criptografia de chave pública para autenticar o computador remoto e e permiti-lo autenticar o usuário, se necessário.[2] Há várias maneiras de usar o SSH, uma é usar pares de chave pública-privada geradas automaticamente para simplesmente encriptar uma conexão de rede e então usar autenticação por senha para logar.

Outra maneira é usar um par de chaves pública-privada geradas manualmente para realizar a autenticação, permitindo que usuários ou programas loguem sem ter que especificar uma senha. Neste cenário, qualquer um pode produzir um par correspondente de chaves diferentes (pública e privada). A chave pública é colocada em todos os computadores que devem permitir o acesso ao proprietário da chave privada correspondente (o proprietário mantem o segredo da chave privada). Uma vez que a autenticação é baseada na chave privada, a chave em si nunca é transferida por meio da rede durante a autenticação. O SSH apenas verifica se a mesma pessoa que oferece a chave pública também possui a chave privada correspondente. Em todas as versões do SSH é importante verificar chaves públicas desconhecidas, isto é, associar as chaves públicas com as identidades, antes de aceitá-las como válidas. Aceitar a chave pública de um atacante sem validação autorizará o atacante como um usuário válido.

Gerenciamento de chaves[editar | editar código-fonte]

Em sistemas do tipo Unix, a lista de chaves públicas autorizadas é normalmente armazenada no diretório home do usuário que está permitido logar remotamente, no arquivo ~/.ssh/authorized_keys.[6] Este arquivo é considerado pelo SSH apenas se ele não puder ser alterado por nada além do proprietário e do root. Quando a chave pública está presente no terminal remoto e a chave privada correspondente está presente no terminal local, a digitação da senha não é mais necessária (alguns softwares como a pilha Message Passing Interface (MPI) pode precisar deste acesso sem senha para rodar adequadamente). Entretanto, para segurança adicional a chave privada em si pode ser bloqueada com uma senha.

A chave privada também pode ser procurada em locais padrões e seu caminho completo pode ser especificado como uma definição de linha de comando (a opção -i para ssh). O utilitário ssh-keygen produz as chaves pública e privada, sempre em pares.

O SSH também suporta autenticação baseada em senha que é criptografada por chaves geradas automaticamente. Neste caso o atacante pode imitar o lado servidor legítimo, solicitar a senha e obtê-la (ataque homem-no-meio). Entretanto, isto é possível apenas se os dois lado nunca tiverem se autenticado antes, uma vez que o SSH lembra a chave que o lado servidor usou anteriormente. O cliente SSH lança um aviso antes de aceitar a chave de um novo servidor desconhecido previamente. A autenticação por senha pode ser desabilitada.

Uso[editar | editar código-fonte]

O SSH é normalmente usado para login em uma máquina remota e execução de comandos, mas também suporta tunelamento, redirecionamento de portas TCP e conexões X11. Ele pode transferir arquivos usando os protocolos SSH file transfer (SFTP) ou secure copy (SCP).[2] O SSH utiliza o modelo cliente-servidor.

A porta TCP padrão 22 tem sido usada para contatar servidores SSH.[7]

Um programa cliente SSH é tipicamente utilizado para estabelecer conexões à um daemon SSH remoto. Ambos os programas são comumente encontrados na maioria dos sistemas operacionais modernos baseados em UNIX, incluindo macOS, distruibuições Linux, OpenBSD, FreeBSD e NetBSD. Notóriamente, versões do Windows anteriores ao Windows 10 Versão 1709 não incluiam clientes SSH por padrão, abrindo espaço para softwares de terceiros como o PuTTY.

SSH possui grande relevância para a Computação em Nuvem, permitindo conexões remotas à servidores através da Internet, sem comprometer a segurança dos dados.

História e desenvolvimento[editar | editar código-fonte]

Versão 1.x[editar | editar código-fonte]

Em 1995, Tatu Ylönen, pesquisador na Universidade de Tecnologia de Helsínquia, na Finlândia, criou a primeira versão do protocolo, chamado atualmente de SSH-1, motivado pelo ataque utilizando analisador de pacotes na rede de sua universidade[8]. O objetivo do SSH era substituir os protocolos rlogin, TELNET, FTP[9] e remote Shell. Tais protocolos não incluíam autenticação forte ou garantia de confidencialidade. Ylönen lançou sua implementação como um freeware em julho de 1995. A ferramenta rapidamente ganhou popularidade, chegando vinte mil usuários em cinquenta países no final de 1995.

Em dezembro de 1995, Ylönen fundou a SSH Communication Security para desenvolver e propagar o SSH. A versão original do software SSH usava várias partes de software livre, como GNU Multi-Precision Library. Em versões posteriores lançadas pela SSH Communication Security, porém, utilizou software proprietário.

É estimado que o número de usuários atingiu dois milhões no ano de 2000.[10]

Versão 2.x[editar | editar código-fonte]

O IETF nomeou de “secsh” o grupo responsável pela versão 2 do protocolo SSH[11]. Uma versão revisada do protocolo chamada SSH-2 foi adotada como um padrão em 2006. Essa versão era incompatível com o SSH-1, tendo melhoras de segurança e recursos. Melhor segurança foi implementada, por exemplo, através do use da troca de chaves de Diffie–Hellman e verificação de integridade forte, através de autenticador de mensagem. Novos recursos do SSH-2 incluem a capacidade de executar qualquer número de sessões shell através de uma única conexão SSH[12]. Devido às maior popularidade do SSH-2 sobre o SSH-1, algumas implementações como libssh (v0.8.0)[13], Lshu e Dropbear suportam apenas o SSH-2.

Version 1.99[editar | editar código-fonte]

Em janeiro de 2006, a RFC 5253 especificou que servidores SSH que suportam a versão 2.0 ou mais antigas deveriam identificar sua versão como 1.99[14]. Essa não é versão real, mas sim um método para identificar retrocompatibilidade.

OpenSSH and OSSH[editar | editar código-fonte]

Em 1999, desenvolvedores tentando criar uma versão livre do SSH utilizaram a versão 1.2.12 do programa original, que foi o último lançamento do software como um Software de código aberto. Björn Grönvall utilizou isso como base para criar o OSSH. Algum tempo depois, desenvolvedores do OpenBSD ramificaram o código de Grönvall e criaram o OpenSSH, que foi incluído na versão 2.6 do OpenBSD. Dessa versão, uma ramificação de portabilidade foi criada para portar o OpenSSH para outros sistemas operacionais[15].

Em 2005, OpenSSH era a implementação de SSH mais popular, sendo a padrão utilizada em um grande número de sistemas operacionais. OSSH se tornou obsoleto ao mesmo tempo[16]. O OpenSSH continua a ser mantido e suporta o protocolo SSH-2, tendo tirado totalmente o suporte ao SSH-1 do código com o lançamento do OpenSSH 7.6.

Referências

  1. Network Working Group of the IETF, January 2006, RFC 4251, The Secure Shell (SSH) Protocol Architecture
  2. a b c Network Working Group of the IETF, January 2006, RFC 4252, The Secure Shell (SSH) Authentication Protocol
  3. Peter Bright (June 2, 2015). «Microsoft bringing SSH to Windows and PowerShell». Ars Technica  Verifique data em: |data= (ajuda)
  4. SSH Hardens the Secure Shell, Serverwatch.com
  5. «Prying Eyes: Inside the NSA's War on Internet Security». Spiegel Online. December 28, 2014  Verifique data em: |data= (ajuda)
  6. SSH setup manual
  7. «Service Name and Transport Protocol Port Number Registry». iana.org 
  8. Tatu Ylönen. «The new skeleton key: changing the locks in your network environment». Cópia arquivada em 20 de agosto de 2017 
  9. Tatu Ylönen. «SSH Port». Cópia arquivada em 3 de agosto de 2017 
  10. Nicholas Rosasco and David Larochelle. «How and Why More Secure Technologies Succeed in Legacy Markets: Lessons from the Success of SSH» (PDF). Quoting Barrett and Silverman, SSH, the Secure Shell: The Definitive Guide, O'Reilly & Associates (2001). Dept. of Computer Science, Univ. of Virginia. Consultado em 19 de maio de 2006. Cópia arquivada (PDF) em 25 de junho de 2006 
  11. «Secsh Protocol Documents». VanDyke Software, Inc. Cópia arquivada em 13 de janeiro de 2010 
  12. «SSH Frequently Asked Questions». Cópia arquivada em 10 de outubro de 2004 
  13. «libssh» 
  14. «RFC 4253». Section 5. Compatibility With Old SSH Versions. Cópia arquivada em 4 de julho de 2010 
  15. «OpenSSH: Project History and Credits». openssh.com. 22 de dezembro de 2004. Consultado em 27 de abril de 2014. Cópia arquivada em 24 de dezembro de 2013 
  16. «OSSH Information for VU#419241». Cópia arquivada em 27 de setembro de 2007 

Ver também[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]

Ícone de esboço Este artigo sobre redes de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.

Categoria:Protocolos de criptografia Categoria:Ambiente de trabalho remoto SSH Categoria:Criptografia Categoria:Protocolos de camada de aplicação