Autenticação de dois fatores para SSH

O "Secure Shell" SSH é um protocolo de rede para estabelecer uma conexão segura entre hosts, padrão na porta 22 (que é melhor mudar). Clientes SSH e servidores SSH estão disponíveis para a maioria dos sistemas operacionais. Quase qualquer outro protocolo de rede funciona dentro do SSH, ou seja, você pode trabalhar remotamente em outro computador, transmitir um fluxo de áudio ou vídeo por um canal criptografado etc. Além disso, por meio dos proxies do SOCKS em um host remoto, você pode conectar-se a outros hosts em nome desse host remoto.

A autenticação ocorre com uma senha, mas os desenvolvedores e administradores de sistema tradicionalmente usam chaves SSH. O problema é que a chave secreta pode ser roubada. Adicionar uma frase secreta teoricamente protege contra o roubo da chave secreta, mas, na prática, ao encaminhar e armazenar em cache as chaves, elas ainda podem ser usadas sem confirmação . A autenticação de dois fatores resolve esse problema.

Como implementar a autenticação de dois fatores


Os desenvolvedores do Honeycomb publicaram recentemente instruções detalhadas sobre como implementar a infraestrutura apropriada no cliente e no servidor.

A instrução pressupõe que você tenha um determinado host básico aberto na Internet (bastião). Você deseja se conectar a esse host a partir de laptops ou computadores via Internet e obter acesso a todos os outros dispositivos que estão por trás dele. O 2FA garante que um invasor não possa fazer o mesmo, mesmo que obtenha acesso ao seu laptop, por exemplo, instalando malware.

A primeira opção é OTP


OTP - senhas digitais únicas, que neste caso serão usadas para autenticação SSH junto com a chave. Os desenvolvedores escrevem que essa não é uma opção ideal, porque um invasor pode pegar um bastião falso, interceptar seu OTP e usá-lo. Mas isso é melhor que nada.

Nesse caso, as seguintes linhas são gravadas na configuração do Chef no lado do servidor:

  • metadata.rb
  • attributes/default.rb (from attributes.rb )
  • files/sshd
  • recipes/default.rb (copiar de recipe.rb )
  • templates/default/users.oath.erb

Qualquer aplicativo OTP é instalado no lado do cliente: Google Authenticator, Authy, Duo, Lastpass, brew install oath-toolkit ou apt install oathtool openssl , em seguida, é gerada uma sequência aleatória de base16 (chave). Ele é convertido para o formato Base32, usado por autenticadores móveis e importado diretamente para o aplicativo.

Como resultado, você pode se conectar ao bastião e garantir que agora ele exija não apenas uma senha, mas também um código OTP para autenticação:

 ➜ ssh -A bastion Enter passphrase for key '[snip]': One-time password (OATH) for '[user]': Welcome to Ubuntu 18.04.1 LTS... 

Opção dois - autenticação de hardware


Nesse caso, o usuário não precisa digitar um código OTP a cada vez, pois o segundo fator é o dispositivo de hardware ou a biometria.

Aqui, a configuração do Chef é um pouco mais complicada e a configuração dos clientes depende do sistema operacional. Mas, depois de concluir todas as etapas, os clientes no MacOS podem confirmar a autenticação no SSH usando uma senha e aplicando um dedo no sensor (segundo fator).

Proprietários de iOS e Android confirmam a entrada pressionando um único botão no smartphone . Esta é uma tecnologia especial da Krypt.co, que é ainda mais segura que o OTP.

No Linux / ChromeOS, há uma opção para trabalhar com tokens YubiKey USB. Obviamente, um invasor pode roubar seu token, mas ele ainda não sabe a senha.





Source: https://habr.com/ru/post/pt448970/


All Articles