SSH - et netværksprotokol til oprettelse af en sikker forbindelse mellem værter, som standard bruger port 22 (som er bedre at ændre). SSH-klienter og SSH-servere er tilgængelige for de fleste operativsystemer. Inden for SSH kan næsten enhver anden netværksprotokol fungere, hvilket betyder, at man kan arbejde fjernadgang på en anden computer, overføre lyd- eller videostrømme via en krypteret kanal osv. Desuden, kan man oprette forbindelse til andre værter som denne fjerne vært.
Godkendelse sker via adgangskode, men udviklere og systemadministratorer bruger traditionelt SSH-nøgler. Problemet er, at den hemmelige nøgle kan stjæles. Tilføjelse af en adgangssætning beskytter teoretisk mod tyveri af den hemmelige nøgle, men i praksis, når nøgler bliver videresendt og cachet, . To-faktorautentifikation løser dette problem.
Hvordan implementeres to-faktorautentifikation
Udviklerne fra Honeycomb har for nylig offentliggjort , hvordan man implementerer den relevante infrastruktur på klienten og serveren.
Vejledningen forudsætter, at du har en slags grundlæggende vært, der er åben i internettet (bastion). Du ønsker at oprette forbindelse til denne vært fra bærbare computere eller computere via internettet og få adgang til alle de andre enheder, der er bagved. 2FA garanterer, at en angriber ikke vil være i stand til at gøre det samme, selvom han får adgang til din bærbare computer, for eksempel ved at installere malware.
Den første mulighed - OTP
OTP - engangskoder, der i dette tilfælde vil blive brugt til SSH-godkendelse sammen med nøglen. Udviklerne skriver, at dette ikke er den ideelle mulighed, fordi en angriber kan oprette en falsk bastion, opfange dit OTP og bruge det. Men det er bedre end intet.
I dette tilfælde tilføjes følgende linjer til serverens konfiguration i Chef:
metadata.rbattributes/default.rb(fraattributes.rb)files/sshdrecipes/default.rb(kopi frarecipe.rb)templates/default/users.oath.erb
På klientsiden installeres en hvilken som helst OTP-app: Google Authenticator, Authy, Duo, Lastpass, installeres brew install oath-toolkit eller apt install oathtool openssl, derefter genereres en tilfældig streng base16 (nøgle). Den konverteres til Base32-format, som bruges af mobile autentifikatorer, og importeres direkte i applikationen.
Som resultat kan du forbinde til bastionen og bekræfte, at den nu kræver både en adgangssætning og en OTP-kode til autentifikation:
➜ ssh -A bastion
Indtast adgangsord for nøgle '[snip]':
Engangsadgangskode (OATH) for '[user]':
Velkommen til Ubuntu 18.04.1 LTS...Den anden mulighed er hardwareautentifikation
I dette tilfælde kræves det ikke, at brugeren indtaster OTP-koden hver gang, da et hardware-enhed eller biometrisk data bliver den anden faktor.
Her er Chef-konfigurationen lidt mere kompleks, og klientkonfigurationen afhænger af styresystemet. Men efter udførelsen af alle handlinger kan klienter på MacOS bekræfte autentifikation i SSH ved at indtaste adgangssætningen og bruge en finger på sensoren (den anden faktor).
Ejere af iOS og Android bekræfter login . 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 USB-token YubiKey. Selvfølgelig kan en angriber stjæle din token, men han kender stadig ikke adgangssætningen.
Kilde: habr.com
