terça-feira, 6 de maio de 2008

Entendo Security SHell: SSH e OpenSSH

O Security SHell (ou SSH) é uma ferramenta de acesso remoto largamente utilizada nos sistemas Unix. Sua implementação nos sitemas GNU/Linux é chamado OpenSSH.

O OpenSSH não é a única opção de acesso remoto disponível para sistemas NIX, podemos citar outras como telnet, rlogin rcp etc, porém apenas o OpenSSH trabalha de modo seguro, utilizando chaves o sistemas de chaves pública x chave privada de tamanho variável, podendo ser tanto RSA, protocolo primário ou DSA. Além disso o procolo trabalha com pacotes TCP e sua conexão normalmente ocorre na porta 22.

O pacote do OpenSSH é composto de diversos programas, que são:

sshd, o daemon responsável por gerenciar as conexões ao sistema.

ssh, programa cliente para conexões a outros sistemas.

scp, programa que permite a cópia de arquivos diretamente entre um sistema e outro.

sftp-server, servidor de ftp seguro

sftp, cliente de ftp seguro

ssh-keygen, programa utilizado para gerar chaves de acesso em cliente. (ver abaixo sobre arquivo authorized_keys)

ssh-agent, agente de autenticação;

ssh-add, adiciona chaves de autenticação ao programa de autenticação;

ssh-keyscan, busca chaves públicas em um determinado servidor;

ssh-keysign, assistente para criação de autenticação baseada em hosts;

Os arquivos de configuração do servidor ficam salvos em /etc/ssh e o referente ao cliente podem ficar tanto nesse diretório quanto em ~/.ssh. No caso dos arquivos presentes em etc, salvo quando mencionado o contrário, os arquivos pertencerão ao root e possuirão permissão 644. Enfim, os arquivos são:

/etc/ssh/sshd_config, arquivo de configuração do daemon do ssh;

/etc/ssh/ssh_config, arquio de configuração do cliente ssh;

~/.ssh/config, arquivo de configuração pessoal dos clientes de ssh de cada usuário.;

/etc/ssh_know_hosts, chave pública de servidores válidas para todos os usuários;

~/.ssh/know_hosts, armazena as chaves públicas válidas para um determinado usuário;

~/.ssh/authorized_keys, arquivo opcional que evita a digitação senha em determinados servidores, nele são armazenadas as senhas geradas pelo ssh-keygen;

/etc/ssh/ssh_host_dsa_key, arquivo onde fica armazenada a chave DSA privada do servidor, somente o root possui acesso a esse arquivo (permissão 600);

/etc/ssh/ssh_host_rsa_key, arquivo onde fica armazenada a chave RSA privada do servidor, somente o root possui acesso a esse arquivo (permissão 600);

/etc/ssh/ssh_host_dsa_key.pub, arquivo onde fica armazenada a chave DSA pública do servidor;

/etc/ssh/ssh_host_rsa_key.pub, arquivo onde fica armazenada a chave RSA pública do servidor;

Assim como outros serviços de rede, o acesso via ssh pode ser permitido ou negado através de TCPWrappers e o login a usuários não root pode ser negado pela existência do arquivo /etc/nologin.

Fontes de Pesquisa:

SIQUEIRA, Luciano Antonio. Certificação LPI-1. São Paulo: Linux New Media, 2007.

http://www.openssh.org/manual.html

http://focalinux.cipsga.org.br/guia/avancado/ch-s-ssh.html