Autenticação SSH por certificados

O ssh é a forma mais segura de acessar um servidor remotamente via terminal. Uma ressalva importante ao ssh é que ele usa senha, e como vimos anteriormente, é uma forma de segurança baseada no conhecimento, o que permite que alguém que esteja observando no momento de entrar com a senha tenha este conhecimento. Também é possivel usar mecanismos para quebra de senha, como visto no exercício anterior.

Uma opção fácil para resolver este problema é usar um par de chaves para autenticação. O processo é simple, primeiro cria o par de chaves, depois basta instalar no servidor a chave publica e guardar a chave privada na sua maquina ou outro suporte e que é protegida por uma senha (que só serve para tornar a chave utilizável). Elas só funcionam juntas (senha + chave privada)

Para gerar o par de chaves, no cliente execute o comando na conta do usuário:

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/USER/.ssh/id_rsa):
Created directory '/home/USER/.ssh'.
Enter passphrase (empty for no passphrase): ********
Enter same passphrase again: ********
Your identification has been saved in /home/USER/.ssh/id_rsa.
Your public key has been saved in /home/USER/.ssh/id_rsa.pub.
The key fingerprint is:
ff:26:36:f6:87:67:9f:7c:9a:a8:0a:2b:21:a1:8b:a4 USER@HOST

A passphrase pode ser uma senha comum (8 ou mais caracteres ou uma frase complexa sem limite de tamanho). A passphrase é um componente da chave de encriptação e necessária para o funcionamento.

O comando cria os arquivos .ssh/id_rsa e .ssh/id_rsa.pub dentro do seu diretório local,e eles são as respectivamente a chave privada e a chave pública.

Agora que as chaves estão criadas basta instalar no servidor a chave pública com o comando:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub USER@servidor

Como o nome sugere, o comando ssh-copy-id copia o seu identificador que é a chave pública, instalando-a no servidor.

Ao usá-lo, substitua o USER pelo seu login de usuário e o servidor pelo endereço do servidor.

Este comando usa uma conexão SFTP, para enviar e instalar a chave pública (o arquivo .ssh/id_rsa.pub) no servidor.

A partir deste momento, ao invés de pedir a senha para o seu usuário, o servidor envia um desafio encriptado usando a sua chave pública. Para respondê-lo, o cliente SSH na sua máquina precisa usar a chave privada, que por sua vez precisa ser aberta usando a passphrase.

  • Mesmo que alguém consiga roubar sua chave privada(id_rsa.pub), não conseguirá usa-la sem conhecer a passphrase e o mesmo acontece se tiver somente a passphrase.

Com tudo funcionando, é possivel desativar a possibilidade de fazer logins remoto usando senha. E somente quem tiver uma chave no servidor poderá se logar no mesmo.

Para desativar o uso de senha edite o arquivo “/etc/ssh/sshd_config” do servidor, e mude para no as opções:

</code> PasswordAuthentication no UsePAM no </code>

A opção PasswordAutentication no não permite o uso de senhas e a UsePAM no não permite outra forma de autenticação diferente das chaves.

Reinicie o servidor SSH para que as alterações sejam efetivadas.

# /etc/init.d/ssh restart