To-faktor autentifikation til SSH

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, gennem SOCKS-proxyen på den fjerne vært 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, kan de stadig bruges uden bekræftelse. To-faktorautentifikation løser dette problem.

Hvordan implementeres to-faktorautentifikation

Udviklerne fra Honeycomb har for nylig offentliggjort en detaljeret vejledning, 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.rb
  • attributes/default.rb (fra attributes.rb)
  • files/sshd
  • recipes/default.rb (kopi fra recipe.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 med et tryk på en knap på deres 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 USB-token YubiKey. Selvfølgelig kan en angriber stjæle din token, men han kender stadig ikke adgangssætningen.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster