Usuário(a):Fsmiamoto/Secure Shell
Esta é uma página de testes de Fsmiamoto, uma subpágina da principal. Serve como um local de testes e espaço de desenvolvimento, desta feita não é um artigo enciclopédico. Para uma página de testes sua, crie uma aqui. Como editar: Tutorial • Guia de edição • Livro de estilo • Referência rápida Como criar uma página: Guia passo a passo • Como criar • Verificabilidade • Critérios de notoriedade |
Pilha de protocolos TCP/IP |
---|
Camada de aplicação |
Camada de transporte |
Camada de rede |
Camada de enlace de dados |
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
- ↑ Network Working Group of the IETF, January 2006, RFC 4251, The Secure Shell (SSH) Protocol Architecture
- ↑ a b c Network Working Group of the IETF, January 2006, RFC 4252, The Secure Shell (SSH) Authentication Protocol
- ↑ Peter Bright (June 2, 2015). «Microsoft bringing SSH to Windows and PowerShell». Ars Technica Verifique data em:
|data=
(ajuda) - ↑ SSH Hardens the Secure Shell, Serverwatch.com
- ↑ «Prying Eyes: Inside the NSA's War on Internet Security». Spiegel Online. December 28, 2014 Verifique data em:
|data=
(ajuda) - ↑ SSH setup manual
- ↑ «Service Name and Transport Protocol Port Number Registry». iana.org
- ↑ Tatu Ylönen. «The new skeleton key: changing the locks in your network environment». Cópia arquivada em 20 de agosto de 2017
- ↑ Tatu Ylönen. «SSH Port». Cópia arquivada em 3 de agosto de 2017
- ↑ 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
- ↑ «Secsh Protocol Documents». VanDyke Software, Inc. Cópia arquivada em 13 de janeiro de 2010
- ↑ «SSH Frequently Asked Questions». Cópia arquivada em 10 de outubro de 2004
- ↑ «libssh»
- ↑ «RFC 4253». Section 5. Compatibility With Old SSH Versions. Cópia arquivada em 4 de julho de 2010
- ↑ «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
- ↑ «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]
- «OpenSSH» (em inglês)
- «SSH». (em inglês)
- «PUTTY» (em inglês). Cliente SSH para Windows.
- «WinSCP». Cliente SFTP para Windows. (em inglês)
- «Fugu SSH» (em inglês). Cliente SSH para OSX.
- «Web». Cliente SSH para Internet. (em inglês)
Categoria:Protocolos de criptografia Categoria:Ambiente de trabalho remoto SSH Categoria:Criptografia Categoria:Protocolos de camada de aplicação