To-faktor-godkendelse til SSH

"Secure Shell" SSH er en netværksprotokol til at etablere en sikker forbindelse mellem værter, som standard over port 22 (som er bedre at ændre). SSH-klienter og SSH-servere er tilgængelige for de fleste operativsystemer. Næsten enhver anden netværksprotokol fungerer inde i SSH, det vil sige, du kan arbejde eksternt på en anden computer, transmittere en lyd- eller videostream over en krypteret kanal osv. Udover, via SOCKS proxy på en fjernvært du kan oprette forbindelse til andre værter på vegne af denne fjernvært.

Autentificering sker ved hjælp af en adgangskode, men udviklere og systemadministratorer bruger traditionelt SSH-nøgler. Problemet er, at den private nøgle kan blive stjålet. Tilføjelse af en adgangssætning beskytter teoretisk mod tyveri af den private nøgle, men i praksis, når du videresender og cache nøgler, kan stadig bruges uden bekræftelse. To-faktor-godkendelse løser dette problem.

Sådan implementeres to-faktor-godkendelse

Udviklere fra Honeycomb har for nylig offentliggjort detaljerede instruktioner, hvordan man implementerer den passende infrastruktur på klienten og serveren.

Instruktionerne forudsætter, at du har en vis basisvært åben til internettet (bastion). Du vil oprette forbindelse til denne vært fra bærbare computere eller computere via internettet og få adgang til alle andre enheder, der er placeret bag den. 2FA sikrer, at en angriber ikke kan gøre det samme, selvom de får adgang til din bærbare computer, for eksempel ved at installere malware.

Den første mulighed er OTP

OTP - digitale engangsadgangskoder, som i dette tilfælde vil blive brugt til SSH-godkendelse sammen med nøglen. Udviklerne skriver, at dette ikke er en ideel mulighed, fordi en angriber kan rejse en falsk bastion, opsnappe din OTP og bruge den. Men det er bedre end ingenting.

I dette tilfælde, på serversiden, skrives følgende linjer ind i Chef-konfigurationen:

  • metadata.rb
  • attributes/default.rb (af attributes.rb)
  • files/sshd
  • recipes/default.rb (kopi fra recipe.rb)
  • templates/default/users.oath.erb

Enhver OTP-applikation er installeret på klientsiden: Google Authenticator, Authy, Duo, Lastpass, installeret brew install oath-toolkit eller apt install oathtool openssl, så genereres en tilfældig base16-streng (nøgle). Det konverteres til Base32-formatet, som mobile autentificeringer bruger, og importeres direkte til applikationen.

Som et resultat kan du oprette forbindelse til Bastion og se, at det nu ikke kun kræver en adgangssætning, men også en OTP-kode til godkendelse:

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

Den anden mulighed er hardwaregodkendelse

I dette tilfælde er brugeren ikke forpligtet til at indtaste OTP-koden hver gang, da den anden faktor bliver hardwareenheden eller biometri.

Her er Chef-konfigurationen lidt mere kompliceret, og klientkonfigurationen afhænger af OS. Men efter at have gennemført alle trinene, kan klienter på MacOS bekræfte godkendelse i SSH ved hjælp af en adgangssætning og placere en finger på sensoren (anden faktor).

iOS- og Android-ejere bekræfter login ved at trykke på én knap på din smartphone. Dette er en speciel teknologi fra Krypt.co, som er endnu mere sikker end OTP.

På Linux/ChromeOS er der mulighed for at arbejde med YubiKey USB-tokens. Selvfølgelig kan en angriber stjæle dit token, men han kender stadig ikke adgangssætningen.

Kilde: www.habr.com

Tilføj en kommentar