Your SlideShare is downloading. ×
Redes prática - SSH
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Redes prática - SSH

2,569
views

Published on

Slides de suporte da aula de Redes de Computadores - Continuar pesquisas nas bibliografias: …

Slides de suporte da aula de Redes de Computadores - Continuar pesquisas nas bibliografias:

HUNT, Craig. Linux Servidores de rede. Editora Ciência Moderna. Rio de Janeiro. 2004.

TANENBAUM, Andrew S. Redes de Computadores. Editora Campus, 4 Edição. 2003.

COMER, Douglas E. Interligação de Redes com TCP/IP, volume 1. Editora Campus, 5 Edição. 2006.


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,569
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
109
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 1 Terminal Remoto e Shell Seguro Luiz Arthur O uso de terminais e login remotos sempre existiram para a gerência de computadores remotos, entretanto no início estes terminais de logins remotos não possuam segurança pois os dados eram transmitidos pela rede em forma de texto puro, ou seja, todos os dados (incluindo senha) quando capturados pela rede podiam ser lidos sem maiores problemas. O servidor de Shell Seguro (SSH) proporciona acesso remoto com autenticação forte e sessão de encriptação com chave pública. O shell seguro é seguro e fácil de usar. O SSH substitui o telnet, FTP, rlogin e rsh como alternativa segura. Toda a comunicação entre cliente/servidor é feita de forma encriptada usando chaves públicas/privadas RSA ou DSA para criptografia garantindo uma transferência segura de dados. O ssh é então um programa de login remoto (acesso ao sistema) para a execução de comandos em uma máquina remota. O ssh substitui programas de login remotos já consagrados como o telnet, rlogin, etc, os quais não proviam nenhuma segurança (os dados eram transmitidos no formato texto puro) na transferência de dados. O ssh também permite que conexões de servidores gráficos remotos seja feita por um canal seguro. A segurança do ssh é fornecida devido ao fato dos dados serem criptografados antes de serem transmitidos, isto é possível através do uso de chaves criptograficas publicas trocadas entre os hosts no inicio da transmissão dos dados.
  • 2. 2 Terminal Remoto e Shell Seguro Luiz Arthur O servidor ssh chamado de sshd é um serviço que “escuta” conecções dos clientes. O sshd prove autenticação, execução de comandos remotamente, além de troca de dados entre os hosts remotos (estilo FTP). O ssh de forma geral é constituído dos seguintes programas: ● openssh – Contém o utilitário de geração de chaves criptograficas, conhecido como ssh-keygen e o programa de cópia de arquivo remoto chamado de scp. ● openssh-server – Contém o daemon do servidor sshd e do servidor ftp seguro. ● Openssh-clients – Contém as ferramentas de ciente OpenSSH para manutenção de chave de cliente, bem como o comando ssh para login seguro e o comando sftp para FTP seguro. Quando um servidor e cliente ssh se conectam, eles trocam chaves criptograficas. As chaves são comparadas às chaves conhecidas (trocadas em uma sessão anterior, por exemplo). Se as chaves não forem encontradas, ao usuário é perguntado se uma chave nova deve ser aceita. Se a chave for aceita pelo usuário a chave do host é adicionada ao arquivo ~/.ssh/known_hosts no diretório home do usuário, e então é usada para codificar uma chave de sessão gerada aleatoriamente. A chave de sessão é então usada por ambos os sistemas para codificar o resto da sessão.
  • 3. 3 Terminal Remoto e Shell Seguro Luiz Arthur Se nenhuma autenticação especial foi configurada, é solicitado ao usuário um usuário e uma senha; utilizando o ssh para uma conexão entre os hosts, assim o roubo de senha torna-se praticamente impossível, por que a senha é codificada antes de ser enviada. A velocidade do console remoto conectado via Internet é excelente (melhor que a obtida pelo telnet e serviços r*) dando a impressão de uma conexão em tempo real, a compactação dos dados também pode ser ativada para elevar ainda mais a velocidade entre cliente- servidor ssh. Configurando o sshd Pouca configuração é exigida para executar um servidor SSH, mas é possível muita configuração. Muitos dos servidores em Linux tem a característica de não necessitarem de muita configuração apesar de possuírem inúmeras variáveis que podem ser configuradas conforme a necessidade. O SSH não é nenhuma exceção, sem configuração, o SSH funcionará muito bem, mas há opções de configuração que você pode usar para modificá-lo para seu uso particular. O sshd é configurado pelo arquivo texto /etc/ssh/sshd_config. As principais opções/parâmetros de configuração neste arquivo são: AllowGroups – Lista os grupos dos quais são permitidos logins. Um usuário tem que pertencer a um dos grupos listados para se registrar ao sistema. Por padrão, logins não são limitados a grupos específicos.
  • 4. 4 Terminal Remoto e Shell Seguro Luiz Arthur AllowTcpForwarding – Especifica se o encaminhamento (roteamento) é permitido ou não. Por padrão, é permitido (yes); AllowUsers – Lista os usuários que são permitidos para o login. Por padrão, logins não são limitados a usuários específicos. Os usuários são separados por espaços; Banner – Identifica um arquivo que contém uma página de banner (uma mensagem) que é exibida antes do login; ChallengeResponseAuthentication – Especifica se a autenticação de desafio/resposta deve ser usada ou não. O default é yes. Ciphers – Identifica as técnicas de criptografia que serão suportadas pelo servidor. Os ciphers suportados são: ``3des-cbc'', ``aes128-cbc'', ``aes192-cbc'', ``aes256-cbc'', ``aes128-ctr'', ``aes192-ctr'', ``aes256-ctr'', ``arcfour'', ``blowfish-cbc'', and ``cast128-cbc''. O padrão é ``aes128-cbc,3des-cbc,blowfish- cbc,cast128-cbc,arcfour, aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256- ctr'' CheckMail – Especifica se o sshd deve verificar se o usuário que efetuou a conecção tem ou não mensagem de email. O padrão é não verificar.
  • 5. 5 Terminal Remoto e Shell Seguro Luiz Arthur ClientAliveInterval – Define o intervalo de tempo no qual serão enviadas mensagens ao cliente quando o link estiver inativo. Estas mensagens são um meio de concluir uma resposta do cliente. O padrão é 0, significando que o servidor não enviará as mensagens. ClientAliveCountMax – Define o número máximo de mensagem que serão enviadas a um cliente inativo, antes da conexão ser terminada pelo servidor. O padrão é 3. DenyGroups – Lista os grupos que não estão autorizados a se registrar no servidor. Usuários que pertencem a quaisquer deste grupos não serão autorizados a se registrar. Por padrão todos os grupos estão autorizados. DenyUsers – Lista os usuários que não estão autorizados a se registrar no servidor. Por padrão todos estão autorizados. HostbasedAuthentication – Especifica se .rhosts e /etc/hosts.equiv serão usados ou não para autenticação de clientes. O padrão é não. HostKey – Identifica o arquivo que contém os chaves privadas do host. O padrão é /etc/ssh/ssh_host_key. IgnoreRhosts – Significa que os arquivos .rhosts e .shosts não serão usados, mesmo se RhostsAuthenticatio, RhostsRSAAuthentication ou HostbasedAuthenticaion forem especificados.
  • 6. 6 Terminal Remoto e Shell Seguro Luiz Arthur IgnoreUserKnownHosts – Faz com que o servidor ignore o ~/.ssh/know_hosts do usuário durante a autenticação de RhostsRSAAuthentication e HostbasedAuthentication. O padrão é usar o arquivo ~/.ssh/know_hosts. KeepAlive – Especifica se o sistema deve enviar ou não mensagens keepalive para descobrir se o link está operacional. O padrão é yes. ListenAddress – Identivica o endereço e porta na qual o sshd deve escutar por conexões. O padrão é escutar todos os endereços atribuídos ao servidor e escutar a porta padrão (normalmente a 22). LoginGraceTime – Define a quantidade de tempo que o servidor esperará pelo usuário para completar um login bem-sucedido. O padrão é 600 segundos. LogLevel – Especifica o nível de detalhe gravado no registro de logs. MaxStartups – Define o número máximo de conexões que podem estar esperando por autenticação. O padrão é 10. PasswordAuthenticationPassword – Informa ao sshd se a autenticação por senha é permitida ou não, o padrão é sim.
  • 7. 7 Terminal Remoto e Shell Seguro Luiz Arthur PermitEmptyPasswords – Informa ao sshd se uma senha é requerida ou não para autenticação por senha. PermitRootLogin – Define o nível de acesso concedido ao usuário root. São quatro nível: yes (Ao usuário root é concedido acesso de login completo por ssh), no (o usuário root não pode acessar o sshd diretamente), without-password (o usuário root é autorizado acessar o sistema, mas não pode usar senhas para fazer isto), forced-commands-only (o root é autorizado a executar comandos remotamente se o usuário foi autenticado por autenticação de chave publica. PidFile – Define o caminho no qual o sshd grava seu IP de processo. O padrão é /var/run/sshd.pid. Port – Define a porta na qual o sshd executa por tráfego entrante. O padrão é a porta 22. Protocol – Lista as versões do protocolo SSH que o servidor deve suportar. O padrão é tentar primeiro a versão 2 e então recuar para a versão 1 (então a opção é 2,1). A versão 1 tem alguns problemas de segurança bem conhecidos, se possível desabilite-o. RhostsAuthentication – Informa ao sshd para usar o .rhosts ou /etc/hosts.equiv para a autenticação sem senha. O padrão é não.
  • 8. 8 Terminal Remoto e Shell Seguro Luiz Arthur RhostsRSAAuthentication – Informa ao sshd que pode usar arquivos de hosts confiaveis junto com a chave RSA. O padrão é não utilizar. RSAAuthentication – Define a autenticação de chave pública RSA é permitida ou não, o padrão é permitir. ServerKeyBits – Define o número de bits usada para criptografar a sessão ssh versão 1. O valor mínimo é 512 e o padrão é 768 bits. UserLogin – Especifica se o Login é usado ou não para sessões de login interativas. O padrão é não. X11DisplayOffset – Define o mais baixo número de exibição que sshd está autorizado a usar para encaminhar X11. O padrão é 10. X11Forward – Informa ao ssh se deve ou não encaminhar tráfego X11 ao cliente, o padrão é não A maioria das opção não são necessárias. Observe o arquivo de configuração com o comando a seguir: # less /etc/ssh/sshd_config
  • 9. 9 Terminal Remoto e Shell Seguro Luiz Arthur O sshd não funciona por padrão no slackware como um processo do inetd. Então o sshd é um processo independente. Desta forma, após configurar o arquivo do servidor sshd basta iniciar o script de inicialização do sshd, com o seguinte comando: #/etc/rc.d/rc.sshd restart Para verificar se o servidor esta funcionando corretamente basta executar o netstat e verificar se o serviço sshd esta em execução, para isto execute o comando: # netstat -a --tcp | grep sshd Se tudo correu bem você pode usar o seguinte comando para acessar o servidor ssh: #ssh ip_do_servidor_ssh Talvez seja necessário nos comandos incluir o nome do usuário que vai acessar o servidor ssh, assim os comandos ssh ficariam como a seguir: #ssh usuario@ip_do_servidor_ssh
  • 10. 10 Terminal Remoto e Shell Seguro Luiz Arthur Aplicativos clientes para o uso de servidores SSH Comando ssh O comando ssh é a ferramenta usada acessar seções de console remotos. O arquivo de configuração de usuários é ~/.ssh/config e o arquivo global /etc/ssh/ssh_config. Para conectar a um servidor ssh remoto: $ ssh usuario@ip/nome_do_servidor_ssh Caso o nome do usuário seja omitido, seu login atual do sistema será usado. Com a opção -l é usada também para alterar a identificação de usuário. O uso da opção -C é recomendado para ativar o modo de compactação dos dados (útil em conexões lentas). Uma porta alternativa pode ser especificada usando a opção -p porta (a 22 é usada por padrão). Na primeira conexão, a chave pública do servidor remoto será gravada em ~/.ssh/know_hosts, e verificada a cada conexão como checagem de segurança para se certificar que o servidor não foi alvo de qualquer ataque ou modificação não autorizada das chaves.
  • 11. 11 Terminal Remoto e Shell Seguro Luiz Arthur Exemplos: Conecta-se ao servidor remoto usando o login do usuário atual $ ssh ftp.sshserver.org Conecta-se ao servidor remoto usando o login john (via ssh versão 2) $ ssh -2 ftp.sshserver.org -l john Conecta-se ao servidor remoto usando compactação e o login john $ ssh ftp.sshserver.org -C -l john Semelhante ao exemplo acima, usando o formato "login@ip" $ ssh john@ftp.sshserver.org -C
  • 12. 12 Terminal Remoto e Shell Seguro Luiz Arthur Comando scp Permite a cópia de arquivos entre o cliente/servidor ssh. A sintaxe usada por este comando é a seguinte: $ scp [origem] [destino] Os parâmetros de origem e destino são semelhantes ao do comando cp mas possui um formato especial quando é especificado uma máquina remota: ● Um caminho padrão - Quando for especificado um arquivo local. Por exemplo: /usr/src/arquivo.tar.gz. ● usuario@host_remoto: /diretório/arquivo - Quando desejar copiar o arquivo de/para um servidor remoto usando sua conta de usuário. Por exemplo: gleydson@ftp.server.org:~/arqs. A opção -C é recomendável para aumentar a taxa de transferência de dados usando compactação. Caso a porta remota do servidor sshd seja diferente de 22, a opção -P porta deverá ser especificada (é "P" maiúscula mesmo, pois a -p é usada para preservar permissões/data/horas dos arquivos transferidos).
  • 13. 13 Terminal Remoto e Shell Seguro Luiz Arthur Exemplos: Para copiar um arquivo local chamado /pub/teste/script.sh para meu diretório pessoal em ftp.sshserver.org. $ scp -C /pub/teste/script.sh gleydson@ftp.sshserver.org:~/ Para fazer a operação inversa a acima (copiando do servidor remoto para o local) é só inverter os parâmetros origem/destino: $ scp -C gleydson@ftp.sshserver.org:~/script.sh /pub/teste Para copiar o arquivo local chamado /pub/teste/script.sh para o diretório /scripts dentro do meu diretório pessoal em ftp.sshserver.org com o nome teste.sh. $ scp -C /pub/teste/script.sh gleydson@ftp.sshserver.org:~/scripts/teste.sh O exemplo abaixo faz a transferência de arquivos entre 2 computadores remotos: O arquivo teste.sh é lido do servidor server1.ssh.org e copiado para server2.ssh.org (ambos usando o login gleydson) $ scp -C gleydson@server1.ssh.org:~/teste.sh gleydson@server2.ssh.org:~/
  • 14. 14 Terminal Remoto e Shell Seguro Luiz Arthur Comando sftp Permite realizar transferência de arquivos seguras através do protocolo ssh. A conexão e transferências são realizadas através da porta 22 (ainda não é possível modificar a porta padrão). A sintaxe para uso deste comando é a seguinte: sftp usuario@host_remoto Compactação pode ser especificada através da opção -C. Um arquivo contendo os comandos usados na seção sftp poderá se especificado através da opção -b arquivo para automatizar tarefas. O suporte ao programa sftp somente está disponível ao protocolo ssh versão 2 e superiores.
  • 15. 15 Terminal Remoto e Shell Seguro Luiz Arthur fim
  • 16. 16 Terminal Remoto e Shell Seguro Luiz Arthur fim