Como desabilitar autenticação por senha e usar chaves SSH em seu VPS

Aumente a segurança do seu acesso SSH

Uma boa medida para aumentar a segurança de seu VPS é deixar de acessar o SSH via login e passar a utilizar chaves privadas/públicas para se logar usando o PuTTY. Com isso é possível desabilitar o acesso via login e dessa forma ataques brute-force não funcionarão mais. Esse guia é destinado a quem pretende acessar seu VPS através de SSH a partir de um sistema Windows, e é baseado no tutorial encontrado na HowtoForge.

Atenção: prossiga apenas se tiver certeza do que está fazendo, não nos responsabilizamos por qualquer eventualidade.

1 – Baixe PuTTY e PuTTYgen

Primeiramente é preciso baixar o PuTTY e PuTTYgen para seu sistema Windows. Salve os executáveis onde preferir e eles já estarão prontos para rodar, já que são aplicações portáveis e não necessitam de instalação.

Você pode encontrar os executáveis na página de download do PuTTY, ou clicar diretamente nos links abaixo:

http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

http://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe

2 – Crie um perfil no PuTTY para o acesso ao seu servidor

No PuTTY é possível salvar os dados de conexão ao seu servidor em perfis, para que não seja necessário digitar os mesmos dados toda vez que você for se conectar.

Abra o PuTTY, na categoria Session, preencha o campo Host name (or ip address) com o ip principal do seu servidor (no exemplo colocaremos o IP fictício 192.168.0.100) para o campo Port, coloque 22, que é o padrão para conexões SSH:

Criando o perfil do seu servidor

Então clique na categoria Connection e vá até a subseção Data; preencha o username com root:

Preenchendo o login com o seu usuário

Volte para Session, escolha um nome para o perfil dessa conexão, o preencha em Saved Session e clique em Save:

Salvando o perfil

Agora você pode sempre se conectar ao seu servidor ao clicar em Open.

3 – Conecte-se ao seu SSH

Se for a primeira vez que você se conecta ao seu servidor, um aviso de segurança aparecerá. Como o PuTTY não sabe ainda a chave do servidor, é seguro clicar em yes.

Como o usuário root já foi preenchido no perfil, não será necessário digitá-lo no ato do login. Só a senha precisará ser digitada:

Prompt de login do SSH

Essa é a forma comum de se logar ao seu servidor via SSH, usando login e senha. Dessa forma, se a senha for fácil e o servidor sofrer um ataque de força bruta para descobrir a senha, isso pode ser perigoso. Vamos resolver isso a partir daqui.

4 – Crie o par de chaves pública e privada

Para gerar o par de chaves pública e privada, o PuTTYgen é necessário. Abra o executável e selecione SSH-2 RSA como tipo de chave a ser gerada e preencha o campo Number of bits in a generated key com o valor 1024. Clique em Generate:

Interface do PuTTYgen

Mexa o cursor do mouse da forma mais aleatória possível dentro da área em branco da janela, para ajudar na entropia:

Gerando as chaves pública e privada

Após o par de chaves pública e privada ter sido gerado, você poderá adicionar um comentário no campo Key comment. Especifique uma frase de segurança e digite-a novamente no campo Confirm passphrase. Essa frase será necessária para se logar via SSH com a sua nova chave. Após isso clique em Save publick key e salve-a em um local seguro do seu computador. Você pode escolher qualquer nome de arquivo e extensão, apenas certifique-se de que o nome o lembrará para que serve aquela chave:

Determinando a frase de segurança e o comentário da chave

Então clique em Save private key. Você pode salvar no mesmo local que a chave pública (um local que só você tenha acesso e que não a perca, pois se perder as chaves, não poderá mais se logar). Dessa vez você também poderá escolher qualquer nome de arquivo, mas a extensão deverá ser .ppk:

Salvando a chave privada em arquivo

5 – Salve a chave pública no seu servidor

Logue-se no seu SSH (se tiver fechado sua sessão anterior), ainda com o usuário e senha, e cole a chave pública no arquivo ~/.ssh/authorized_keys2 (em uma linha única) assim:

mkdir ~/.ssh
chmod 700 ~/.ssh

vi ~/.ssh/authorized_keys2

ssh-rsa AAAAB3NzaC1yc2[…]oOcyCqKVdXkOlm9E= youremail@example.com

O arquivo deve poder ser lido/escrito apenas por seu usuário, então use o comando:

chmod 600 ~/.ssh/authorized_keys2

6 – Salve a chave privada no perfil de seu servidor no PuTTY

Abra o PuTTY novamente e carregue o perfil salvo do seu servidor. Vá para a categoria Connection -> SSH -> Auth and click on Browse:

Salvando a chave privada no perfil do PuTTY

Localize o arquivo da sua chave privada e clique em abrir:

Localizando o arquivo da chave privada

Volte para Session e clique em Save. E agora a chave privada está associada ao perfil do servidor.

7 – Desabilite os logins por usuário e senha

Dessa forma, você pode agora logar tanto com seu par de chaves privada/pública quanto com o usuário/senha. Então se alguém não tiver a chave privada, o servidor vai pedir pelo usuário e senha. Para aumentar a segurança, precisamos desabilitar os logins por usuário/senha (mas só faça isso depois que se certificar de que o login por chaves está funcionando, pois se você não tiver outra forma de se logar, então você terá problemas).

Para desabilitar o login por usuário/senha, é preciso modificar o arquivo de configuração sshd. Em sistemas Debian/Ubuntu, é /etc/ssh/sshd_config. Mude o Protocol para 2 (1 não deve ser usado pois não é seguro), PasswordAuthentication para no, e UsePAM para no (ou comente a linha UsePAM), por exemplo:

vi /etc/ssh/sshd_config

[…]
Protocol 2
PasswordAuthentication no
UsePAM no

[…]

Então reinicie o sshd. No Debian/Ubuntu, você pode fazer assim:

/etc/init.d/ssh restart

Agora se você iniciar uma conexão PuTTY sem uma chave privada, você não conseguirá mais se logar.