“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,
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
Hoe u tweefactorauthenticatie implementeert
Ontwikkelaars van Honeycomb hebben onlangs gepubliceerd
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
(uitattributes.rb
)files/sshd
recipes/default.rb
(Kopieer vanrecipe.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
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