Autenticação de dois fatores para SSH

A "Shell Segura" SSH é um protocolo de rede para estabelecer uma conexão segura entre hosts, padrão pela porta 22 (que é melhor alterar). Clientes SSH e servidores SSH estão disponíveis para a maioria dos sistemas operacionais. Dentro do SSH, praticamente qualquer outro protocolo de rede funciona, ou seja, é possível trabalhar remotamente em outro computador, transmitir fluxos de áudio ou vídeo através de um canal criptografado, etc. Além disso, através de um proxy SOCKS no host remoto é possível conectar-se a outros hosts já em nome desse host remoto.

A autenticação é realizada por senha, mas desenvolvedores e administradores de sistema geralmente utilizam chaves SSH. O problema é que a chave secreta pode ser roubada. A adição de uma frase secreta teoricamente protege contra o roubo da chave secreta, mas na prática, ao fazer o forwarding e o caching das chaves, elas ainda podem ser utilizadas sem confirmação. A autenticação em dois fatores resolve esse problema.

Como implementar a autenticação em dois fatores

Desenvolvedores da empresa Honeycomb recentemente publicaram um guia detalhado, sobre como implementar a infraestrutura correspondente no cliente e no servidor.

O guia pressupõe que você tenha um host básico, aberto na internet (bastion). Você deseja conectar-se a esse host a partir de laptops ou computadores através da internet e obter acesso a todos os outros dispositivos que estão atrás dele. A 2FA garante que um invasor não conseguirá fazer o mesmo, mesmo que obtenha acesso ao seu laptop, por exemplo, instalando malware.

A primeira opção é OTP

OTP são senhas digitais de uso único que, neste caso, serão utilizadas para autenticação SSH junto com a chave. Os desenvolvedores afirmam que esta não é uma opção ideal, pois um invasor pode levantar um bastion falso, interceptar seu OTP e usá-lo. Mas isso é melhor do que nada.

Neste caso, no lado do servidor, as seguintes linhas devem ser escritas na configuração do Chef:

  • metadata.rb
  • attributes/default.rb (de attributes.rb)
  • files/sshd
  • recipes/default.rb (cópia de recipe.rb)
  • templates/default/users.oath.erb

No lado do cliente, deve-se instalar qualquer aplicativo OTP: Google Authenticator, Authy, Duo, Lastpass, instalar brew install oath-toolkit ou apt install oathtool openssl, em seguida, é gerada uma string aleatória base16 (chave). Ela é convertida para o formato Base32, que é usado por autentificadores móveis, e importada diretamente para o aplicativo.

Assim, você pode se conectar ao bastião e verificar que agora ele exige não apenas a senha, mas também um código OTP para autenticação:

➜ ssh -A bastion
Digite a frase secreta para a chave '[snip]': 
Senha única (OATH) para '[user]': 
Bem-vindo ao Ubuntu 18.04.1 LTS...

A segunda opção é a autenticação por hardware

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

Aqui a configuração do Chef é um pouco mais complexa, e a configuração dos clientes depende do sistema operacional. No entanto, após realizar todas as ações, os clientes no MacOS podem confirmar a autenticação em SSH usando a frase secreta e passando o dedo pelo sensor (segundo fator).

Os proprietários de iOS e Android confirmam o login pressionando um botão no smartphone. Esta é uma tecnologia especial da Krypt.co, que é ainda mais segura do que o OTP.

No Linux/ChromeOS, existe uma opção de trabalhar com tokens USB YubiKey. Claro, um invasor pode roubar seu token, mas ele ainda não conhece a frase secreta.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster