UNIVERSIDADE DA BEIRA INTERIOR Departamento de Informática Administração de Sistemas Licenciatura em: - Tecnologias e Sistemas de Informação 3. Serviços de Acesso Remoto a Sistemas e Ficheiros Docente: Prof. Joel Rodrigues Ano Lectivo 2010/2011
TELNET Telnet - Telecommunications Network Protocol. Descrito no RFC 854. Serviço normalizado de acesso remoto a sistemas sobre redes TCP/IP. Serviço de funcionalidade reduzida, simples de utilizar e omnipresente. Um dos serviços mais antigos da Internet (a primeira especificação data de 1969). Suficientemente genérico para poder funcionar com qualquer tipo de computador. Implementado sobre outras arquitecturas protocolares (SNA, DNA, etc.). Modo de comunicação bidireccional e em modo carácter-a-carácter, com eco gerado pelo servidor. (Opcionalmente pode funcionar em modo linha-a-linha). Usa o porto 23 do TPC. Faz o uso do conceito Network Virtual Terminal (NTV). Negociação de opções. Funcionamento baseado no modelo cliente-servidor: Cliente: Corre no sistema local; É lançado pelo utilizador cliente; Faz o acoplamento entre o terminal-driver e uma ligação TCP; O utilizador dialoga com o terminal-driver. Servidor: Reside no sistema remoto; É activado em background no arranque da máquina (deamon); Faz o acoplamento entre um pseudo terminal-driver e uma ligação TCP; O pseudo terminal-driver dialoga com o interpretador de comandos. Administração de Sistemas (2010/2011) 53
Cliente telnet Servidor telnet Interpretador de comandos Terminal driver TCP/IP TCP/IP Pseudo Terminal driver kernel kernel Utilizador no terminal Ligação TCP Figura 3.1 Modelo Cliente/Servidor do Telnet. O pseudo terminal driver faz com que a login shell pense que foi invocada no servidor, e que qualquer programa executado por ela pense que está a dialogar com um terminal real. Network virtual terminal Dispositivo imaginário que fornece, através da rede, uma representação normalizada de um terminal canónico em modo de carácter (ASCII). O sistema local e o sistema remoto fazem o mapeamento entre o NTV e os seus terminais reais. O sistema local faz o mapeamento do terminal do utilizador no NTV. O sistema remoto faz o mapeamento do NTV no tipo de terminal que ele suporta. Elimina a necessidade de os sistemas remotos serem informados das características do terminal local. Negociação de Opções Todos os NVTs suportam um conjunto mínimo de capacidades. Alguns terminais possuem mais capacidades do que o conjunto mínimo. Os sistemas local e remoto negoceiam um conjunto de opções mutuamente aceitáveis (conjunto de caracteres, modo de eco, tamanho da janela). Administração de Sistemas (2010/2011) 54
TELNET versus telnet TELNET é o protocolo. telnet é uma aplicação que suporta o protocolo TELNET sobre TCP. Existem outros protocolos da camada de aplicação que utilizam o TELNET. Comando telnet O comando telnet invoca o protocolo TELNET. O formato deste comando é o seguinte: Sintaxe: telnet [host] Exemplo: telnet 192.168.1.1 telnet unix.ubi.pt Se o comando for executado sem opções entra-se em modo de comando. Neste modo, podem executar-se diversos subcomandos. Exemplo: open 192.168.1.1 Figura 3.2 Comandos do telnet em Windows. Administração de Sistemas (2010/2011) 55
Remote Login (rlogin) Descrito no RFC 1282. Serviço normalizado de acesso remoto entre máquinas UNIX/LINUX sobre redes TCP/IP. Modo de comunicação bidireccional e em modo carácter-a-carácter com eco gerado pelo sistema remoto. Mais simples e eficiente que o TELNET. Não suporta opções de funcionamento. O rlogin usa o porto 513 do protocolo TCP. Possibilita login remoto sem necessidade de especificar uma password. A autenticação do pedido de login remoto é feita verificando os ficheiros /etc/hosts.equiv e ~/.rhosts no sistema remoto. Se o nome do sistema local não estiver em algum destes ficheiros, o utilizador terá de introduzir a password. A sintaxe do comando rlogin é: rlogin [-l username] hostname A opção -l username é usada quando o nome do utilizador no sistema remoto é diferente do nome no sistema local. Exemplo do ficheiro hosts.equiv: neve diamante_gold joel + david - maria Todos os utilizadores da máquina neve podem utilizar o rlogin sem password. O utilizador joel a partir da máquina diamante_gold não necessita de password no rlogin. O utilizador david pode utilizar o rlogin de qualquer máquina sem password. O utilizador maria necessita sempre de password. Administração de Sistemas (2010/2011) 56
Secure Shell (SSH) É um programa que permite efectuar login numa máquina remota, executar comandos e copiar ficheiros. Fornece autenticação forte e comunicações seguras sobre redes inseguras. Telnet, rlogin e ftp efectuam toda a comunicação em ASCII simples, tornando-se muito vulneráveis em termos de segurança. O SSH efectua a encriptação de toda a informação (pode opcionalmente também efectuar a compressão da informação). É um produto comercial, tendo custos para implementações comerciais. É grátis para outras utilizações. Foi desenvolvido na Finlândia (http://www.ssh.fi). Os protocolos SSH estão disponíveis em: http://www.ietf.org/html.charters/secsh-charter.html A versão actual é o Secure Shell 3.2 SSH - Versão 1 Usa encriptação RSA (Rivest, Shamir, Adir), 3DES (Triple Data Encryption Standard) e Blowfish. Algumas implementações também usam IDEA, contudo o OpenSSL não a utiliza. Usa CRC (Cyclic redundancy checking) para manter a integridade dos dados. SSH - Versão 2 Usa encriptação DSA (Digital Signature Algorithm), melhor implementado na versão comercial do SSH. Usa uma abordagem diferente relativamente ao CRC. SSH1 and SSH2 não são compatíveis entre si. SSH - Versão 3 Apresenta funcionalidades de autenticação melhoradas. Possui funcionalidades PKI (Public Key Infrastructure) avançadas. Administração de Sistemas (2010/2011) 57
Testado e certificado para actuar com CAs (Certification Authorities) como o SSH Certifier e RSA Security Keon PKI, de modo a integrar-se facilmente com os sistemas PKI actuais. Suporte adicional para OCSP (Online Certificate Status Protocol) melhorando a segurança efectuando verificações em tempo real da validade dos certificados. Suporte para smart cards. Suporte para Servidores Windows. Funcionalidades PKI semelhantes às versões UNIX. Grande segurança e funcionalidade, com melhoria substancial do desempenho. Redução significativa da utilização da CPU em transferências de ficheiros. Suporte para SFTP (Secure File Transfer Protocol) com registo das acções dos utilizadores em ficheiros de log. Aceita Anonymous SFTP. Inclui ainda uma API (Application Programming Interface) de suporte a funcionalidades ssh-agent. Open SSH Implementação do protocolo SSH; Freeware; Suporta as versões SSH1, SSH2 e SSH3; O OpenSSH está actualmente na Versão 4.2; Disponível em http://www.openssh.org. Comandos SSH ssh Programa cliente Telnet/rlogin. sshd Programa Servidor (daemon) que permite o acesso. ssh-agent Agente de autenticação para guardar chaves privadas. ssh-add Ferramenta usada para adicionar chaves ao agente. sftp Programa tipo FTP que funciona sobre o protocolo SSH. scp (Secure file copy) Programa semelhante ao rcp. ssh-keygen Ferramenta para gerar chaves. Administração de Sistemas (2010/2011) 58
sftp-server Servidor FTP que funciona sobre SSH inicializado automaticamente por sshd. ssh-keyscan Ferramenta usada para aceder às chaves públicas existentes em servidores SSH. Alguns clientes SSH ssh PuTTy TeraTerm Pro with SSH extentions SecureCRT WinSCP (implementação do SCP para Windows) FTP Seguro O SSH através da aplicação sftp (secure FTP) permite transferir ficheiros de um modo semelhante ao ftp através de um meio de comunicação encriptado (ssh). Pode usar a autenticação de chave pública e compressão. O sftp efectua a ligação a um servidor passando depois a actuar em modo de comando interactivo semelhante ao ftp normal. Pode descarregar ficheiros automaticamente se não for usado um método de autenticação interactivo, caso contrário só o pode fazer depois da autenticação. Pode ser inicializado a partir de uma directoria remota. Sintaxe: sftp [[utilizador@]máquina[:ficheiro [ficheiro]]] sftp [[utilizador@]máquina[:directoria[/]]] Opções: C envia dados comprimidos para outras opções consultar: man sftp Administração de Sistemas (2010/2011) 59
Remote Shell (rsh) Execução remota de comandos UNIX. Sintaxe abreviada: rsh maquina_remota comando_remoto Autenticação: na directoria do utilizador, na máquina remota, deve existir um ficheiro.rhosts com a lista das máquinas autorizadas a executar comandos remotos. File Transfer Protocol (ftp) Definido nas RFCs 959, 2228 e 2640. Funciona no modelo cliente/servidor. Oferece os elementos básicos para partilha de ficheiros entre máquinas (acesso e manipulação de ficheiros locais e remotos). o Envio (upload) de ficheiros o Recepção (download) de ficheiros o Outras operações sobre o sistema de ficheiros. Serviço normalizado de acesso remoto a ficheiros sobre redes TCP/IP. É necessário uma conta no servidor ou o servidor permitir FTP anónimo (anonymous FTP). Utiliza duas ligações TCP: o Ligação de controlo - para a troca de comandos e respostas; o Ligação de dados - para a transferência de informação. O servidor fica escuta de pedidos no porto 21 (ligação de controlo). A ligação de controlo é mantida até ao fim da sessão. A ligação de dados é estabelecida sempre que for necessário transferir um ficheiro. Administração de Sistemas (2010/2011) 60
Figura 3.3 Comandos do ftp em Windows. Figura 3.4 Comandos do ftp em Linux. Trivial FTP Descrito nos RFCs 783 e 1350. Serviço normalizado de acesso remoto a ficheiros sobre redes UDP/IP, pode também funcionar sobre outros protocolos de transporte. Administração de Sistemas (2010/2011) 61
Serviço com funcionalidades muito reduzidas e de utilização simples. Simples, fácil de implementar e pode residir em ROM. Sem segurança. Não é necessário especificar o user_name e a password. Esta característica foi utilizada por crackers para copiar o ficheiro de passwords de sistemas Unix, podendo depois tentar descobrir essas passwords. Para prevenir esta falha de segurança, os sistemas passaram apenas a permitir o acesso por TFTP a uma só directoria. Não permite a listagem dos ficheiros existentes no servidor. O cliente tem de saber à partida qual o nome do ficheiro a transferir. Figura 3.5 Sintaxe do tftp em Windows. Remote Copy (rcp) Cópia remota de ficheiros e directorias entre sistemas UNIX. Sintaxe abreviada: rcp maquina_remota:ficheiro_remoto ficheiro_local rcp ficheiro.local maquina_remota:ficheiro_remoto Autenticação: ficheiro.rhosts. Administração de Sistemas (2010/2011) 62
X Windows Descrito no RFC 1013. Acesso remoto em modo gráfico, em ambiente cliente-servidor. Servidor X: aplicação de gestão do monitor gráfico, teclado e rato. Pode ser totalmente implementado em hardware (terminais X). Clientes X: aplicações locais ou remotas que usam o programa servidor. Utiliza TCP para comunicações remotas. Quando o servidor e os clientes estão na mesma máquina, a comunicação é feita através da comunicação de processos. Administração de Sistemas (2010/2011) 63