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.