Tweefactorauthenticatie voor SSH

“Secure shell” SSH is een netwerkprotocol voor het tot stand brengen van een veilige verbinding tussen hosts, standaard via poort 22 (wat beter te wijzigen is). SSH-clients en SSH-servers zijn beschikbaar voor de meeste besturingssystemen. Bijna elk ander netwerkprotocol werkt binnen SSH, dat wil zeggen dat u op afstand op een andere computer kunt werken, een audio- of videostream via een gecodeerd kanaal kunt verzenden, enz. Daarnaast, via SOCKS-proxy op een externe host u kunt namens deze externe host verbinding maken met andere hosts.

Authenticatie vindt plaats met behulp van een wachtwoord, maar ontwikkelaars en systeembeheerders gebruiken traditioneel SSH-sleutels. Het probleem is dat de privésleutel kan worden gestolen. Het toevoegen van een wachtwoordzin beschermt theoretisch tegen diefstal van de privésleutel, maar in de praktijk beschermen ze bij het doorsturen en cachen van sleutels kan nog steeds worden gebruikt zonder bevestiging. Tweefactorauthenticatie lost dit probleem op.

Hoe u tweefactorauthenticatie implementeert

Ontwikkelaars van Honeycomb hebben onlangs gepubliceerd gedetailleerde instructies, hoe u de juiste infrastructuur op de client en server implementeert.

De instructies gaan ervan uit dat u een bepaalde basishost hebt die open staat voor internet (bastion). U wilt vanaf laptops of computers via internet verbinding maken met deze host en toegang krijgen tot alle andere apparaten die zich erachter bevinden. 2FA zorgt ervoor dat een aanvaller niet hetzelfde kan doen, ook niet als hij toegang krijgt tot je laptop, bijvoorbeeld door malware te installeren.

De eerste optie is OTP

OTP - eenmalige digitale wachtwoorden, die in dit geval samen met de sleutel worden gebruikt voor SSH-authenticatie. De ontwikkelaars schrijven dat dit geen ideale optie is, omdat een aanvaller een nepbastion zou kunnen oprichten, je OTP zou kunnen onderscheppen en gebruiken. Maar het is beter dan niets.

In dit geval worden aan de serverzijde de volgende regels in de Chef-configuratie geschreven:

  • metadata.rb
  • attributes/default.rb (uit attributes.rb)
  • files/sshd
  • recipes/default.rb (Kopieer van recipe.rb)
  • templates/default/users.oath.erb

Elke OTP-applicatie wordt aan de clientzijde geïnstalleerd: Google Authenticator, Authy, Duo, Lastpass, geïnstalleerd brew install oath-toolkit of apt install oathtool openssl, vervolgens wordt een willekeurige base16-tekenreeks (sleutel) gegenereerd. Het wordt geconverteerd naar het Base32-formaat dat mobiele authenticators gebruiken en rechtstreeks in de applicatie geïmporteerd.

Als gevolg hiervan kun je verbinding maken met Bastion en zien dat er nu niet alleen een wachtwoordzin nodig is, maar ook een OTP-code voor authenticatie:

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

De tweede optie is hardware-authenticatie

In dit geval hoeft de gebruiker niet elke keer de OTP-code in te voeren, aangezien de tweede factor het hardwareapparaat of de biometrie is.

Hier is de Chef-configuratie iets ingewikkelder en is de clientconfiguratie afhankelijk van het besturingssysteem. Maar nadat alle stappen zijn voltooid, kunnen clients op MacOS de authenticatie in SSH bevestigen met behulp van een wachtwoordzin en het plaatsen van een vinger op de sensor (tweede factor).

iOS- en Android-eigenaren bevestigen het inloggen door op één knop op uw smartphone te drukken. Dit is een speciale technologie van Krypt.co, die nog veiliger is dan OTP.

Op Linux/ChromeOS is er een optie om met YubiKey USB-tokens te werken. Natuurlijk kan een aanvaller je token stelen, maar hij kent de wachtwoordzin nog steeds niet.

Bron: www.habr.com

Voeg een reactie