Protocolo SSH – Secure Shell
Transcrição
Protocolo SSH – Secure Shell
Protocolo SSH março 8 Sílvio Pereira, Filipe Sousa SSH - IEEE Conteúdo I. Introdução ..................................................................................................................................................................................1 II. Descrição do SSH .................................................................................................................................................................1 Autenticação.....................................................................................................................................................................2 Encriptação.......................................................................................................................................................................2 Integridade .......................................................................................................................................................................2 III. Versões do SSH ....................................................................................................................................................................2 IV. Camadas lógicas do SSH ......................................................................................................................................................2 SSH Transport Layer Protocol – RFC 4253 .....................................................................................................................2 SSH Authentication Protocol – RFC 4252 .......................................................................................................................2 SSH Connection Protocol – RFC 4254 ............................................................................................................................2 Funcionalidades do ssh .........................................................................................................................................................3 V. Secure command-shell .....................................................................................................................................................3 Secure File Transfer .........................................................................................................................................................3 Port forwarding ................................................................................................................................................................3 VI. Segurança no SSH ................................................................................................................................................................3 Autenticação de utilizador ................................................................................................................................................3 Autenticação através de password ....................................................................................................................................4 Autenticação através de Chave Pública............................................................................................................................4 Autenticação do host ........................................................................................................................................................4 Encriptação da informação ...............................................................................................................................................5 Integridade dos dados .......................................................................................................................................................5 Compressão de dados .......................................................................................................................................................5 VII. Ataques bloqueados pelo SSH ..............................................................................................................................................5 Password Sniffing ............................................................................................................................................................5 Ataque Homem-no-meio, MITM .....................................................................................................................................5 Ataques de Inserção e Repetição ......................................................................................................................................6 VIII. Aplicações ............................................................................................................................................................................6 Em ambiente Windows ....................................................................................................................................................6 Em ambiente Linux ..........................................................................................................................................................7 IX. X. SSH Protocol Architecture – RFC 4251, descreve o todo o design do protocolo. ..........................................................2 Conclusão .............................................................................................................................................................................8 Passwords .........................................................................................................................................................................8 Backups ............................................................................................................................................................................8 Bibliografia ...........................................................................................................................................................................8 7815 - Filipe Sousa 7813 – Silvio Pereira 1 Índice de ilustrações Ilustração 1 - Fluxo de dados no SSH [3] ..........................................................................................................................................2 Ilustração 2 - Camadas lógicas do SSH dentro do modelo OSI .........................................................................................................2 Ilustração 3 – Modelo de comunicação do SSH [3]...........................................................................................................................3 Ilustração 4 – Exemplo de chave pública gerada pelo ssh-keygen.....................................................................................................4 Ilustração 5 - Exemplo de random art gerado pelo SSH ...................................................................................................................5 Ilustração 6 - Ataque Man-in-the-midle [5] .......................................................................................................................................6 Ilustração 7 - Janela de configuração do Putty ..................................................................................................................................6 Ilustração 8 – Shell do Putty em Windows NT..................................................................................................................................6 Ilustração 9 - FileZilla em Windows .................................................................................................................................................7 Ilustração 10 - Sessão SSH em Ubuntu 12.04 ...................................................................................................................................7 Índice de Abreviaturas IEEE – Institute of Electrical and Electronics Engineers LESI_PL – Licenciatura em Engenharia de Sistemas Informáticos SSH – Secure Shell SFTP - Secure File Transfer Protocol RFC – Request for Comments POP3 – Post Office Protocol VNC – Virtual Network Computing FTP - File Transfer Protocol NAT - Network Address Translation DMZ - Demilitarized Zone VNC - Virtual Network Client Protocolo SSH S. Pereira, F. Sousa. Resumo - Comunicações ou ligações pela internet como por exemplo acesso remoto a computadores, transferências de ficheiros, serviços bancários on-line, etc., são cada vez mais comuns. Este facto expõe cada vez mais serviços extremamente sensíveis a ligações nem sempre seguras. Por tal, acresce a necessidade de se dispor de mecanismos que garantam confidencialidade na troca de dados entre utilizadores. Já que a internet por si só não oferece qualquer tipo de encriptação de dados, surge a necessidade de criar métodos que protejam a transmissão de ficheiros, senhas e/ou qualquer tipo de dados que se pretenda partilhar. Firewalls e outros meios de controlo de acesso já não são suficientes para garantir privacidade. Criptografia forte parece ser a única solução para a segurança da rede e dos nossos dados. Tendo plena consciência desta problemática, e em resposta ao desafio colocado na disciplina de Comunicação de Dados, leccionada no 2º ano da Licenciatura em Engenharia de Sistemas Informáticos, o grupo de trabalho acima identificado procurou descrever uma solução capaz de lhe dar resposta. Essa é a proposta do protocolo que iremos abordar, o SSH. Palavras-chave – Comunicação, protocolo, SSH, segurança, criptografia, ambiente remoto, transferência de dados, internet. I. INTRODUÇÃO Em 1995, Tatu Ylönen, investigador da Universidade Tecnológica de Helsínquia, Finlândia, desenhou a primeira versão do protocolo SSH (o SSH-1). O objectivo do SSH foi o de substituir o rlogin, telnet e rsh, protocolos que não fornecem autenticação forte nem confidencialidade. Ylönen disponibilizou a sua aplicação em Julho de 1995, cuja rapidamente ganhou popularidade. No final desse ano, o número de utilizadores do SSH tinha crescido para 20 mil utilizadores em cinquenta países. [1] O SSH é um protocolo para segurança de rede. Este protocolo funciona da seguinte forma: quando são enviados dados por um computador para a rede, o SSH trata de encriptar automaticamente o conteúdo, quando os dados chegam ao destinatário, o SSH efectua o processo contrário. O resultado deste método é transparente, os utilizadores podem trabalhar normalmente, sem saberem que as comunicações são encriptadas de modo seguro na rede. Além disso, o SSH utiliza algoritmos de criptografia seguros e eficazes. II. DESCRIÇÃO DO SSH O SSH é simultaneamente um protocolo e aplicação, baseado na arquitectura cliente/servidor. Um programa servidor SSH, normalmente instalado e executado por um administrador de sistema, aceita ou rejeita ligações de entrada para o computador anfitrião. O utilizadores padrão, geralmente executam programas SSH cliente, noutros computadores fazem pedidos ao servidor SSH tais como, "Please log me in", i.e., por favor faça o login, "Please send me a file", i.e., por favor envie-me um ficheiro ou "Please execute this command", i.e., por favor execute este comando. Todas as comunicações entre clientes e servidores são encriptadas de forma segura e protegidas de qualquer modificação. [2] Uma solução baseada em SSH pode incluir clientes, servidores ou ambos. Geralmente em ambientes Unix existem os dois. Noutras plataformas, geralmente só estão disponíveis os clientes, e.g., Putty em Windows. Apesar disto, em ambientes Windows começam a surgir servidores SSH com maior frequência. Embora SSH signifique Secure Shell, não é uma verdadeira shell como a Unix Bourne Shell e a C Shell, i.e., não é um interpretador de comandos nem disponibiliza um histórico dos mesmos. Através do SSH é criado um canal, com encriptação entre computadores, para executar uma shell no computador remoto. O SSH não é uma solução de segurança completa, não protege os computadores de ataques denial-of-service e não elimina vírus, trojans e malware. Contudo, disponibiliza encriptação e autenticação robusta. SSH é um protocolo que permite, recorrendo a programas, efectuar uma comunicação segura através da rede. Este protocolo recorre a autenticação, encriptação e integridade dos dados transmitidos através da rede, o que se representa na ilustração 1, na próxima página. Sílvio Pereira & Filipe Sousa 2 SSH Protocol Architecture – RFC 4251, descreve o todo o design do protocolo. IV. CAMADAS LÓGICAS DO SSH SSH Transport Layer Protocol – RFC 4253 Descreve o funcionamento na camada de transporte utilizando o protocolo TCP/IP e as suas funcionalidades. Aqui são definidas a privacidade, integridade, autenticação nos servidores e a protecção contra ataques. Uma vantagem deste protocolo RFC é que pode ser usado também em outras aplicações que não usam o protocolo SSH. Ilustração 1 - Fluxo de dados no SSH [3] Os atributos chave do SSH são: Autenticação Aqui, é determinada a identidade de alguém. Ao tentar efectuar o login numa máquina remota, o SSH precisará de uma prova digital da identidade. Se o teste for passado com sucesso, poderá ser feito o login. Caso contrário, é rejeitada a ligação. Encriptação Informação codificada para que seja lida apenas pelos intervenientes autorizados. Isto protege a informação que passa pela rede. SSH Authentication Protocol – RFC 4252 Define uma framework onde são criados métodos para a criação de chaves públicas, senhas e autenticações de clientes. O protocolo SSH usa esta framework para proteger o usuário quando se conecta com um servidor. SSH Connection Protocol – RFC 4254 O protocolo de ligação foi essencialmente desenvolvido para utilizar as principais funções dos protocolos de transporte e autenticação. Com a capacidade de prover sessões interactivas e a execução remota de comandos este protocolo usa apenas um único túnel de comunicação para todas as conexões. Outra característica importante do protocolo SSH é o “tunelamento” que permite encapsular outros protocolos. Esta característica permite criar um túnel entre o servidor e o cliente SSH e transportar pacotes de outros protocolos através de um canal seguro. Isto é muito importante proteger protocolos nãocriptografados, como por exemplo o POP3 e VNC. Integridade Garantia de que a informação enviada pela rede chega inalterada. Se for capturada e modificada por alguém durante o transporte, o SSH detecta o ocorrido. Este protocolo efectua ligações em rede entre computadores, com fortes garantias de que as partes nas extremidades da ligação são genuínas. III. VERSÕES DO SSH A primeira versão, SSH1, permitia a transferência cifrada de dados em ambas as direcções, upload e download, utilizando o protocolo SCP. A segunda versão, SSH2, foi implementada com um sistema de arquivos remotos, permitindo mais operações sobre os mesmos, e.g., mover, copiar, etc. O intuito desta versão era de resolver os problemas sérios de segurança da primeira versão e melhorar o método de transferência de arquivos utilizando o SFTP. Hoje em dia utilizamos a versão SSHv2 que é descrita no seguinte documento, disponível on-line: Ilustração 2 - Camadas lógicas do SSH dentro do modelo OSI Sílvio Pereira & Filipe Sousa V. FUNCIONALIDADES DO SSH Neste capitulo descrevem-se as principais funcionalidades disponibilizadas pelo SSH, são elas: Secure command-shell Linha de comandos como a disponível nos sistemas Unix-like, Windows ou a familiar prompt do DOS. Disponibilizam a execução de programas e outros comandos. Uma linha de comandos segura ou o login remoto permitem editar ficheiros, ver o conteúdo de directorias e aceder a bases de dados. Administradores de rede e de sistemas podem iniciar serviços, cancelar processos, alterar permissões de ficheiros e muito mais. Tudo o que se pode fazer na linha de comandos da máquina pode ser feito de casa. Secure File Transfer SFTP é um subsistema do protocolo SSH. É uma camada do protocolo que permite gerir a transferência de ficheiros. O SFTP tem várias vantagens quando comparado com o FTP normal. Primeiro, o SFTP encripta quer o username, quer a password, bem como a informação transferida. Segundo, utiliza a mesma porta que o SSH, eliminando assim a necessidade de abrir outras na firewall ou no router. Ao utilizar o SFTP também se evita o NAT que por vezes se torna um problema. Uma das vantagens da utilização do SFTP reside no facto de ser possível criar extranets seguras ou fortificar um servidor ou mais servidores, externos à nossa firewall, que são acedidos remotamente. Uma extranet geralmente é utilizada para upload e download de ficheiros sendo para isso necessário que exista um mecanismo seguro para administração remota. Ter uma extranet que possa ser remotamente administrada por colaboradores tem vindo a ser uma solução cada vez mais utilizada, deixando desta forma de serem utilizados os meios mais tradicionais como o telefone ou fax. Aliás, o SFTP pode automatizar algumas tarefas e transacções para que estas possam ocorrer sem intervenção humana. Uma extranet segura é uma das formas mais seguras de disponibilizar informação especifica a cliente, colaboradores e até funcionários sem expor informação confidencial da empresa para a rede pública. O uso do SFTP em máquinas da extranet, restringe o acesso a pessoal autorizado e encripta usernames, password e ficheiros enviados de e para a DMZ. 3 Port forwarding Port forwarding é uma ferramenta poderosa, que disponibiliza segurança a aplicações TCP/IP incluindo e-mail, bases de dados e aplicações. Referido algumas vezes como tunneling, permite que a informação gerada por aplicações desprotegidas se torne segura. Após o port forwarding ter sido configurado, o SSH redirecciona o tráfego de um programa, geralmente o cliente e envia-o através de um túnel encriptado, entregando-o directamente ao programa de destino, geralmente o servidor. Várias aplicações podem transmitir informação através de um único túnel, optimizando o número de ligações necessárias para comunicar com o exterior. Para algumas aplicações, uma linha de comandos segura não é suficiente e o controlo remoto com interface gráfico é necessário. As capacidades do port forwarding podem ser utilizadas para criar um túnel encriptado sobre o qual essa aplicação pode ser executada. O VNC, que é um programa de controlo remoto com interface gráfico, é um bom exemplo disso. VI. SEGURANÇA NO SSH Ilustração 3 – Modelo de comunicação do SSH [3] Autenticação de utilizador Autenticação, também referida como identidade do utilizador, é o meio pelo qual se verifica que o acesso é apenas dado a determinados utilizadores e negado a todos os outros. São utilizados muitos métodos de autenticação hoje em dia, que vão desde password simples até aos sistemas de segurança mais robustos. A maior parte das implementações do SSH incluem métodos de autenticação através de uma password e Sílvio Pereira & Filipe Sousa 4 de uma chave pública. A flexibilidade do SSH permite que novos métodos de autenticação sejam incorporados no sistema, à medida que fiquem disponíveis. Autenticação através de password Passwords combinadas com nomes de utilizador, são um método popular de dizer a outro computador que somos quem afirmamos ser. Se o utilizador e a password fornecidos aquando da autenticação forem iguais ao utilizador e password armazenados no sistema remoto, então estamos autenticados e é-nos dado acesso. Alguns protocolos, como o FTP e o Telnet enviam nomes de utilizador e respectivas passwors em texto ASCII que é facilmente visível, permitindo a qualquer pessoa com um programa de sniffing a captura estes dados e consequente acesso indevido ao sistema. O SSH protege os usuários contra este tipo de ataque encriptando a informação, incluindo nomes de utilizador e passwords. Apesar das passwords serem um método conveniente, que não requer qualquer configuração adicional, são vulneráveis pois podem ser adivinhadas. Qualquer pessoa que adivinhe ou descubra uma password, consegue aceder ao sistema. Devido as estas vulnerabilidades, é aconselhável que se combine ou substitua a password por outro método como a chave pública. Autenticação através de Chave Pública A autenticação por Chave Pública é um dos métodos mais seguros de autenticação utilizado no protocolo SSH. Este tipo de autenticação utiliza um par de chaves assimétricas geradas por um computador, uma pública e uma privada. Cada chave tem entre 1024 e 4096 bits de comprimento e aparece como o exemplo em baixo. Apesar de a podermos ver, é inútil, a menos que se tenha a chave privada correspondente. “A criptografia de chave pública ou criptografia assimétrica é um método de criptografia que utiliza um par de chaves: uma chave pública e uma chave privada. A chave pública é distribuída livremente para todos os correspondentes via email ou outras formas, enquanto a chave privada deve ser conhecida apenas pelo seu dono. Num algoritmo de criptografia assimétrica, uma mensagem cifrada com a chave pública pode somente ser decifrada pela sua chave privada correspondente.” [4] Ilustração 4 – Exemplo de chave pública gerada pelo ssh-keygen Chaves públicas e chaves privadas geralmente são geradas utilizando um utilitário para o efeito. Para além de serem utilizadas para autenticação, as chaves podem ser utilizadas para assinar informação. Para aceder a uma conta num servidor SSH, através de chave pública, uma cópia dessa chave tem que ser enviada para o servidor. Quando o cliente efectua a ligação ao servidor existe uma prova de que possui o segredo e o acesso é garantido. A chave privada nunca sai do computador cliente, não podendo assim ser roubada ou adivinhada como uma password normal. Geralmente a chave privada possui uma frase chave associada a ela, para que em caso de roubo, o atacante tenha ainda que adivinhar a frase chave para obter acesso ao sistema. A autenticação por chave pública não confia em nenhuma informação vinda de um cliente, nem permite acesso a ninguém, a menos que o cliente consiga provar que possui a chave privada “secreta”. Autenticação do host Uma chave host é utilizada para provar a um cliente a sua identidade e é utilizada por um cliente para verificar um host de entre uma lista de entidades fiáveis. As chaves de host são descritas como persistentes e são assimétricas, à semelhança do par de chaves pública/privada, descritas anteriormente. Se uma máquina está a correr apenas um servidor SSH, uma única chave host serve para identificar quer a máquina quer o servidor. Se a máquina está a correr vários servidores SSH, pode ser necessário ter várias chaves host ou uma chave host, para vários servidores. A autenticação de host previne contra ataques de Man-in-the-middle. Muitas vezes, este tipo de chaves é confundido com chaves de sessão, que são utilizadas no processo de encriptação de informação. Uma imagem desta chave pode ser apresentada no estabelecimento de cada sessão SSH, para que, caso a de algum dos intervenientes tenha sido alterada, seja humanamente mais perceptível a mudança. De seguida ilustra-se um exemplo destas imagens. Sílvio Pereira & Filipe Sousa 5 Mesmo com encriptação SSH, a informação que é enviada pela rede pode ainda estar vulnerável a alterações. O SSH2 utiliza algoritmos Message Authentication Code, i.e. MAC, para melhorar o método de verificação da integridade existente no SSH1. Compressão de dados Outra funcionalidade do SSH, realizada após a encriptação e que reduz significativamente o trafego na rede, é a compressão de dados. Esta característica é especialmente benéfica quando falamos de transferências de ficheiros, ou, por exemplo dispomos de uma ligação de rede mais lenta. Ilustração 5 - Exemplo de random art gerado pelo SSH Encriptação da informação A encriptação significa que a informação está protegida de acesso não autorizado. Cifras são o mecanismo que o SSH utiliza para encriptar e desencriptar a informação enviada. Constituem o mecanismo pelo qual o SSH encripta e desencripta a informação enviada para a rede. Um bloco de cifras é a forma mais comum de algoritmos de chaves simétricas, e.g. DES, 3DES, Blowfish, AES, and Twofish. Estes actuam num bloco de informação de tamanho fixo, utilizam uma única e secreta chave partilhada e geralmente implica a utilização de funções simples e não lineares. A informação neste ponto está encriptada e não pode ser revertida sem a respectiva chave privada. Quando um cliente estabelece uma ligação com um servidor SSH, os dois devem ter a mesma cifra para assim ser possível a encriptação e desencriptação da informação. Geralmente o servidor apresenta uma lista das cifras suportadas e o cliente escolhe a primeira da sua lista que coincida com uma da lista do servidor. Chaves de sessão são as chaves partilhadas e são geradas aleatoriamente pelo cliente e pelo servidor durante o estabelecimento da ligação. Quer o cliente quer o servidor utilizam a mesma chave de sessão para encriptar e desencriptar informação, apesar de chaves diferentes serem utilizadas pelos canais de envio e recepção. Estas chaves são geradas após a autenticação do host e antes de ser feita autenticação do utilizador, permitindo assim que o nome de utilizador e respectiva password sejam enviados de forma encriptada, podem ser substituídas de forma regular durante a sessão e destruídas na sua conclusão. Integridade dos dados A integridade da informação garante que os dados enviados de um dos pontos da ligação cheguem inalterados ao outro ponto. VII. ATAQUES BLOQUEADOS PELO SSH Password Sniffing Um sniffer é um dispositivo de rede que intercepta informação que está a ser transmitida pela rede. O método de sniffing, ocorre sem o conhecimento quer do cliente quer do servidor e é chamado de monitorização passiva. Informação do utilizador, incluindo passwords, podem ser roubadas desta forma se estiverem a ser utilizados protocolos menos seguros, como o Telnet ou o FTP. Como a informação numa sessão SSH é encriptada, não é vulnerável a este tipo de ataques e não pode ser decifrada pelo sniffer. Ataque Homem-no-meio, MITM Se a primeira ligação e troca de chaves entre um cliente e um host em particular está comprometida, o ataque MITM engana quer o cliente quer o servidor fazendo-os pensar que estão a comunicar um com o outro. Na realidade o atacante está a interceptar todo o tráfego entre os dois. O cliente (A) inicia a ligação com o servidor (B). Um atacante (C) desconhecido está à espera de interceptar a negociação da ligação. O atacante recebe o pedido de ligação do cliente e autentica-se como sendo o servidor. De seguida, o atacante inicia uma ligação com o servidor fazendo-se passar por cliente. Estão agora iniciadas duas sessões SSH seguras e o atacante está a ler toda a informação que passa entre o cliente e o servidor. O SSH garante protecção contra esta ameaça, recorrendo à autenticação do host. A menos que o host tenha sido comprometido, o atacante não tem acesso à chave privada do servidor, logo, não pode autenticar-se como tal. Sílvio Pereira & Filipe Sousa 6 Ilustração 6 - Ataque Man-in-the-midle [5] Ataques de Inserção e Repetição Ilustração 7 - Janela de configuração do Putty Neste tipo de ataques, o atacante não está somente a monitorizar a sessão SSH, mas também está a observar as teclas carregadas ou está a monitorizar o terminal com software. Ao comparar o que se escreve com o tráfego da sessão SSH, um atacante pode deduzir qual o pacote que possui determinado comando e apagar ficheiros por exemplo. O SSH previne contra esta ameaça quando o código de autenticação da mensagem é utilizado. O MAC é um bloco de informação que é utilizado para autenticar a mensagem, protege a integridade dos dados da mensagem assim como a sua autenticidade, permitindo a verificação, por quem também possui a chave secreta, para detecção de alterações no conteúdo da mensagem. Ilustração 8 – Shell do Putty em Windows NT VIII. APLICAÇÕES Existem inúmeras aplicações disponíveis para as mais diversas plataformas, capazes de oferecer implementações completas do protocolo âmbito deste documento. Dada a finalidade do documento, irão ser apresentadas apenas três delas, que se crêem ser as mais populares, disponíveis em ambientes Windows e derivados de Unix. Em ambiente Windows Putty “O PuTTy é um cliente de SSH destinado a promover o acesso remoto a servidores via Shell Seguro - SSH - e a construção de "túneis" cifrados entre servidores. Também suporta conexão directa (raw), telnet, rlogin e por porta serial. Para usar o PuTTY não é necessária sua instalação, pois ele roda directamente pelo arquivo executável Putty.exe.” [6] Este é um cliente, que, tal como descrito, provê acesso a uma conta shell remota, tunelamento de conexões e, adicionalmente, serviços de SFTP e SCP. É uma das ferramentas mais usadas no estabelecimento de sessões SSH em Windows pois está concerteza entre os mais completos softwares do género, suportanto inclusivamente todas as versões conhecidas do protocolo e suas funcionalidades. Sílvio Pereira & Filipe Sousa 7 FileZilla Esta é de resto a implementação do protoloco mais usada, por ser Open Source. Abaixo apresenta-se a saída de um comando de ligação remota SSH como a que é ilustrada na figura 9: Ilustração 9 - FileZilla em Windows Esta é uma ferramenta gráfica de suporte a SFTP, implementado no SSH. Destaca-se pela sua simplicidade de utilização e uma das características mais apreciadas pelos utilizadores é a sua extrema parecença com o tradicional File Explorer do Windows. Aqui tudo é feito em ambiente gráfico, desde a conexão ao servidor SSH, até ao tão amado Drag-anddrop de ficheiros entre cliente e servidor. À semelhança do Putty também não carece de instalação, correndo directamente a partir do filezilla.exe. [7] Em ambiente Linux OpenSSH “OpenSSH (Open Secure Shell) é uma colecção de programas de computador que provêem a criptografia em sessões de comunicações em uma rede de computadores usando o protocolo SSH. Ele foi criado com um código aberto alternativo ao código proprietário da suíte de softwares Secure Shell oferecido pela SSH Communications Security[1]. OpenSSH foi desenvolvido como parte do projecto OpenBSD, que foi liderado por Theo de Raadt” [8] Ilustração 10 - Sessão SSH em Ubuntu 12.04 root@filipe-VBox:/home/filipe# ssh -v [email protected] OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to shell.cjb.net [216.194.70.6] port 22. debug1: Connection established. debug1: permanently_set_uid: 0/0 debug1: identity file /root/.ssh/identity type -1 debug1: identity file /root/.ssh/identity-cert type -1 debug1: identity file /root/.ssh/id_rsa type 1 debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048 debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_dsa type -1 debug1: identity file /root/.ssh/id_dsa-cert type -1 debug1: Remote protocol version 2.0, remote software version OpenSSH_5.8p2_hpn13v11 FreeBSD-20110503 debug1: match: OpenSSH_5.8p2_hpn13v11 FreeBSD-20110503 pat OpenSSH* debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1 debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5 none debug1: kex: client->server aes128-ctr hmac-md5 none debug1: sending SSH2_MSG_KEX_ECDH_INIT debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ECDSA 7c:da:68:f1:0f:02:13:77:f2:6c:ad:b4:82:b4:f1:fd debug1: Host 'shell.cjb.net' is known and matches the ECDSA host key. debug1: Found key in /root/.ssh/known_hosts:1 debug1: ssh_ecdsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,password debug1: Next authentication method: publickey debug1: Trying private key: /root/.ssh/identity debug1: Offering RSA public key: /root/.ssh/id_rsa debug1: Server accepts key: pkalg ssh-rsa blen 279 debug1: read PEM private key done: type RSA debug1: Authentication succeeded (publickey). Authenticated to shell.cjb.net ([216.194.70.6]:22). debug1: channel 0: new [client-session] debug1: Requesting [email protected] debug1: Entering interactive session. debug1: Sending environment. debug1: Sending env LANG = en_US.UTF-8 Last login: Sun Mar 17 11:26:17 2013 from 188.80.94.79 [fulano@shell ~]$ debug1: client_input_channel_req: channel 0 rtype [email protected] reply 1 Facilmente se lêem neste texto todas as fases do estabelecimento de uma sessão SSH. Vão desde a tentativa de conexão às validações de ambas as entidades, respectivas chaves, descoberta e acordo mutuo dos algoritmos e modos de operação da ligação. De salientar que, em ambientes derivados do Unix qualquer explorador de ficheiros padrão já disponibiliza as funcionalidades apresentadas para o FileZilla, acima descrito. Essa é a razão por que qualquer profissional da área de administração de sistemas informáticos prefere um ambiente do género para desenvolver o seu trabalho. Sílvio Pereira & Filipe Sousa IX. CONCLUSÃO Como se viu, este trabalho é resultado de um estudo minucioso que exigiu, no decorrer do mesmo, muita, mas mesmo muita análise pesquisa. O desenvolvimento deste trabalho permitiu-nos adquirir novos conhecimentos, e foi, apesar das dificuldades, deveras entusiasmante realizá-lo. Ao longo do documento procurou descrever-se com o máximo de detalhe e fidelidade possível o protocolo SSH e algumas das suas implementações. Dá-se como bem-sucedido este trabalho se, no mínimo se tiver conseguido despertar a curiosidade do leitor para o uso do protocolo em questão, que se acredita ser de grande utilidade no dia-a-dia. Por fim gostar-se-ia de deixar duas breves recomendações, que constituem óptimos complementos de segurança na utilização de um sistema informático distribuído. Nenhum software consegue ser uma solução de segurança completa, existem factores que vão para além de assegurar as comunicações, com forte autenticação e encriptação que devem ser considerados. O ambiente físico e o factor “homem” são muitas vezes vistos como causadores de brechas de segurança. São dois exemplos os a seguir descritos: Passwords Palavras-chave fortes são políticas necessárias para que os utilizadores não escolham palavras pequenas e fáceis de adivinhar. Para além disso, devem ser definidas politicas que incentivem à alteração regular de passwords e que de forma alguma permitam a sua reutilização. Backups São geralmente implementados em servidores e na maior parte das vezes postos de parte quando se fala de computadores de secretaria. Implementar procedimentos de backup em rede, pode proteger e garantir a recuperação de informação importante se o computador foi perdido, roubado ou danificado. A utilização do SSH junto, com boas políticas de segurança permitirá utilizar económica, privada, efectiva e seguramente, as redes públicas como a internet para que se possam fazer comunicações do dia-a-dia de trabalho, com clientes e colaboradores. 8 X. BIBLIOGRAFIA [1] “http://legauss.blogspot.pt/2012/07/ssh-dicas-truques-eum-tutorial-sobre-o.html,” [Online]. [2] “http://docstore.mik.ua/orelly/networking_2ndEd/ssh.htm, ” [Online]. [3] “http://www.ibm.com/developerworks/aix/library/ausshsecurity/index.html,” [Online]. [4] “http://pt.wikipedia.org/wiki/Criptografia_de_chave_p %C3%BAblica” [Online]. [5] msdn.com, “blogs.msdn.com,” [Online]. [6] http://pt.wikipedia.org/wiki/PuTTY. [Online]. [7] “http://filezilla-project.org/,” [Online]. [8] “http://pt.wikipedia.org/wiki/OpenSSH,” [Online]. [9] “http://www.hardware.com.br/tutoriais/dominando-ssh/,” [Online].