150 likes | 259 Views
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.
E N D
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ã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. • 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 22 utilizando protocolo TCP como transporte Prof. Eduardo M. Monks - Redes de Computadores III 11
Versão do servidor Versão do cliente Fim da negociação, começo da troca de dados 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 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/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