Buscar

Protocolo - SSH

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

O ssh é um pacote de programas cujo objetivo é aumentar a segurança de um sistema de redes. Ele, basicamente fornece um substituto mais seguro para os programas "remotos" - rsh, rlogin, rcp. Alem de ser uma boa alternativa para o telnet.
^ 
Introdução
O problema de segurança que este pacote tenta solucionar é o da escuta de rede para obter informações sigilosas. Os comandos remotos e o telnet usam transferência direta de dados sem codificação. Isto permite que redes abertas a "escutas" tenham informações criticas vazadas. Uma "escuta" é facilmente instalada numa rede ethernet na qual não é possível controlar o acesso de maquinas ou usuários suspeitos.
A situação torna-se mais critica quando sistemas sem nenhuma segurança como DOS, WIN 3.x e WIN 95 participam da rede, e o acesso a essas maquinas não é suficientemente controlado. Isto porque tais sistemas não possuem a noção de usuário privilegiado, não sendo muito complicado instalar nos mesmos programas de escuta de rede que podem "ouvir" as transferências feitas numa rede ethernet, ou qualquer rede do tipo "broadcast".
O exemplo mais simples de utilização de uma escuta é para pegar a senha de alguém que esteja fazendo telnet. A senha é passada entre a maquina cliente e o servidor de telnet como texto puro. A solução seria usar o rlogin no lugar do telnet mas os comandos remotos possuem também as suas falhas. O sistema de autorização da conexão (autenticação) é baseado nos arquivos hosts.equiv e .rhosts, que basicamente deveriam dizer quais maquinas podem fazer a conexão. A autenticidade da identidade destas maquinas é garantida pelo seu endereço IP ou pelo seu nome de domínio. Existem muitos métodos de falsificação de identidade IP e alguém capaz de instalar uma escuta na rede é muito bem capaz de instalar um programa "travesti" de IP e simular que é uma maquina autorizada.
O ssh se propõe a solucionar o problema da escuta com uma transferência de dados criptografada e com um protocolo de autenticação mais seguro. Os métodos de autenticação selecionáveis incluem .rhosts apenas (inseguro), .rhosts com validação do host atraves de RSA ou validação exclusiva através de RSA. Os protocolos do X Windows também apresentam diversos problemas de segurança e o ssh procura fornecer seções seguras para clientes X11 executados a partir dele.
^ 
Instalação do Pacote do ssh
O ssh possui a home-page http://www.cs.hut.fi/ssh/. Através dela pode-se chegar a diversos repositórios para copiar o pacote. A versão mais atual é a 1.2.20. Esta versão foi instalada no NA-SP em maquinas Solaris 2.4, AIX 4.1.4 e Linux-Slackware 3.2 com service pack 2 aplicado. A compilação não apresentou nenhum problema utilizando o gcc-2.7.2.1/2. A seguir são dadas algumas sugestões de configurações e uso do ssh.
Nas estações AIX e Solaris é interessante utilizar o comando:
 
./configure --with-rsh=/usr/bin/rsh 
para configurar a compilação do pacote. Esta opção permitirá ao ssh encontrar o rsh que será utilizado quando não houver um servidor sshd funcionando no host contactado. Nesse caso, os comandos s (seguros) passam a usar os comandos r (remotamente seguros), alem de instalar no diretório /usr/local/bin links simbolicos rsh, rlogin e rcp para ssh, slogin e scp, respectivamente.
Os comandos "make" e "make install" não apresentaram maiores dificuldades para instalar o pacote na maquina utilizada para a compilação. Nas outras maquinas que compartilham o codigo, não é necessario fazer um "make install", mas é necessário executar o comando "make hostinstall" para cada maquina que use o código compartilhado.
O "make hostinstall" instala os arquivos de configuração de default no diretório /etc (ssh_config e sshd_config) e gera o par de chaves publica/privada para a estação. As chaves das estações são geradas sem nenhuma frase-senha, observe que estas chaves são diferentes das chaves do "root" da estação (veja geração de chaves pessoais com o ssh-keygen).
^ 
Utilização dos programas do ssh
O pacote do ssh consiste de vários programas, os mais interessantes são:
 
