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, é 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 . A autenticação em dois fatores resolve esse problema.
Como implementar a autenticação em dois fatores
Desenvolvedores da empresa Honeycomb recentemente publicaram , 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.rbattributes/default.rb(deattributes.rb)files/sshdrecipes/default.rb(cópia derecipe.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 . 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
