NewsGeneration: um serviço oferecido pela RNP desde 1997


ISSN 1518-5974
Boletim bimestral sobre tecnologia de redes
produzido e publicado pela  RNP – Rede Nacional de Ensino e Pesquisa
01 de agosto de 1997 | volume 1, número 3

volta à página inicial de NewsGeneration

Nesta edição:

NewsGeneration:



O que é o ssh?

Paulino Ng <>

Rede Nacional de Ensino e Pesquisa (RNP)

Introdução
Instalação do Pacote do ssh
Utilização dos programas do ssh
Configuração do ssh
Conclusão
Mais Informações

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:

 



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.



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 utilizar listas 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.

^

Mais Informações

RFCs:

SSH Authentication Protocol, draft-ietf-secsh-userauth-00.txt,T. Ylonen.

Connect, draft-ietf-secsh-connect-00.tx, T. Ylonen.

SSH Transport Layer Protocol, draft-ietf-secsh-transport-00.txt,T. Ylonen.

URLs:

Ssh (Secure Shell) Home Page:http://www.cs.hut.fi/ssh/Ssh

Getting Started with SSH:http://www.tac.nyc.ny.us/~kim/ssh/ 

SSH para windows (comercial): http://www.datafellows.com/f-secure/

Repositorio principal do SSH:ftp://ftp.cs.hut.fi/pub/ssh/                       

FAQ do SSH: http://www.uni-karlsruhe.de/~ig25/ssh-faq/

Lista:

majordomo@clinet.fi, corpo com "subscribe ssh"

^

NewsGeneration, um serviço oferecido pela RNP – Rede Nacional de Ensino e Pesquisa
Copyright © RNP, 1997 – 2004