sshd - servidor de conexões do protocolo SSH, deve ser executado como root e normalmente é instalado nos arquivos de inicialização das estações (rc files) mas é possível também iniciá-lo via o inetd. Como o servidor precisa calcular um par chave publica/chave privada de 1024 bits a cada inicialização, o método do inetd não é recomendado para maquinas de baixo desempenho. O servidor escuta a porta 22.
ssh - substituto do rsh com algumas melhorias. Por exemplo, se não houver uma entrada nos arquivos .rhosts, ou .shosts, para a maquina cliente, o servidor tenta autenticar pelo servidor de chaves RSA (vide a seguir) ou pela senha. Existe uma pequena mudança de sintaxe para comandos remotos trocando o nome do usuário. Exemplo:
h fool@outra.maquina who -a 
Ao executar o ssh pela primeira vez, cria-se um diretorio .ssh debaixo do $HOME e um arquivo random_seed. Caso a maquina servidora não seja "conhecida" pela maquina cliente (chave publica da maquina servidora no arquivo /etc/ssh_known_hosts), o ssh pede para validar a identidade da maquina para inclui-la entre as servidoras de ssh conhecidas do usuário no arquivo .ssh/known_hosts. Estes arquivos guardam as chaves publicas das maquinas com as quais os usuários normalmente conectam-se, quando ocorre a mudança de chave publica de alguma maquina, existe a possibilidade de está havendo uma quebra de segurança. O usuário, nesse caso, pode aceitar a nova chave publica ou rejeitar e consultar o responsável daquela maquina para saber se ele trocou as chaves do ssh.
slogin - semelhante ao rlogin e assim como o rsh recai no rlogin quando nenhum comando é dado, o ssh também recai num shell criptografado quando executado sem um comando explicito para a maquina remota.
scp - semelhante ao rcp, com a vantagem de não derrubar a conexão se a estação remota não possuir uma referencia `a maquina local nos seus arquivos hosts.equiv e .rhosts. Caso não obtenha autorização pelo .rhosts, a transferência pode ser autorizada por RSA pessoal ou password transmitido codificado.
ssh-keygen - gerador de chaves RSA. Cada usuário pode ter as suas próprias chaves RSA, que são geradas e colocadas no diretorio .ssh. Estas chaves são utilizadas para a autenticação das conexões por chaves RSA. As chaves são geradas baseadas numa frase senha, o que aumenta a sua segurança em relação ao sistema de senhas das estações que em muitos casos é limitado a poucos caracteres. O arquivo de senha gerado, ssh/identity, deve ter permissão de leitura/escritura apenas para o usuário.
ssh-agent - especie de servidor de chaves RSA para uma seção, normalmente deve ser executado a partir do arquivo .login nas maquinas com login textual e .xsession nas maquinas com login controlado por xdm e seus equivalentes. O comando para executa-lo é:
val `ssh-agent` 
O eval é necessário para inicializar as variáveis de ambiente usadas pelo ssh-agent. O comando ssh-add fornece as chaves para o servidor. Ele mantem as chaves "adicionadas" na memoria, evitando que seja necessário entrar com elas a cada comando quando não for aceita a autenticação por .rhosts.
ssh-add - descrito acima.
^ 
Configuração do ssh
O arquivo /etc/sshd_config configura o servidor sshd. Os defaults da instalação são normalmente suficientes. Uma opção importante é "StrictMode". Com esta opção, o sshd torna-se mais rigoroso quanto ao controle dos direitos de acesso dos arquivos e diretórios. Se eles não estiverem corretamente acertados, a conexão não é estabelecida.
Não se recomenda habilitar a opção RhostsAuthentication que permite a autenticação por .rhosts sem verificação da identidade dos hosts pelas chaves RSA. Caso não haja interesse em permitir autenticação por .rhosts, de modo algum, é possível desabilitar RhostsRSAAuthentication. Alem disso, se for desejado apenas permitir que sejam usadas frases senhas e não as senhas de sistema, pode-se desabilitar a opção PasswordAuthentication. O sshd não necessita do tcp-wrapper para utilizarlistas de allow e deny. Isto é possível através das clausulas AllowHosts e DenyHosts.
O arquivo /etc/ssh_config permite configurar os métodos de autenticação usados pelos clientes ssh, slogin e scp. Este arquivo pode ter as suas opções sobrepostas pelo arquivo $HOME/.ssh/config do usuário.
Portanto, não é conveniente esperar que restrições colocadas nesse arquivo sejam seguidas. O correto é colocar as restrições na configuração do servidor. O arquivo de configuração dos clientes permite que sejam aplicadas opções diferentes dependendo do servidor usado.
^ 
Conclusão
O pacote de programas ssh é interessante quando se suspeita da existência de "escutas" instaladas nas linhas físicas usadas para a transferencia de dados entre as maquinas dentro de uma rede. Ele criptografa as transferências dificultando a leitura dos dados transmitidos. Alem disso, ele utiliza métodos de autenticação mais fortes do que os utilizados pelos comandos remotos, rsh, rlogin e rcp, reduzindo a possibilidade de conexões travestidas (desde que, os servidores de rsh, rlogin e rcp estejam desabilidos). É razoavelmente simples de usar sendo um substituto quase transparente para os comandos remotos.
Não foram tratados aqui usos mais avançados do ssh, como codificação do canal de controle de uma transferência ftp, codificação de transferências PPP, uso do ssh para fazer uma Virtual Private Network, etc. Estas aplicações mais avançadas estão propostas nas paginas WWW sobre o ssh e na lista de discusão do ssh citadas a seguir.
O que é o SSH?
O Secure Shell, conhecido como SSH, é um protocolo que visa fazer a comunicação entre dois hosts distantes através de um autenticação segura e em seguida troca de dados utilizando algoritmos de chave simétrica. Existem, até o momento, duas versões desse protocolo, sendo a primeira, o SSH1 já considerada ultrapassada. Assim, a versão que está sendo utilizada atualmente é a SSH2. 
    Diferenciando-se de outras ferramentas como rsh, rcp, rlogin e telnet, o SSH codifica toda a comunicao. Dessa forma, ele impede a interceptação por invasores. Ele também pode ser usado para encriptar comunicações ftp e pop, protegendo os usuários contra DNS e IP spoofing. Outra vantagem é que existem implementações do ssh para a maioria dos sistemas operacionais. A versão aberta, chamada de OpenSSH possui interoperabilidade, podendo funcionar comunicando o servirdor 2.X com qualquer versão dos protocolos. 
    As principais características desse aplicativo são:
Cifragem: Todas as conexões são criptografadas de forma transparente e automática. Utiliza algoritmos de livre patente como o DES, 3DES, Blowfish, Twofish, Arcfour, entre outros, que serão discutidos mais adiante. 
X11 Forwarding : Protege o DISPLAY das conexões X11
Port Forwarding: Permite a comunicação utilizando TCP através de um canal cifrado. Pode criptografar outros serviços, como o ftp, tftp, pop etc. 
Autenticação forte: Protege contra IP spoofing, falsos encaminhamentos e DNS spoofing. 
Agent Forwarding: Um agente de auntenticação que permite que o usuário utilize chaves RSA de um computador portátil sem que seja necessário transferi-las para a máquina.
Compressão de dados: Comprime a informção antes de enviá-la, o que é útil para ligações com pouca largura de banda.
 
   
  Ao se utilizar qualquer implementacao do ssh, antes do pacote ser enviado, ele pode ser comprimido, em seguida será encritado e, por fim, autenticado. Ao ser recebido, é conferida a autenticação, desencripta-se os dados e, em seguida, é feita, caso seja necessário, a descompressão dos dados. 
O algoritmo de encriptação a ser utilizado será escolhido pelo cliente, dentro das possibilidades da implementação do ssh utilizada tanto pelo cliente quanto pelo servidor. Caso ele selecione uma opção não disponível no servidor, lhe será requisitada uma outra opção. O mesmo acontece com os algoritmos de compressão.

Outros materiais