Tofaktorautentisering for SSH

"Secure Shell" SSH er en nettverksprotokoll for å etablere en sikker forbindelse mellom verter, standard over port 22 (som er bedre å endre). SSH-klienter og SSH-servere er tilgjengelige for de fleste operativsystemer. Nesten alle andre nettverksprotokoller fungerer i SSH, det vil si at du kan jobbe eksternt på en annen datamaskin, overføre en lyd- eller videostrøm over en kryptert kanal, etc. I tillegg, via SOCKS proxy på en ekstern vert du kan koble til andre verter på vegne av denne eksterne verten.

Autentisering skjer ved hjelp av et passord, men utviklere og systemadministratorer bruker tradisjonelt SSH-nøkler. Problemet er at den private nøkkelen kan bli stjålet. Å legge til en passordfrase beskytter teoretisk mot tyveri av den private nøkkelen, men i praksis, når nøkler videresendes og bufres, kan fortsatt brukes uten bekreftelse. Tofaktorautentisering løser dette problemet.

Hvordan implementere tofaktorautentisering

Utviklere fra Honeycomb publiserte nylig detaljerte instruksjoner, hvordan implementere riktig infrastruktur på klienten og serveren.

Instruksjonene forutsetter at du har en viss basisvert åpen for Internett (bastion). Du vil koble til denne verten fra bærbare datamaskiner eller datamaskiner via Internett, og få tilgang til alle andre enheter som er plassert bak den. 2FA sikrer at en angriper ikke kan gjøre det samme selv om de får tilgang til den bærbare datamaskinen din, for eksempel ved å installere skadelig programvare.

Det første alternativet er OTP

OTP - digitale engangspassord, som i dette tilfellet vil bli brukt til SSH-autentisering sammen med nøkkelen. Utviklerne skriver at dette ikke er et ideelt alternativ, fordi en angriper kan reise en falsk bastion, avskjære din OTP og bruke den. Men det er bedre enn ingenting.

I dette tilfellet, på serversiden, skrives følgende linjer inn i Chef-konfigurasjonen:

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

Enhver OTP-applikasjon er installert på klientsiden: Google Authenticator, Authy, Duo, Lastpass, installert brew install oath-toolkit eller apt install oathtool openssl, så genereres en tilfeldig base16-streng (nøkkel). Det konverteres til Base32-formatet som mobile autentiseringsenheter bruker og importeres direkte inn i applikasjonen.

Som et resultat kan du koble til Bastion og se at det nå ikke bare krever en passordfrase, men også en OTP-kode for autentisering:

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

Det andre alternativet er maskinvareautentisering

I dette tilfellet er ikke brukeren pålagt å angi OTP-koden hver gang, siden den andre faktoren blir maskinvareenheten eller biometri.

Her er Chef-konfigurasjonen litt mer komplisert, og klientkonfigurasjonen avhenger av OS. Men etter å ha fullført alle trinnene, kan klienter på MacOS bekrefte autentisering i SSH ved å bruke en passordfrase og plassere en finger på sensoren (andre faktor).

iOS- og Android-eiere bekrefter pålogging ved å trykke på én knapp på smarttelefonen. Dette er en spesiell teknologi fra Krypt.co, som er enda sikrere enn OTP.

På Linux/ChromeOS er det et alternativ å jobbe med YubiKey USB-tokens. Selvfølgelig kan en angriper stjele tokenet ditt, men han kjenner fortsatt ikke passordet.

Kilde: www.habr.com

Legg til en kommentar