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
                     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                     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
                     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
                    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
                     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
                    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
                     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
                     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
                 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
                 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
                     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
                 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
                 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
       Terminal Remoto e Shell Seguro   Luiz Arthur

 fim
16
       Terminal Remoto e Shell Seguro   Luiz Arthur

 fim

Mais conteúdo relacionado

PDF
Utilizando o open ssh
PPTX
Aula 4 Mini Curso de Linux
PDF
Segurança em servidores Linux
PDF
SegurançA BáSica Do Apache
PDF
Apache proxy
PPT
Intro-To-Squid
PPT
“Squid” por Artur Martins, David Riedel e Florentino Bexiga
PDF
Comandos linux
Utilizando o open ssh
Aula 4 Mini Curso de Linux
Segurança em servidores Linux
SegurançA BáSica Do Apache
Apache proxy
Intro-To-Squid
“Squid” por Artur Martins, David Riedel e Florentino Bexiga
Comandos linux

Mais procurados (18)

PDF
Servidor de internet (NAT, Squid, Sarg)
PPT
Configurando servidor web https no apache2 ed
PDF
Seguranca da Informação - Filtros/tcpd
PDF
Aula20 open vpn
PPT
Segurança autenticação apache -ppt
PDF
Block Hosts: Bloqueando Ataques De ForçA Bruta (Brute Force) Em Ftp, Ssh E Ou...
PDF
Comandos Unix
PDF
Dhcp com controle_ip_compartilhamento
PDF
Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL
PDF
Redes prática - NFS
PPTX
Socket
PDF
Vps manager 2.0 documentação e intalação
ODP
Certificação Digital - Aula1 Exercícios
PDF
Seguranca da informação seguranca em_redes_parte_03praticas
ODP
Certificação Digital - Aula2 Exercícios
PPTX
SENAI - Segurança firewall
PDF
Tutorial open vpn_setup ssh tunel
Servidor de internet (NAT, Squid, Sarg)
Configurando servidor web https no apache2 ed
Seguranca da Informação - Filtros/tcpd
Aula20 open vpn
Segurança autenticação apache -ppt
Block Hosts: Bloqueando Ataques De ForçA Bruta (Brute Force) Em Ftp, Ssh E Ou...
Comandos Unix
Dhcp com controle_ip_compartilhamento
Palestra Hardening Linux - Por Juliano Bento - V FGSL e I SGSL
Redes prática - NFS
Socket
Vps manager 2.0 documentação e intalação
Certificação Digital - Aula1 Exercícios
Seguranca da informação seguranca em_redes_parte_03praticas
Certificação Digital - Aula2 Exercícios
SENAI - Segurança firewall
Tutorial open vpn_setup ssh tunel
Anúncio

Semelhante a Redes prática - SSH (20)

PDF
Introdução ao Ssh
PPT
Usuário LInux
PPTX
APLICAÇÕES SEGURAS.pptx
PDF
Servidores linux
PDF
Unidade5 roteiro
PDF
Unidade5 roteiro
PPTX
Tutorial sobre ssh
PDF
Squid proxy
ODP
Cluster de Alta Disponibilidade em Linux
PDF
HTTPS com TLS em Modo RSA
PDF
PHP e Redis
PPTX
Criptografia P2P - Comunicadores Instantâneos
PPTX
AULA Resumo AV - ARA0370 - PROTOCOLOS DE REDES DE COMPUTADORES.pptx
PPTX
Acesso_SSH_usado em redes_de computadores.pptx
PDF
Alta Disponibilidade em Linux com Heartbeat e Drbd
PDF
PPTX
Informática Windows com questões de cincurso publico
DOCX
M4 tarefa video
PDF
Roteiro sshd
PDF
Web service
Introdução ao Ssh
Usuário LInux
APLICAÇÕES SEGURAS.pptx
Servidores linux
Unidade5 roteiro
Unidade5 roteiro
Tutorial sobre ssh
Squid proxy
Cluster de Alta Disponibilidade em Linux
HTTPS com TLS em Modo RSA
PHP e Redis
Criptografia P2P - Comunicadores Instantâneos
AULA Resumo AV - ARA0370 - PROTOCOLOS DE REDES DE COMPUTADORES.pptx
Acesso_SSH_usado em redes_de computadores.pptx
Alta Disponibilidade em Linux com Heartbeat e Drbd
Informática Windows com questões de cincurso publico
M4 tarefa video
Roteiro sshd
Web service
Anúncio

Mais de Luiz Arthur (20)

PDF
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
PDF
Desafios da cibersegurança - ontem, hoje e amanhã
PDF
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
PDF
NAPSOL
PDF
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
PDF
Detecção de alertas de segurança em redes de computadores usando redes sociai...
PDF
Evaluating the Utilization of Twitter Messages as a Source of Security Alerts
PDF
Análise de Mensagens de Segurança Postadas no Twitter
PDF
match making e propaganda na web
PDF
Mineração de dados no Gmail e Facebook
PDF
Invasao kernel.org
PDF
Núcleo do Linux (Kernel Linux)
PDF
Palestra Ferramentas de Segurança Open Source v.2
PDF
Palestra mau uso da tecnologia
PDF
UTFPR-inventario-patrimonio-laboratorio-e105
PDF
01 programação - introdução computação
PDF
Bibliografia recomendada - programação C
PDF
Bibliografia recomendada-programacao-python
PDF
Bibliografia recomendada-seguranca
PDF
Bibliografia recomendada-redes
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
Desafios da cibersegurança - ontem, hoje e amanhã
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
NAPSOL
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
Detecção de alertas de segurança em redes de computadores usando redes sociai...
Evaluating the Utilization of Twitter Messages as a Source of Security Alerts
Análise de Mensagens de Segurança Postadas no Twitter
match making e propaganda na web
Mineração de dados no Gmail e Facebook
Invasao kernel.org
Núcleo do Linux (Kernel Linux)
Palestra Ferramentas de Segurança Open Source v.2
Palestra mau uso da tecnologia
UTFPR-inventario-patrimonio-laboratorio-e105
01 programação - introdução computação
Bibliografia recomendada - programação C
Bibliografia recomendada-programacao-python
Bibliografia recomendada-seguranca
Bibliografia recomendada-redes

Redes prática - SSH

  • 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