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