Informática Numaboa - Referências
Protocolo SSH
Sab 18 Abr 2009 00:00 |
- Detalhes
- Categoria: Rede
- Atualização: Domingo, 21 Fevereiro 2010 13:05
- Autor: vovó Vicki
- Acessos: 9842
O protocolo de rede SSH foi criado para permitir conexões seguras entre máquinas e permitir a execução de comandos remotos de shell. Aliás, é daí que deriva o nome deste protocolo.
SSH vem de Secure SHell. Antes deste protocolo usava-se o Telnet e o RLogin, que também permitem fazer login num computador multi-usuário através de uma máquina remota que esteja na mesma rede. Acontece que o tráfego IP normal possui as seguintes fraquezas que podem ser exploradas para comprometer a segurança:
- Autenticação deficiente baseada em endereços IP que podem ser falsificados (spoofing) ou em senhas que podem ser farejadas (sniffing).
- Falta de privacidade porque os pacotes podem ser farejados (sniffing).
- Falta de proteção de integridade porque as conexões podem ser sequestradas (hijacked}.
O SSH foi projetado para eliminar estes problemas oferecendo um mecanismo de autenticação mais robusto para identificar tanto as máquinas quanto os usuários e para assegurar conexões seguras. Este protocolo pode substituir as funções do RSH, do RCP e do RLogin e, em muitos casos, também pode substituir o Telnet e o FTP, além de expandir outras conexões (por exemplo, entre clientes e servidores X, POP ou NNTP).
O SSH foi criado em 1995 por Tatu Ylonen, um pesquisador da Universidade de Tecnologia de Helsinki, Finlândia. Após um incidente de segurança na universidade, Ylonen criou a tecnologia da Secure Shell para criptografar os dados transmitidos em redes TCP/IP. A primeira versão recebeu o nome de SSH1. Em 2006, a sétima versão do SSH foi aceita como padrão pela IETF, adquirindo o status de tecnologia padrão junto com o HTTP, TCP e IP.
Sistemas operacionais multi-usuário, como UNIX, Linux e VMS, geralmente oferecem uma interface de comando de linha que permite digitar os comandos desejados, inclusive os do SSH (se estiver disponível). Mas nem tudo precisa ser feito "na unha". Existem interfaces gráficas excelentes para fazer este tipo de conexão segura. Dois exemplos são o PuTTY e o WinSCP (costumo usar os dois) que você encontra na seção de downloads da Aldeia. Procure em Informática/Shell.
O SSH foi projetado para fornecer autenticação e comunicação seguras através de canais inseguros. Permite logins, execução de comandos e cópias remotas substituindo o RLogin, RSH, RCP e RDist. Possui as seguintes características:
- Autenticação segura: o SSH pode usar autenticação de hosts .rhosts com RSA e autenticação RSA pura.
- A encriptação de toda comunicação é automática e transparente. A troca de chaves é feita com RSA. A sessão é encriptada com uma cifra (IDEA, DES ou DES triplo). A encriptação é iniciada antes da autenticação, de modo que nenhuma senha é enviada aberta.
- Sessões DISPLAY X11 seguras são configuradas automaticamente no servidor, redespachando qualquer conexão X11 através de um canal seguro.
- O redirecionamento bi-direcional de redespacho de portas TCP/IP arbitrárias pode ser feito através de um canal encriptado.
- A substituição de programas inseguros por programas seguros é automática. Arquivos .rhost antigos ainda são válidos, mas com autenticação forte, se o administrador do sistema instalar arquivos com a chave do host.
- Com a autenticação RSA, apenas e tão somente a chave privada é confiável.
- Tanto o cliente quanto o servidor usam RSA para se autenticarem. O cliente autentica o servidor no início de cada conexão e o servidor autentica o cliente antes que permita o acesso a .rhosts ou /etc/hosts.equiv. Isto ataques ao DNS, de roteamento, IP-spoofing e man-in-the-middle.
- A chave de autenticação do host é tipicamente de 1024 bits. Ela pode ser gerada e distribuída de forma certralizada e automática ou ser gerada manualmente por cada usuário para uso pessoal. Tanto as chaves centralizadas quanto as chaves por usuário são usadas.
- A chave de autenticação do usuário é tipicamente de 1024 bits. Cada usuário pode criar quantas chaves RSA quiser. As chaves públicas são armazenadas num arquivo privado. O usuário fornece a chave privada para se autenticar.
- O servidor regenera sua chave RSA (geralmente de 768 bits) automaticamente de hora em hora (configurável) e nunca a salva num arquivo. Chaves de sessões são trocadas após a encriptação usando as chaves do servidor e a chave do host. Isto previne a captura de uma sessão e sua posterior decifração.
- Agentes de autenticação podem guardar as chaves RSA de autenticação de usuário. Estes agentes rodam no laptop ou máquina local do usuário e não há necessidade de guardar as chaves de autenticação RSA em outro local. O SSH transfere automaticamente a conexão para o agente de autenticação, nunca revelando as chaves. Os protocolos são usados apenas para verificar se o agente possui a chave do usuário.
- O cliente possui arquivos de configuração customizáveis, tanto para o sistema quanto por usuário. Opções diferentes podem ser especificadas para hosts diferentes.
- Se a máquina servidora não estiver rodando sshd, um aviso de alerta é mostrado e o ssh automaticamente retrocede para usar o rsh convencional.
- A compressão gzip de todos os dados, incluindo X11 redespachado e dados de portas TCP/IP, é opcional.
Administração Segura de Sistemas
O Secure Shell foi originalmente criado para propiciar acessos seguros a terminais (shell) de servidores Unix em redes TCP/IP. Hoje em dia, um dos usos mais frequentes do SSH é o de substituir conexões de terminais baseadas em Telnet entre estações de trabalho Windows e servidores Unix/Linux/Windows. O principal grupo de usuários de acessos seguros de terminais são administradores de sistema, que adotaram o Secure Shell como padrão de-facto na administração remota de servidores Unix e outros dispositivos de rede.
Transferência Segura de Arquivos
O Secure Shell oferece uma funcionalidade segura para o FTP que é comumente usada para implementar tranferências de arquivos periódicas e ad-hoc entre servidores. Estas transferências de arquivos envolvem tipicamente operações como bakups de bases de dados, coleções de arquivos de log e transações comerciais. As capacidades SFTP (Secure FTP) do Secure Shell podem ser usadas para implementar transferências seguras de arquivos tanto em ambientes de rede interna como em extranets.
Conectividade Segura de Aplicações
O Secure Shell disponibiliza dois modos diferentes de proteger conexões de aplicações entre estações de trabalho de usuários finais e servidores de aplicação. Em aplicações de linha de comando, ele pode ser usado como um terminal seguro que substitui acessos ao host baseados em Telnet. Por outro lado, a funcionalidade de redespacho (forward) de portas pode ser usada para "tunnelar" conexões TCP de aplicações sem a necessidade de substituir o programa e a interface do usuário. A capacidade de redirecionamento de portas faz do Secure Shell uma solução genérica para proteger do começo ao fim conexões de protocolos de aplicações.
Observações
Em 1995, Tatu Ylonen, pesquisador da Universidade de Tecnologia de Helsinki, Finlândia, inventou a SSH1. 10 anos mais tarde, a SSH Communications Security ofereceu para a comunidade a terceira reimplementação do protocolo Secure Shell, chamado SSH G3, como parte dos seus produtos SSH Tectia. A nova arquitetura do protocolo SSH G3 baseia-se e é compatível com o padrão SSH2, mas introduz otimizações na arquitetura e extensões que aumentam consideravelmente a performance do Secure Shell, tornando-o ideal para transferências de arquivos e aplicações em ambientes de troca de dados intensiva.
Finalmente, em 2006, o protocolo Secure Shell alcançou o Proposed Standard Status no processo de padronização do IETF, o que lhe rendeu um status similar a outras tecnologias padrão IETF como o TCP, o IP e o HTTP. Existem sete documentos que o definem, as RFCs de 4250 a 4256 (citadas nas referências).
Referências
- SSH Communications Security
- RFC 4250 - The Secure Shell (SSH) Protocol Assigned Numbers
- RFC 4251 - The Secure Shell (SSH) Protocol Architecture
- RFC 4252 - The Secure Shell (SSH) Authentication Protocol
- RFC 4253 - The Secure Shell (SSH) Transport Layer Protocol
- RFC 4254 - The Secure Shell (SSH) Connection Protocol
- RFC 4255 - Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints
- RFC 4256 - Generic Message Exchange Authentication for the Secure Shell Protocol (SSH)