Se você trabalha remotamente em servidores Linux (ou containers), você pode assumir que a segurança é inerente. Infelizmente, isso é um equívoco. Embora o Secure Shell seja mais seguro do que soluções mais antigas como o Telnet, ainda é necessário tomar medidas adicionais para garantir a segurança de seus sistemas e dados.

Por padrão, o Secure Shell opera com base em um nome de usuário e senha. Portanto, se você usa o comando ssh [email protected], será solicitada a senha do usuário “ralph” no servidor “example.com”.

No entanto, existe uma maneira melhor e menos vulnerável de autenticação no servidor. Chama-se autenticação de chave SSH.

A autenticação de chave SSH funciona com base em um par de chaves geradas em seu computador local. O par de chaves consiste em uma chave privada e uma chave pública. A chave privada permanece segura em seu computador local, enquanto a chave pública é enviada para o servidor ao qual você deseja acessar remotamente. Quando as chaves estão configuradas, toda vez que você fizer login no servidor, as chaves serão reconhecidas para ver se correspondem. Se as chaves corresponderem, você ganhará acesso ao servidor. Se as chaves não corresponderem, você está sem sorte.

Essa solução é significativamente mais segura do que a autenticação tradicional de nome de usuário e senha e deve ser usada em qualquer servidor Linux que você utilize.

Vou mostrar como implementar a autenticação de chave SSH.

O que você vai precisar?

Para fazer esta demonstração, você precisará de pelo menos duas máquinas Linux – uma local e outra remota. Como tudo é feito via linha de comando, você não precisa configurar um ambiente gráfico. Claro, você precisará do endereço IP ou domínio do servidor remoto, e a máquina local deve ser capaz de acessar remotamente o servidor remoto.

Gerar um par de chaves SSH

A primeira coisa que você precisa fazer é gerar o seu par de chaves SSH. Faça isso em seu computador local. Faça login na máquina e crie um par de chaves usando o comando:

ssh-keygen

Será solicitado onde salvar a chave (o local padrão é ~/.ssh) e você precisará inserir e confirmar uma senha para o par de chaves. Certifique-se de usar uma senha forte/única.

O comando acima irá gerar dois arquivos: id_rsa (a chave privada) e id_rsa.pub (a chave pública).

Copie a chave para a máquina remota

O próximo passo é copiar a chave pública para a máquina remota. Felizmente, o SSH possui um recurso integrado que facilita essa tarefa. Para copiar a chave, basta executar o seguinte comando:

ssh-copy-id USUÁRIO@SERVIDOR

Onde USUÁRIO é o seu nome de usuário do Linux e SERVIDOR é o endereço IP ou domínio do servidor remoto. Será solicitada a senha SSH do usuário remoto. Após a autenticação bem-sucedida, a chave pública será salva no diretório ~/.ssh no servidor remoto.

Você pode então testar a autenticação por chave SSH tentando fazer login na máquina remota novamente usando o comando:

ssh USUÁRIO@SERVIDOR

Onde USUÁRIO é o nome de usuário e SERVIDOR é o endereço IP ou domínio do servidor remoto. Desta vez, será solicitada a senha da chave SSH (não a senha do usuário).

Parabéns, a autenticação por chave SSH está funcionando!

Mas podemos melhorar ainda mais a segurança.

Configurar o servidor SSH para aumentar a segurança

Antes de prosseguir com esta etapa, certifique-se de ter criado pares de chaves e copiado a chave pública para o servidor em todas as máquinas clientes que precisam de acesso ao servidor remoto. Se você não fizer isso, você descobrirá que essas máquinas não terão a capacidade de fazer login (mesmo com contas de usuário corretas). A única maneira de contornar esse problema seria copiar manualmente o conteúdo da chave pública SSH da máquina cliente para o arquivo ~/.ssh/authorized_keys no servidor.

Nosso próximo passo é habilitar a autenticação por chave pública e desabilitar a autenticação por senha (no servidor remoto).

Abra o arquivo de configuração do daemon SSH (no servidor remoto) usando o comando:

sudo nano /etc/ssh/sshd_config

Encontre a linha:

# PubkeyAuthentication yes

Altere essa linha para:

PubkeyAuthentication yes

Em seguida, encontre a linha:

# PasswordAuthentication yes

Altere essa linha para:

PasswordAuthentication no

Salve e feche o arquivo.

Reinicie o SSH usando o comando:

sudo systemctl restart sshd

Antes de encerrar a conexão atual, abra uma nova janela do terminal (na máquina em que você copiou a chave pública para o servidor) e tente fazer login no SSH novamente. Se você tiver acesso concedido, você provou que a única forma de fazer login por SSH é com a autenticação por chave.

Agora, qualquer tentativa de fazer login no seu servidor Linux sem chaves correspondentes será rejeitada.

FAQ

1. Quais soluções fornecem segurança para servidores?
Soluções de autenticação por chave SSH.

2. Como funciona a autenticação por chave SSH?
A autenticação por chave SSH é baseada em um par de chaves: privada e pública. A chave privada permanece no computador local, enquanto a chave pública é enviada para o servidor ao qual você deseja acessar. As chaves são autenticadas durante o login para verificar se correspondem.

3. Por que a autenticação por chave SSH é mais segura do que a autenticação tradicional de nome de usuário e senha?
A autenticação por chave SSH é mais segura porque não requer a digitação de uma senha durante o login. A chave privada permanece no computador local, tornando mais difícil para pessoas não autorizadas interceptarem.

4. Como gerar um par de chaves SSH?
Você pode gerar um par de chaves SSH no computador local usando o comando “ssh-keygen”.

5. Como copiar a chave pública para uma máquina remota?
Você pode copiar a chave pública para uma máquina remota usando o comando “ssh-copy-id USUÁRIO@SERVIDOR”.

6. Como configurar o servidor SSH para aumentar a segurança?
Para aumentar a segurança do servidor SSH, você precisa habilitar a autenticação por chave pública e desabilitar a autenticação por senha no arquivo de configuração do daemon SSH.

7. Como reiniciar o SSH após fazer alterações na configuração?
Você pode reiniciar o SSH usando o comando “sudo systemctl restart sshd”.

Definições

Secure Shell (SSH) – um protocolo de comunicação seguro para conexões de rede. É frequentemente usado para login remoto em servidores.

Chave Privada – uma chave criptográfica secreta que fica no computador local. É usada para desbloquear dados criptografados.

Chave Pública – uma chave criptográfica que é enviada para o servidor ao qual você deseja acessar. É usada na autenticação por chave SSH.

Autenticação – o processo de verificar a identidade de um usuário ou sistema.

Console – o

The source of the article is from the blog myshopsguide.com