Voltar ao blog

Configurando o seu servidor Linux para usar autenticação baseada em chaves SSH

Configurando o seu servidor Linux para usar autenticação baseada em chaves SSH

SSH em um Servidor Linux

SSH, também conhecido como secure shell, é um protocolo que pode ser usado para se conectar e se comunicar com um servidor. Você pode conectar-se ao seu servidor Linux para uma sessão de terminal usando este protocolo criptografado. Se você estiver usando um servidor OpenSSH, existem principalmente duas maneiras diferentes de realizar o processo de autenticação. A primeira é a autenticação padrão baseada em senha. Aqui, você simplesmente usa suas credenciais de nome de usuário e senha para obter acesso à sua conta. A outra maneira é configurar seu servidor Linux para autenticação baseada em chave SSH.

Neste guia, focaremos em como você pode configurar seu servidor Linux para usar chaves SSH como o principal meio de autenticação. Também discutiremos por que as chaves SSH são frequentemente preferidas em relação ao mecanismo usual de proteção por senha.

O que são Chaves SSH?

As chaves SSH são semelhantes às credenciais que você usaria para fazer login em sua conta no servidor. Em vez de inserir seu nome de usuário e senha, você usa o par de chaves SSH, que também é uma credencial de acesso. Embora as chaves sejam criptográficas, você deve tratá-las como credenciais de autenticação, pois esse é o propósito que servem.

Uma chave SSH típica tem duas partes: uma chave autorizada e uma chave de identidade. A chave autorizada é a chave pública que funciona em combinação com sua chave de identidade privada para lhe dar acesso à conta. A chave pública está localizada no servidor remoto no qual você deseja fazer login com SSH e permanece no arquivo ~/.ssh/authorized_keys associado à sua conta de usuário. As chaves de identidade servem para verificar sua identidade como o usuário correto para garantir que apenas pessoal autorizado possa acessar a conta em questão. Coletivamente, essas chaves são chamadas de chaves de usuário, pois autenticam a identidade do usuário. Assim que o servidor for capaz de verificar ambas as chaves, uma sessão de shell é iniciada para executar seus comandos.

Você também tem chaves de host e chaves de sessão. O protocolo autentica o computador local, sistema ou servidor usando a chave de host. As chaves de sessão ajudam a criptografar o fluxo de dados através da conexão. Isso torna sua sessão e a atividade correspondente muito mais seguras.

Chaves SSH em vez de Proteção por Senha

A principal razão pela qual a autenticação baseada em chave SSH é preferível à proteção por senha é que esta última pode deixá-lo vulnerável a ataques cibernéticos. A maioria das pessoas não usa senhas extremamente complexas para que possam se lembrar delas quando precisarem fazer login. Como resultado, isso cria uma área de vulnerabilidade. Muitos invasores usam força bruta para quebrar a senha relativamente simples e invadir a conta. Isso se tornou particularmente fácil hoje em dia devido à automação e às tecnologias avançadas de hacking.

As chaves SSH, por outro lado, oferecem uma maneira muito mais segura de obter acesso à sua conta. Como mencionamos antes, este método usa uma chave pública e uma chave privada para autenticar a identidade de um cliente. Embora você possa compartilhar a chave pública com qualquer pessoa, você precisa manter a chave privada em segredo. Quando emparelhadas, a chave pública descriptografa a privada para autenticar sua identidade. Além disso, você pode adicionar uma camada de proteção adicionando uma frase secreta sobre o par de chaves. Falaremos mais sobre a frase secreta mais adiante no guia. No entanto, mesmo sem a frase secreta, sua chave SSH privada é mantida extremamente segura em seu computador local. A rede nunca é capaz de acessar diretamente a chave, que está localizada em um diretório restrito e é complementada com permissões restritas.

Gerando Chaves SSH

Para gerar seu par de chaves SSH, você precisa navegar pelo conjunto de ferramentas do OpenSSH e localizar o ssh-keygen. Esta é uma ferramenta utilitária especial que permite gerar um par de chaves SSH com cerca de 2048 bits. Comece executando este comando:

Isso exibirá a seguinte mensagem:

A mensagem gerará uma chave privada chamada id_rsa e uma chave pública chamada id_rsa.pub. Neste ponto, você pode escolher onde deseja localizar a chave. Recomendamos manter o local padrão pressionando Enter. Manter o local padrão garante que o servidor localizará e verificará automaticamente as chaves sempre que você fizer login usando esse sistema. O local padrão é o diretório ~/.ssh no diretório home. Se preferir selecionar um local diferente, digite o caminho.

