Faculdade de Tecnologia SENAC Pelotas/RS Curso Superior de Tecnologia em Redes de Computadores Redes de Computadores III SSH (Secure Shell) Professor Eduardo Maroñas Monks 2010 SUMÁRIO • • • • • • Histórico Funcionalidades Protocolo Aplicações Segurança Referências Bibliográficas Prof. Eduardo M. Monks - Redes de Computadores III 2 Histórico • O SSH é um protocolo para comunicação em rede de forma segura, projetado para ser simples e de fácil implementação. • A versão inicial, SSH1, foi focada no provimento de uma forma segura de acesso remoto a hosts em substituição a protocolos não-seguros, principalmente o Telnet. • Além do acesso remoto, o SSH provê o recurso de tunelamento o qual permite os uso de protocolos nãoseguros por meio de uma conexão segura. • A nova versão do SSH, SSH2, provê melhorias em relação a versão 1 e está em processo de padronização no IETF por meio das RFCs 4250 a 4256. Prof. Eduardo M. Monks - Redes de Computadores III 3 Histórico OPENSSH • O protocolo SSH foi criado pelo finlandês Tatu Ylönen, em 1995 •O oOpenSSH foi lançado na distribuição • Inicialmente, SSH foi disponibilizado com uma licença aberta OpenBSD do 2.6protocolo em 1999 foram submetidas a licenças • Versões posteriores OpenSSH foicomercial estendido continuou para suportar o restritivas, •O mas o uso não liberado SSH 2 formou em 2000a empresa de segurança SSH • O criador do SSH •Atualmente, o OpenSSH é aonde versão mais Communications (http://www.ssh.com) explora popular da implementação livre de códigocomercialmente o protocolo e suas aplicações fonte aberto do protocolo SSHpela Tectia em 2010 • A SSH Communications foi adquirida •Aversões históriado completa do SSH OpenSSH está • As primeiras código do são referenciadas como documentada no link sendo a versão 1 do protocolo ( SSH 1) http://www.openbsd.org/history.html • Em 1997, foi iniciado o processo de padronização do SSH junto ao IETF • Junto a este processo, foi iniciada a reescrita do protocolo SSH conhecida como SSH 2, contando com diversas melhorias na segurança • Em 1999, o desenvolvedores do OpenBSD começaram o desenvolvimento, a partir do código-fonte original do SSH, originando o projeto OpenSSH (http://www.openssh.com) Prof. Eduardo M. Monks - Redes de Computadores III 4 Funcionalidades • • • • • • Compressão: o fluxo de tráfego pode ser compactado Autenticação com chave pública: podem ser usados certificados para autenticação ao invés de digitação de senhas Autenticação do servidor: provê mecanismos de confidencialidade para o servidor a ser acessado Redirecionamento de portas: qualquer sessão utilizando o protocolo TCP pode ser redirecionado em uma sessão de SSH Redirecionando serviços X11: o SSH possibilita o redirecionamento de sessões X11 (interface gráfica do Linux/unix) Transferência de arquivos: o protocolo provê os serviços de SCP e SFTP para transferências de arquivos Prof. Eduardo M. Monks - Redes de Computadores III 5 Funcionalidades • • Basicamente, a autenticação se dá ou por usuário e senha, ou usuário e chave privada/pública. • Com o usuário e senha, ao se tentar a conexão a um servidor deverá ser digitado o usuário e a senha. • No caso de uso com chaves, a autenticação deverá ser feita configurando o lado servidor previamente com a chave pública do cliente. Quando houver a tentativa de acesso, o servidor SSH buscará a chave pública do host do cliente em um arquivo localizado em .ssh/authorized_keys no diretório home do usuário requisitado para o login. • Caso a chave estiver armazenada no arquivo, o acesso se dará sem a necessidade de digitar a senha. Este método tem duas vantagens básicas. • A primeira é a segurança, porque não existirá a possibilidade de ataques de força bruta tentando adivinhar a senha do usuário. Simplesmente, não existe a senha! • A outra vantagem é a possibilidade de automatizar scripts para executar comandos em servidores remotos. Desta forma, a administração de múltiplos servidores fica muito mais fácil e ágil. Prof. Eduardo M. Monks - Redes de Computadores III 6 Funcionalidades ~ representa o diretório home do usuário • • • • Verificação da confidencialidade Utilizado para previnir que um host malicioso se faça passar pelo servidor legítimo No Linux, o arquivo ~/.ssh/known_hosts armazena as chaves dos servidores que são verificadas a cada sessão Se a chave trocar ou não existir a mensagem da figura abaixo será gerada Prof. Eduardo M. Monks - Redes de Computadores III 7 Funcionalidades • Tunelamento • Possibilita utilizar protocolos baseados em TCP de forma criptografada por meio de uma sessão de SSH • Interessante para obter maior segurança em redes não confiáveis • Facilita a configuração do firewall, necessitando apenas abrir a porta 22 • O SSH “carrega” o tráfego do outro protocolo Prof. Eduardo M. Monks - Redes de Computadores III 8 Funcionalidades • Transferência de arquivos • Substitui o FTP para transferência de arquivos, com segurança • Usa somente a porta 22 • Utiliza as mesmas formas de autenticação do SSH • Dois protocolos: SFTP e SCP • SFTP – similar aos comandos do FTP • SCP – similar ao comando cp (copy) do Linux • O desempenho na rede é pior do que o FTP! Prof. Eduardo M. Monks - Redes de Computadores III 9 Funcionalidades • Redirecionamento de servidor X • O SSH possibilita redirecionar os serviços de janelas do Linux (X11) • No cliente, deverá haver um servidor X • Desta forma, é possível rodar aplicativos gráficos remotamente • Funciona também no Windows, possibilitando rodar aplicativo gráficos do Linux (Xming – http://sourceforge.net/projects/xming/) • Na verdade, as aplicações rodam no servidor remoto, mas a interface aparece no cliente! Prof. Eduardo M. Monks - Redes de Computadores III 10 Protocolo • O SSH é organizado por meio de três protocolos rodando sobre TCP que são: • Protocolo da camada de transporte: provê autenticação no servidor, confidencialidade e integridade dos dados. Opcionalmente, esta camada pode prover compressão dos dados. • Protocolo de autenticação de usuário: autentica o usuário ao servidor. • Protocolo de conexão: possibilita a utilização de vários canais lógicos de comunicação sobre uma única conexão SSH. • Trabalha na porta transporte Prof. Eduardo M. Monks - Redes de Computadores III 22 utilizando protocolo TCP como 11 Protocolo • Captura no Wireshark • Antes da troca de dados, existe a negociação das Versão do servidor chaves Versão criptográficas entre cliente e servidor do cliente • Como emulador de terminais, pacotes pequenos • Na transferência de arquivos, pacotes grandes Fim da negociação, começo da troca de dados Prof. Eduardo M. Monks - Redes de Computadores III 12 Aplicações • • • Clientes e servidores de SSH existem para a maioria dos sistemas operacionais, inclusive no Windows (SSH Windows e Moba SSH ). É o metodo mais utilizado para acesso remoto em sistemas Unix/Linux e tunelamento de servidores X (servidor gráfico de janelas no Linux/Unix). Versões freeware ou de código-fonte aberto: • • • • • Putty, Psftp, Pscp (Windows/Linux) SSHSecureShellClient (cliente) (Windows) Winscp (cliente de SFTP/SCP) (Windows) OpenSSH (clientes e servidores) (Linux/Windows) MobaSSH (servidor para Windows) Prof. Eduardo M. Monks - Redes de Computadores III 13 Segurança • Ataque mais comum ao SSH: • • • Tentativas por força bruta de usuários e senhas de contas (dicionário) Ferramenta de ataque: • THC Hydra - http://www.thc.org/thc-hydra/ • Lista de palavras http://packetstormsecurity.org/Crackers/wordlists/dicti onaries/ Ferramenta de defesa: • DenyHosts – http://denyhosts.sourceforge.net/ Prof. Eduardo M. Monks - Redes de Computadores III 14 Referências Bibliográficas • The Secure Shell (SSH) Protocol Architecture - • Introduction to SSH Secure Shell - • • • • • • • • • • http://www.ietf.org/rfc/rfc4251.txt http://www.ssh.com/support/documentation/online/ssh/adminguide/32/Introduction_t o_SSH_Secure_Shell.html Criando tuneis criptografados com ssh - http://www.dicas-l.com.br/dicasl/20061017.php Usando o SSH no Windows - http://www.gdhpress.com.br/blog/usando-o-ssh-nowindows/ Certificados com o Putty http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter8.html Servidor X para Windows – http://sourceforge.net/projects/xming/ SSH tips, tricks & protocol tutorial - http://www.openbsd.org/papers/auug2002ssh.pdf CopSSH – Openssh para Windows - http://www.itefix.no/i2/copssh MobaSSH (Windows) - http://mobassh.mobatek.net/en/ High Performance SSH/SCP - HPN-SSH http://www.psc.edu/networking/projects/hpn-ssh/ SSH – http://www.ssh.com/ Brute Force Tools - http://www.aldeid.com/index.php/Bruteforce Prof. Eduardo M. Monks - Redes de Computadores III 15