How To Securely Manage Secrets with HashiCorp Vault on Ubuntu 16.04
0

Introdução

SSH, ou shell seguro, é um protocolo criptografado usado para administrar e comunicar com servidores. Ao trabalhar com um servidor Ubuntu, é provável que você passe a maior parte do tempo em uma sessão de terminal, conectado ao seu servidor através do SSH.

Neste guia, vamos focar na configuração de chaves SSH para uma instalação genérica do Ubuntu 18.04. Chaves SSH fornecem uma forma fácil e segura de efetuar login em seu servidor e é recomendado para todos os usuários.

Passo 1 — Criar o Par de Chaves RSA

O primeiro passo é criar um par de chaves na máquina cliente (normalmente o seu computador):

Por padrão o ssh-keygen irá criar um par de chaves RSA de 2048 bits, que é seguro o suficiente para a maioria dos casos (você pode opcionalmente passar o flag -b 4096 para criar uma chave mais extensa de 4096 bits.

Após digitar o comando, você deve ver a seguinte saída:

Output

Producing public/personal rsa key pair. Enter file through which to save lots of the important thing (/sua_pasta_home/.ssh/id_rsa):

Pressione enter para salvar o par de chaves dentro do subdiretório .ssh/ em sua pasta residence, ou especifique um caminho alternativo.

Se você tiver gerado um par de chaves SSH anteriormente, você pode ver o seguinte immediate:

Output

/residence/sua_pasta_home/.ssh/id_rsa already exists. Overwrite (y/n)?

Se você escolher sobrepor a chave no disco, você não poderá autenticar usando a chave anterior mais. Seja bastante cuidadoso quando selecionar sure, uma vez que esse é um processo destrutivo e que não pode ser revertido.

Você deve então ver o seguinte immediate:

Output

Enter passphrase (empty for no passphrase):

Aqui você pode opcionalmente entrar com uma frase de segurança, o que é altamente recomendado. A frase de segurança adiciona uma camada a mais de segurança para prevenir usuários não autorizados de efetuar login. Para aprender mais sobre segurança, consulte nosso tutorial sobre Como Configurar Autenticação SSH Baseada em Chaves em um Servidor Linux.

Então você deve ver a seguinte saída:

Output

Your identification has been saved in /sua_pasta_home/.ssh/id_rsa. Your public key has been saved in /sua_pasta_home/.ssh/id_rsa.pub. The important thing fingerprint is: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 [email protected]_host The important thing's randomart picture is: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+

Agora você tem uma chave pública e uma privda que você poderá utilizar para autenticar. O próximo passo é colocar a chave pública no seu servidor para que você possa usar a autenticação SSH baseada em chaves para eftuar login.

Passo 2 — Copiar a Chave Pública para o Servidor Ubuntu

A forma mais rápida de copiar sua chave pública para o host Ubuntu é utilizar um utilitário chamado ssh-copy-id. Devido à sua simplicidade, este método é altamente recomendado se estiver disponível. Se você não tem o ssh-copy-id disponível em sua máquina cliente, você pode usar um dos dois métodos alternativos fornecidos nessa sessão (copiando by way of SSH baseado em senha, ou copiando manualmente a chave).

Copiando a Chave Pública Usando o ssh-copy-id

A ferramenta ssh-copy-id está incluída por padrão em vários sistemas operacionais, assim você deve tê-lo disponível em seu sistema native. Para este método funcionar, você já deve ter o acesso SSH baseado em senha para o seu servidor.

Para usar o utilitário, você precisa simplesmente especificar o host remoto que você gostaria de se conectar e a conta de usuário a qual você tem acesso SSH por senha. Esta é a conta para a qual a sua chave pública será copiada.

A sintaxe é:

  • ssh-copy-id nome_de_usuário@host_remoto

Você pode ver a segunte mensagem:

Output

The authenticity of host '203.0.113.1 (203.0.113.1)' cannot be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:advert:d6:6d:22:fe. Are you certain you need to proceed connecting (sure/no)? sure

Isto significa que seu computador native não reconhece o host remoto. Isto ocorrerá na primeira vez que você se conectar a um novo host. Digite "yes" e pressione ENTERpara continuar.

Após isso, o utilitário irá escanear sua conta native pela chave id_rsa.pub que criamos mais cedo. Quando ele encontra a chave, ele irá solicitar a você a senha da conta de usuário remota:

Output

/usr/bin/ssh-copy-id: INFO: making an attempt to log in with the brand new key(s), to filter out any which are already put in /usr/bin/ssh-copy-id: INFO: 1 key(s) stay to be put in -- in case you are prompted now it's to put in the brand new keys nome_de_usuário@203.0.113.1's password:

Digite a senha (sua digitação não será mostrada por questões de segurança) e pressione ENTER. O utilitário irá conectar-se à conta no host remoto utilizando a senha que você forneceu. Então, ele irá copiar o conteúdo da sua chave ~/.ssh/id_rsa.pub dentro de um arquivo no diretório ~/.ssh do residence da conta remota chamado authorized_keys.

Você deve ver a seguinte saída:

Output

Variety of key(s) added: 1 Now strive logging into the machine, with: "ssh 'nome_de_usuário@203.0.113.1'" and examine to guarantee that solely the important thing(s) you wished have been added.

Neste ponto, sua chave id_rsa.pub foi carregada para a conta no host remoto. Você pode continuar com o Passo 3.

Copiando a Chave Pública Usando SSH

Se você não tem o ssh-copy-id disponível, mas tem o acesso SSH baseado em senha a uma conta em seu servidor, você pode carregar suas chaves utilizando um método SSH convencional.

Podemos fazer isso usando o comando cat para ler o conteúdo da chave pública em seu computador native e fazer um redirecionamento disso através de uma conexão SSH ao servidor remoto.

Do outro lado, podemos nos certificar que o diretório ~/.ssh existe e tem as permissões corretas sob a conta que estamos utilizando.

Podemos então, dar saída do conteúdo que redirecionamos para dentro de um arquivo chamado authorized_keys dentro desse diretório. Utilizaremos o símbolo de redirecionamento >> para acrescentar o conteúdo em vez de sobrescrevê-lo. Isso nos permitirá adicionar chaves sem a destruição das chaves previamente adicionadas.

O comando completo se parece com isso:

  • cat ~/.ssh/id_rsa.pub | ssh nome_de_usuário@host_remoto "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Você pode ver a seguinte mensagem:

Output

The authenticity of host '203.0.113.1 (203.0.113.1)' cannot be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:advert:d6:6d:22:fe. Are you certain you need to proceed connecting (sure/no)? sure

Isto significa que seu computador native não reconhece o host remoto. Isto ocorrerá na primeira vez que você se conectar a um novo host. Digite "yes" e pressione ENTERpara continuar.

Depois, você deverá ser solicitado a entrar com a senha da conta do usuário remoto:

Output

nome_de_usuário@203.0.113.1's password:

Depois de entrar com sua senha, o conteúdo da sua chave id_rsa.pub será copiado para o closing do arquivo authorized_keys da conta de usuário remota. Proceed com o Passo Three se isso foi bem sucedido.

Copiando a Chave Pública Manualmente

Se você não tem acesso SSH ao servidor baseado em senha disponível, você terá que completar o processo acima manualmente.

Vamos acrescentar maualmente o conteúdo do seu arquivo id_rsa.pub ao arquivo ~/.ssh/authorized_keys na sua máquina remota.

Para mostrar o conteúdo da sua chave id_rsa.pub, digite isto em seu computador native:

Você verá o conteúdo da chave, que deverá se parecer com isto:

Output

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== [email protected] a look at

Acesse seu host remoto utilizando qualquer método que você tiver disponível.

Uma vez que você tiver acesso à sua conta no servidor remoto, você deve certificar-se de que o diretório ~/.ssh existe. Esse comando irá criar o diretório se necessário, ou não fazer nada se ele já existir:

Agora você pode criar ou modificar o arquivo authorized_keys dentro desse diretório. Você pode adicionar o conteúdo do seu arquivo id_rsa.pub ao closing do arquivo authorized_keys, criando-o se necessário, utilizando este comando:

  • echo string_da_chave_pública >> ~/.ssh/authorized_keys

No comando acima, substitua a stringdachavepública com a saída do comando `cat ~/.ssh/idrsa.pubque você executou em seu sistema native. Ele deve iniciar comssh-rsa AAAA...`.

Finalmente, vamos garantir que o diretório ~/.ssh e o arquivo authorized_keys tenham as permissões apropriadas configuradas:

Isto take away recursivamente todas as permissões “group” e “other” para o diretório ~/.ssh/.

Se você estiver utilizando a conta root para configurar chaves para uma conta de usuário, é importante também que o diretório ~/.ssh pertença ao usuário e não ao root:

  • chown -R sammy:sammy ~/.ssh

Neste tutorial nosso usuário chama-se sammy, mas você deve substituir o nome de usuário apropriado no comando acima.

Podemos agora tentar a autenticação sem senha com nosso servidor Ubuntu.

Passo 3 — Autenticar no Servidor Ubuntu Usando Chaves SSH

Se você completou com sucesso um dos procedimentos acima, você deve ser capaz de logar no host remoto sem a senha da conta remota.

O processo básico é o mesmo:

  • ssh nome_de_usuário@host_remoto

Se esta é a primeira vez que você se conecta a este host (se você usou o último método acima), você pode ver algo assim:

Output

The authenticity of host '203.0.113.1 (203.0.113.1)' cannot be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:advert:d6:6d:22:fe. Are you certain you need to proceed connecting (sure/no)? <^>sure<~>

Isto significa que seu computador native não reconhece o host remoto. Digite "yes" e pressione ENTERpara continuar.

Se você não forneceu a frase secreta para sua chave privada, você estará logado imediatamente. Se você forneceu uma frase secreta para a chave privada quando você a criou, você será solicitado a entrar com ela agora (observe que sua digitação não será mostrada no terminal devido a questões de segurança). Depois da autenticação, uma nova sessão de shell deve abrir para você com a conta configurada no servidor Ubuntu.

Se a autenticação baseada em chave ocorreu com sucesso, proceed para aprender como proteger ainda mais o seu sistema desativando a autenticação por senha.

Passo 4 — Desativar a Autenticação por Senha no seu Servidor

Se você foi capaz de se logar em sua conta usando SSH sem uma senha, você configurou com sucesso a autenticação SSH baseada em chaves para sua conta. Contudo, seu mecanismo de autenticação baseado em senha ainda está ativo, significando que seu servidor ainda está exposto a ataques de força bruta.

Antes de completar os passos nessa sessão, certifique-se de que, ou você tem a autenticação SSH baseada em chaves para a conta root nesse servidor, ou preferencialmente, que você tem a autenticação SSH baseada em chaves para uma conta que não seja root e que tenha privilégios sudo. Esse passo irá bloquear logins baseados em senha, portanto, garantir que você ainda será capaz de obter acesso administrativo é essential.

Uma vez que você confirmou que sua conta remota possui privilégios administrativos, efetue login no seu servidor com as chaves SSH, ou como root ou com uma conta com privilégios sudo. Depois, abra o arquivo de configuração do serviço SSH:

  • sudo nano /and many others/ssh/sshd_config

Dentro do arquivo, pesquise por uma diretiva chamada PasswordAuthentication. Isso deve estar comentado. Descomente a linha e defina o valor para "no". Isso irá desativar sua capacidade de logar by way of SSH usando senhas de conta:

/and many others/ssh/sshd_config

...
PasswordAuthentication no
...

Salve e feche o arquivo quando tiver terminado pressionando CTRL + X, e depois Y para confirmar o salvamento do arquivo, e finalmente ENTER para sair do nano. Para implementar essas mudanças de fato, precisamos reiniciar o serviço sshd:

  • sudo systemctl restart ssh

Como uma precaução, abra uma nova janela de terminal e teste se o serviço SSH está funcionando corretamente antes de fechar esta sessão.

ssh nome_de_usuário@host_remoto

Uma vez que tiver verificado o seu serviço SSH, você pode fechar com segurança todas as sessões atuais do servidor.

O serviço ou daemon SSH no seu servidor Ubuntu agora somente responde a chaves SSH. A autenticação baseada em senha foi desativada com sucesso.

Conclusão

Agora você deve ter a autenticação SSH baseada em chaves configurada em seu servidor, permitindo efetuar login sem fornecer uma senha de conta.

Se você gostaria de saber mais sobre como trabalhar com SSH, dê uma olhada no nosso Guia Important do SSH.

Linux uname Command Tutorial for Newbies (eight Examples)

Previous article

5 Useful Spreadsheet Templates for Designers

Next article

You may also like

Comments

Leave a Reply

More in Linux