Sobrescrevendo Chaves SSH Mais Antigas

É importante notar que você só pode ter um par de chaves SSH no seu sistema por vez. Isso significa que, se você já gerou e salvou um par de chaves anteriormente no sistema, verá a seguinte mensagem:

Para continuar criando e salvando seu novo par de chaves SSH, você deve excluir o existente. Lembre-se: se você sobrescrever a chave já salva no disco, não poderá mais usá-la para fins de autenticação. Este é um processo irreversível, portanto, certifique-se de que tem absoluta certeza de que deseja sobrescrever o par de chaves antigo.

Definindo uma Passphrase

Depois de configurar as chaves no diretório, será perguntado se você deseja fornecer uma passphrase:

A passphrase é opcional - você pode optar por ignorá-la. No entanto, ela adiciona uma camada extra de segurança para sua chave privada, criptografando-a no disco. Se você optar por usar uma passphrase, terá que digitá-la corretamente sempre que tentar fazer login usando este par de chaves SSH:

Finalmente, você deve agora ter suas chaves SSH que pode usar para autenticar o cliente.

Incorporando sua chave SSH na conta do seu servidor

Antes de usar as chaves para autenticação, você precisa incorporar a chave pública no servidor Linux remoto. A seguir, mostraremos como fazer isso ao criar seu servidor CloudSigma. Primeiro, você precisa encontrar sua chave SSH pública para poder copiá-la e colá-la. Se você usou o método acima para gerar seu par de chaves SSH, poderá encontrar a chave pública digitando o seguinte:

Isso fará com que a chave SSH pública apareça assim:

Copie este valor para usar mais tarde. Ao criar um servidor com a CloudSigma, você tem a opção de adicionar uma chave SSH após selecionar o tamanho do servidor e a imagem do SO:

single server creation

Clique em Adicionar e cole o que você copiou para incorporar a chave SSH no seu servidor. Como resultado, toda vez que você inicializar seu servidor, ele já terá a chave SSH injetada.

Copiando uma Chave Pública para um Servidor Existente

Embora o método acima funcione para quando você está criando um novo servidor, é possível incorporar uma chave SSH em um servidor existente? A resposta é sim e existem várias maneiras de fazer isso, dependendo de quais ferramentas você tem à sua disposição.

Usando o SSH-Copy-ID

Esta é a maneira mais simples e fácil de copiar uma chave pública. Tudo o que você precisa é da ferramenta utilitária ssh-copy-id que você encontrará no pacote OpenSSH padrão. Mas antes de colocar este método em prática, certifique-se de que a autenticação baseada em senha está ativada no seu servidor. Para copiar a chave, você aplicará a sintaxe do ssh-copy-id e, em seguida, inserirá o host remoto ao qual deseja se conectar. Você também terá que especificar a conta à qual está se conectando. Você precisa ter acesso baseado em senha à conta, para que sua chave seja copiada no local correto. O comando deve ser parecido com este:

Isso pode resultar em uma mensagem como a seguinte aparecendo na sua tela:

Isso normalmente acontece se for a sua primeira vez se conectando a esse host remoto específico. Significa simplesmente que o computador não conseguiu reconhecer o host. Tudo o que você precisa fazer é digitar ‘yes’ e pressionar Enter. Depois de fazer isso, a ferramenta escaneará a conta para encontrar sua chave pública. Ao localizá-la, ela solicitará que você insira a senha da sua conta:

Em seguida, você pode inserir sua senha. Quando estiver conectado à sua conta, a ferramenta copiará o conteúdo da chave ~/.ssh/id_rsa.pub e o colará em authorized_keys no diretório ~/.ssh na sua conta remota. Você verá a seguinte mensagem:

Isso significa que você copiou com sucesso sua chave pública para o seu servidor remoto existente.

Usando SSH

Este é um método bastante convencional para copiar sua chave pública para um servidor. É preferível usá-lo se você não tiver acesso à ferramenta ssh-copy-id. Novamente, você precisa ter acesso baseado em senha à sua conta. O que você está fazendo essencialmente é colocar o conteúdo da chave pública como uma saída no seu computador e transferi-lo para o servidor remoto através da conexão SSH estabelecida entre eles. El comando que você usará para essa finalidade deve ser o seguinte:

