FreeBSD: autenticação SSH por Chave Pública

Meu servidor doméstico está executando o FreeBSD 10.1-RELEASE e como é uma máquina antiga e de “baixo custo” não possui interface gráfica instalada, mouse e nem mesmo monitor. As demais máquinas na minha casa rodam Windows. Então utilizo os softwares livres PuTTY (para acessar o servidor e efetuar tarefas administrativas) ou o WinSCP (para transferir arquivos).

Um dos principais problemas ao se liberar no firewall a porta SSH (22) de um servidor são os robôs que escaneiam a internet em busca destes servidores com o intuito de executar ataques de força bruta (brute force). Uma maneira fácil e eficaz de impedir que o ataque tenha sucesso em acessar este servidor é implementar a autenticação por chave pública no serviço de sshd do FreeBSD.

A configuração da autenticação SSH por chave pública no FreeBSD que será demonstrada a seguir pressupõe a seguinte estrutura:

  1. Uma máquina com FreeBSD instalado e com o serviço sshd habilitado e iniciado;
  2. Uma máquina cliente rodando o sistema operacional Windows e com os softwares PuTTY e PuTTYgen “instalados”;
  3. Ambas as máquinas conseguem se comunicar pela rede.

Caso precise baixar os softwares necessários, basta faze-lo acessando o endereço:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Os passos para configurar a autenticação por chave pública no SSH do FreeBSD são:

1. Criar um par de chaves (pública e privada) no seu computador local, acessando o PuTTYgen, conforme mostrado nas figuras abaixo:

Clique no botão “Generate”. Você deverá mover o mouse sobre a área livre até a barra de progresso (verde) ser completamente preenchida.

02.PuTTYgen

Após isso, o programa irá gerar a chave pública e mostra-la.

03.PuTTYgen

No campo “Key comment” pode-se colocar uma descrição para a chave. Assim fica mais fácil lembrar quando, para que ou onde essa chave foi criada.

Digite uma frase (será utilizada para validar sua chave ao logar no servidor) no campo “Key passphrase” e repita a mesma frase no campo “Confirm passphrase”. A documentação do PuTTY recomenda uma frase de 10 a 30 caracteres com espaços, letras maiúsculas e minúsculas, números e caracteres especiais, por exemplo: “Não (deve chover hoje)^maio.”

Em hipótese nenhuma você deve deixar esses campos em branco.

04.PuTTYgen

Selecione todo o texto da campo “Public key for pasting into OpenSSH authorized_keys file”. Clique com o botão direito do mouse e selecione “Copiar”. Depois clique no botão “Save private key” para salvar sua chave privada em um arquivo no seu computador local.

05.PuTTYgen

A chave privada deve ser mantida em segredo. O conteúdo desse arquivo é criptografado utilizando a “Key passphrase” e você deve escolher um local que só você tenha acesso para guardar este arquivo.

Pode-se recuperar a chave pública utilizando o botão “Load” do aplicativo PuTTYgen, a chave privada e a “Key passphrase”. Entretanto não é possível recuperar a chave privada utilizando a chave pública.

2. Instalando a chave pública no servidor remoto.

Cole a chave pública copiada anteriormente no arquivo authorized_keys que está localizado no diretório .ssh o seu usuário no servidor remoto. Caso o diretório ou o arquivo não exita, basta cria-los.

01.PuTTY-RSA

02.PuTTY-RSA

A chave pública não é instalada em nenhum host remoto.

3. Configurando o PuTTY para utilizar o novo método de autenticação:

Configure o PuTTY para utilizar a chave pública informando o arquivo no campo “Private key file for authentication”, conforme a figura abixo:

03.PuTTY-RSA

Caso consiga conectar com sucesso, proceda para o próximo passo…

4. Removendo a autenticação por senha (padrão) do servidor FreeBSD:

04.PuTTY-RSA

Edite o arquivo de configuração do serviço ssh (/etc/ssh/sshd_config) utilizando o usuário root.

Remova o comentário (#) do início das linhas PasswordAuthentication e ChallengeResponseAuthentication.

05.PuTTY-RSA

Coloque o parâmetro no no final das linhas, caso esteja setado yes. As linhas deve ficar assim:

PasswordAuthentication no

ChallengeResponseAuthentication no

Salve o arquivo e saia do editor.

Reinicie o serviço do SSH usando o comando: service sshd restart

Com os passos descritos acima, seu servidor estará bem mais seguro à possíveis ataques por brute force.

Para olhar o log de acessos, basta abrir o arquivo /var/log/auth.log com o editor de sua preferência, ou utilizando os comandos less, tail etc.

Abaixo temos um exemplo de possível ataque por força bruta:

00.PuTTY-RSA-ExemploAtaque

Deixe uma resposta