Faculdade de Tecnologia SENAC Pelotas/RS Curso Superior de Tecnologia em Redes de Computadores Unidade curricular Redes de Computadores III SSH (Secure Shell) Professor Eduardo Maroñas Monks 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á •Vantagens do o método com chaves: ser feita configurando lado servidor previamente com a chave pública do cliente. Quando houver a •A primeira é a segurança, porque não tentativa de acesso, o servidor SSH buscará a chave existirá a possibilidade de ataques de força pública do host do tentando cliente em um arquivo localizado bruta adivinhar a senha do usuário. Simplesmente, existe a senha! em .ssh/authorized_keys nonão diretório home do usuário requisitado para o login. •A outra vantagem é a possibilidade de • Caso a chave estiver armazenada no arquivo, o acesso automatizar scripts para executar se dará sem a comandos necessidade de digitar a senha. 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 22 utilizando protocolo TCP como transporte Prof. Eduardo M. Monks - Redes de Computadores III 11 Protocolo • Captura no Wireshark servidor de dados, existe a • AntesVersão da do troca Versão do cliente negociação das chaves criptográficas entre cliente e servidor • Como emulador de terminais: pacotes pequenos Fim da negociação, começo da troca • Na transferência de arquivos: pacotes de dados grandes 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 comuns 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 http://www.ietf.org/rfc/rfc4251.txt • Introduction to SSH Secure Shell http://www.ssh.com/support/documentation/online/ssh/adminguid e/32/Introduction_to_SSH_Secure_Shell.html • Criando tuneis criptografados com ssh - http://www.dicasl.com.br/dicas-l/20061017.php • Usando o SSH no Windows http://www.gdhpress.com.br/blog/usando-o-ssh-no-windows/ • 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/auug2002-ssh.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