Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

SSH - Uma breve abordagem

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Artigo SSH - Uma breve abordagem

    Como o primeiro de uma série (assim eu espero), este material é indicado para aqueles que querem aprofundar um pouco mais no mundo Linux, não ficando apenas no desktop. Neste trabalho trato dos conceitos básicos do SSH, configuração e utilização.
    Por: 0skar Costa

    Introdução teórica
    A segurança em redes de computadores é um fator que nunca pode ser deixado de lado ou em segundo plano. Mesmo programas como navegadores de Internet, ou leitores de e-mail já utilizam criptografia para realizar transações que são consideradas sigilosas.

    Desta forma, considerando que um serviço de login remoto é utilizado na maioria das vezes para fazer configurações em máquinas ou servidores que estão fisicamente difíceis de serem alcançadas, seja por questão de distância ou por questão de urgência da realização do serviço.

    Este tipo de serviço certamente necessitaria de um bom nível de segurança, pois informações sigilosas a respeito de configuração podem estar trafegando por este canal de comunicação que ser formou com o login remoto.

    Um dos meios mais seguros de realizar tal serviço é através do SSH (Secure Shell), pois ele utiliza criptografia com chaves privadas e públicas, que permite autenticação e transmissão de dados criptografada, o que dificulta o roubo de senhas e informações sigilosas por pessoas conectadas em modo promíscuo na rede.

    Outro motivo para a utilização do SSH é sua portabilidade, ou seja, o SSH é suportado por diversas plataformas, incluindo: Unix, Linux, BSD, Windows, Solaris, Mac/OS e muitos outros SO's.

    SSH (Secure Shell)

    O serviço SSH, como a maioria dos serviços de rede em Linux, utiliza um lado servidor e um lado cliente. Mas para o ssh é interessante que em uma mesma máquina existam os dois lados do serviço configurados, pois o ssh se destina na maioria das vezes para configuração remota via terminal.

    Para a realização deste trabalho foi estudado o OpenSSH, mais utilizado em sistemas BSD e Linux. Mas nada impede que este trabalho possa ser utilizado para configuração de outros programas de ssh, como o ssh ou o freessh.

    Servidor SSHD (daemon)
    O daemon sshd é um programa que fica rodando, fazendo o papel de servidor, escutando a porta 22 (ssh) pelas conexões dos clientes.

    O principal arquivo de configuração do lado servidor deste serviço é /etc/ssh/sshd_config, onde estão presentes as opções de configuração de conexão, autenticação e encriptação do serviço ssh.

    As opções de configuração de um servidor ssh são:

    * Port - define a porta do serviço, o padrão é 22;
    * Protocol - define qual protocolo utilizar, SSH1 (1) ou SSH2 (2);
    * ListenAddress - define o endereço local que o sshd ficará ouvindo, o padrão é ouvir em todos endereços, 0.0.0.0;


    Outras opções, são as definições de chave:

    * HostKey - caminho do arquivo da chave privada, /etc/ssh/ssh_host/key para SSH1, /etc/ssh/ssh_host_rsa_key e ssh_host_dsa_key para SSH2;
    * KeyRegenarationInterval - tempo de vida da chave para SSH1;
    * ServerKeyBits - tamanho da chave em bits, valor mínimo 512;


    As opções referentes a autenticação e conexão:

    * PermitRootLogin - permissão para o root logar;
    * StrictModes - permite ao daemon sshd checar o home dos usuários e suas permissões de arquivos;
    * RSAAuthentication - autenticação com chave RSA para protocolo SSH1;
    * PubkeyAuthentication - autenticação através de chave pública para o protocolo SSH2;
    * RhostsRSAAuthentication - especifica se os hosts em rhosts e em /etc/hosts.equiv autenticarão com RSA, somente para SSH1;
    * HostbasedAuthentication - o mesmo que RhostsRSAAuthentication, mas para SSH2;
    * IgnoreUserKnownHosts - ignora os hosts conhecidos pelo ssh, guardados em ~/.ssh/know_hosts, para RhostsRSAAuthentication e HostbasedAuthentication;
    * IgnoreRhosts - ignora os hosts em .rhosts e .shosts para autenticações baseadas em hosts;
    * PasswordAuthentication - define a autenticação por senha criptografada, o padrão é yes;
    * PermitEmptyPasswords - permite senha vazia, o padrão é no;
    * MaxStartups - número máximo de conexões, 10 conexões é o padrão;


    Existem mais opções para configuração do sshd. Algumas para utilização de interface gráfica X11, para utilização de kerberos, para definição de grupos e usuários, entre outras. Todas estão explicadas no manual do sshd_config (8).

    Após a configuração do servidor é preciso checar as permissões dos arquivos de configuração e de chaves para garantir a segurança do serviço:

    # chown -R root:root /etc/ssh
    # chmod 775 /etc/ssh
    # chmod 600 /etc/ssh/ssh_host_key
    # chmod 644 /etc/ssh/ssh_host_key.pub
    # chmod 644 /etc/ssh/sshd_config


    A última coisa a fazer na parte servidor do serviço é rodar o daemon sshd:

    # /usr/sbin/sshd


    Neste ponto o host já está pronto para receber conexões ssh.

    Exemplo de configuração
    Configuração básica do arquivo sshd_config para um servidor ssh, utilizando protocolo SSH2, permitindo acesso para os usuários alpha e beta, negando acesso ao usuário root e ao grupo Alunos e utilizando o arquivo /tmp/ssh_banner como mensagem de boas vindas:

    Código:
    Port 22
    Protocol 2
    ListenAddress 0.0.0.0
    
    HostKey /etc/ssh/ssh_host_rsa_key
    HostKey /etc/ssh/ssh_host_dsa_key
    
    KeyRegenerationInterval 1h
    ServerKeyBits 768
    
    PermitRootLogin no
    StrictModes yes
    
    RSAAuthentication yes
    PubkeyAuthentication yes
    
    HostbasedAuthentication no
    
    PasswordAuthentication yes
    PermitEmptyPasswords no
    
    AllowUsers Alpha Beta
    DenyGroups Alunos
    
    Banner /tmp/ssh_baner
    Cliente SSH
    Existem muitos clientes para o protocolo ssh para diversos sistemas operacionais, mas aqui a ênfase está para o cliente ssh, configurado pelo arquivo /etc/ssh/ssh_config.

    O ssh obtém as configurações de acordo com a seguinte ordem:

    1. linha de comando;
    2. configuração do usuário (~/.ssh/config);
    3. configuração do sistema, tratada aqui;


    Este arquivo de configuração é similar ao arquivo do servidor, mas com suas próprias opções:

    * Host - define as configurações para o host específico, o padrão é *, todos hosts;
    * RhostsRSAAuthentication - autenticação via RSA, para SSH1;
    * HostbasedAuthentication - o mesmo que RhostsRSAAuthentication, mas para SSH2;
    * PasswordAuthentication - autenticação através de senha;
    * CheckHostIP - checa o IP do hosts no arquivo hosts conhecidos;
    * StrictHostKeyChecking - checa as chaves públicas dos hosts conhecidos, dando a opção de questionar, ask, checar ou não a chave, o padrão é ask;
    * IdentityFile - especifica os arquivos utilizados para autenticação, ~/.ssh/identity para SSH1 e ~/.ssh/id_rsa e id_dsa para SSH2;
    * Port - especifica a porta de conexão do servidor, o padrão é 22;
    * Protocol - especifica o protocolo utilizado, 1 para SSH1 e 2 para SSH2;


    Como para no sshd_config, no ssh_config existem muitas outras opções, que estão explicadas no manual do ssh_config (5).

    Existem muitos outros clientes que podem ser utilizados para conexão em um servidor ssh, como o putty para Windows, o FiSSH, o Fsh, o Gnome SSH Client, Ixplorer - que faz transferência de arquivos utilizando ssh, MacSSH e muitos outros.

    ssh-keygen
    Comando utilizado para geração, manutenção e conversão de chave aleatória para o protocolo ssh. ssh-keygen pode criar chaves RSA para o protocolo versão 1 (SSH1) e DSA ou RSA para a versão 2 (SSH2).

    Tanto o administrador quanto os usuários podem gerar suas chaves. As chaves do usuário ficam guardadas nos arquivos:

    * ~/.ssh/identity, para protocolo 1 ou;
    * ~/.ssh/id_dsa e ~/.ssh/id_rsa, para protocolo 2.


    E as chaves do administrador ficam guardadas em /etc/ssh.

    Para as chaves privadas criadas, é criada uma chave pública de mesmo nome mais sufixo .pub, que fica guardada na mesma pasta da chave privada.

    Utilização
    Após a configuração do daemon sshd e do cliente ssh em cada host e da criação das chaves, o serviço está pronto para ser utilizado.

    Existem muitas formas de se conectar a um host remoto via ssh, utilizando o ssh, as mais comuns são:

    $ ssh <host>
    $ ssh -l <usuário> <host>
    $ ssh <usuário>@<host>


    A primeira vez que um host se conecta a outro através de ssh, o cliente recebe a chave pública do servidor e pede confirmação da conexão. Logo depois o servidor é adicionado à tabela de hosts conhecidos e é pedida a senha do usuário, para estabelecer a conexão.

    Nas próximas conexões só será solicitada a senha do usuário, pois a chave pública do host remoto já está guardada na máquina local.

    O comando ssh também pode ser utilizado para execução de comandos em hosts remotos, sem ficar logado no host por muito tempo. Com ver o conteúdo de algum diretório de um outro host:

    $ ssh <host> ls <caminho do diretório>

    Outro programa interessante que funciona sobre o protocolo SSH é o scp (secure copy), que permite a cópia de arquivos de forma segura, utilizando a mesma autenticação do ssh. A sintaxe básica deste programa é:

    Para enviar um arquivo:

    $ scp <arquivo a ser copiado> <login>@<host remoto>:/<diretório de destino>

    Para requisitar um arquivo:

    $ scp <login>@<host remoto>:/<arquivo a ser copiado> <diretório de destino>


    Fonte: vivaoLinux
    Postado Por: RedDeviL


  • Font Size
    #2
    criando otimos topico em irir
    -------------------------------------------------------------------------------------------






    Comment


    • Font Size
      #3
      muito bom, ainda lendo ;D

      Comment

      X
      Working...
      X