Como você pode ver, especificamos que a chave deve ser colocada no arquivo authorized_keys dentro do diretório ~/.ssh no servidor. O uso do símbolo >> também garante que estamos adicionando chaves em vez de substituí-las. Ao executar o comando, você poderá ver esta mensagem:

Semelhante à mensagem anterior, isso significa que o computador não reconheceu o host remoto. Digite ‘yes’ e pressione Enter para continuar. Agora, você inserirá a senha da conta:

Assim que a senha for verificada, a chave será copiada para um arquivo na sua conta de usuário, conforme especificado.

Manualmente

Caso você não tenha acesso baseado em senha à sua conta no servidor remoto, poderá copiar a chave pública manualmente. O objetivo é obter o valor do arquivo id_rsa.pub para o arquivo ~/.ssh/authorized_keys no seu dispositivo remoto. Como já sabemos, podemos visualizar o valor da chave id_rsa.pub usando este comando:

O conteúdo da sua chave pública SSH aparecerá assim:

Em seguida, você precisa obter acesso à sua conta no host remoto por qualquer meio disponível. Quando estiver logado, verifique se o diretório ~/.ssh está presente. Caso contrário, você pode executar o seguinte comando para criá-lo:

Agora, você pode usar este comando para adicionar o conteúdo do arquivo id_rsa.pub ao arquivo authorized_keys neste diretório ~/.ssh no servidor remoto:

Em vez de digitar ‘public_key_string‘ neste comando, você terá que inserir o conteúdo da chave que extraiu ao executar o comando cat ~/.ssh/id_rsa.pub anteriormente.

Autenticação com sua chave SSH

Agora, você pode acessar facilmente sua conta usando apenas suas chaves SSH. Isso significa que você não precisa mais de sua senha para obter acesso à sua conta do servidor. Você usará as credenciais que normalmente usa para fins de login:

Isso pode fazer com que a seguinte mensagem apareça:

Não se preocupe se vir esta mensagem. Isso significa simplesmente que o sistema local não consegue reconhecer o host remoto. Isso geralmente acontece se você estiver se conectando ao host pela primeira vez. Tudo o que você precisa fazer é digitar ‘yes’ e pressionar Enter. Voltando a algumas das etapas anteriores, se você aplicou uma senha (passphrase), é aqui que terá de inseri-la. Se não o fez, você entrará na sua conta imediatamente após a autenticação das chaves SSH. Isso iniciará a abertura de uma nova sessão de shell por meio de sua conta atual no computador local.

Como desativar a autenticação por senha no seu servidor?

Agora que você sabe como configurar suas chaves SSH, precisa desativar a autenticação por senha. Mesmo que consiga usar as chaves SSH para autenticação, você ainda estará vulnerável a ataques de força bruta se o processo de autenticação por senha estiver ativo. Antes de desativar o mecanismo de autenticação por senha, certifique-se de que a configuração da autenticação baseada em chave SSH seja da conta root no servidor ou que a conta configurada tenha acesso sudo. O motivo para confirmar isso é garantir que você mantenha o acesso administrativo à conta mesmo quando as senhas estiverem desativadas. Agora você pode usar esta chave SSH para fazer login na conta do seu servidor. O próximo passo é abrir o arquivo de configuração do daemon SSH:

Aqui, você precisa procurar pela seguinte diretiva:

Você precisa descomentar esta linha e alterar o valor para ‘no’, como a seguir:

Fazer isso desativará a autenticação baseada em senha. Basta salvar o arquivo e fechá-lo quando terminar. Por fim, você precisa reiniciar o dispositivo para aplicar as alterações. Se você for usuário de um dispositivo Ubuntu ou Debian, também poderá usar o seguinte comando para desativar o login baseado em senha:

Para garantir que o seu daemon, ou sshd, permita apenas a autenticação baseada em SSH no servidor em máquinas CentOS ou Fedora, use o comando:

Conclusão

Depois de concluir todas essas etapas, você deverá ter a autenticação baseada em chave SSH configurada e em execução no seu servidor. Agora, você pode ter a certeza de que seus servidores estão seguros e protegidos!

Boa computação!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev é um designer criativo na CloudSigma, focado na construção de uma identidade empresarial consistente por meio de canais de marketing tradicionais e inovadores. Ele é hábil em combinar a visão artística com o marketing estratégico para criar narrativas de marca impactantes.

Comentários

Nenhum comentário ainda. Seja o primeiro.