Professor Eduardo Maroñas Monks 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ão-seguros 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 Inicialmente, o SSH foi disponibilizado com uma licença aberta Versões posteriores do protocolo foram submetidas a licenças restritivas, mas o uso não comercial continuou liberado O criador do SSH formou a empresa de segurança SSH Communications (http://www.ssh.com) onde explora comercialmente o protocolo e suas aplicações A SSH Communications foi adquirida pela Tectia em 2010 As primeiras versões do código do SSH são referenciadas como sendo a versão 1 do protocolo ( SSH 1) 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) O OpenSSH foi lançado na distribuição OpenBSD 2.6 em 1999 O OpenSSH foi estendido para suportar o SSH 2 em 2000 Atualmente, o OpenSSH é a versão mais popular da implementação livre de código-fonte aberto do protocolo SSH A história completa do OpenSSH está documentada no link http://www.openbsd.org/history.html 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. Vantagens do método com chaves: 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 22 utilizando protocolo TCP como transporte Prof. Eduardo M. Monks - Redes de Computadores III 11
Protocolo Captura no Wireshark Antes da troca de dados, existe a negociação das chaves criptográficas entre cliente e servidor Como emulador de terminais: pacotes pequenos Na transferência de arquivos: pacotes grandes Fim da negociação, começo da troca de dados Versão do cliente Versão do servidor 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/dictionaries/ 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/adminguide/32/Introduction_to_SSH_Secure_Shell.html Criando tuneis criptografados com ssh - http://www.dicas-l.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