Tvåfaktorsautentisering för SSH

"Secure shell" SSH är ett nätverksprotokoll för att upprätta en säker anslutning mellan värdar, som standard över port 22 (vilket är bättre att ändra). SSH-klienter och SSH-servrar är tillgängliga för de flesta operativsystem. Nästan alla andra nätverksprotokoll fungerar inuti SSH, det vill säga du kan arbeta på distans på en annan dator, överföra en ljud- eller videoström över en krypterad kanal, etc. Förutom, via SOCKS proxy på en fjärrvärd du kan ansluta till andra värdar på uppdrag av denna fjärrvärd.

Autentisering sker med ett lösenord, men utvecklare och systemadministratörer använder traditionellt SSH-nycklar. Problemet är att den privata nyckeln kan stjälas. Att lägga till en lösenfras skyddar teoretiskt mot stöld av den privata nyckeln, men i praktiken, vid vidarebefordran och cachelagring av nycklar, kan fortfarande användas utan bekräftelse. Tvåfaktorsautentisering löser detta problem.

Hur man implementerar tvåfaktorsautentisering

Utvecklare från Honeycomb publicerade nyligen detaljerade instruktioner, hur man implementerar lämplig infrastruktur på klienten och servern.

Instruktionerna förutsätter att du har en viss grundvärd öppen för Internet (bastion). Du vill ansluta till den här värden från bärbara datorer eller datorer via Internet och komma åt alla andra enheter som finns bakom den. 2FA ser till att en angripare inte kan göra detsamma även om de får tillgång till din bärbara dator, till exempel genom att installera skadlig programvara.

Det första alternativet är OTP

OTP - digitala engångslösenord, som i det här fallet kommer att användas för SSH-autentisering tillsammans med nyckeln. Utvecklarna skriver att detta inte är ett idealiskt alternativ, eftersom en angripare kan höja en falsk bastion, avlyssna din OTP och använda den. Men det är bättre än ingenting.

I det här fallet, på serversidan, skrivs följande rader in i Chef-konfigurationen:

  • metadata.rb
  • attributes/default.rb (från attributes.rb)
  • files/sshd
  • recipes/default.rb (kopiera från recipe.rb)
  • templates/default/users.oath.erb

Alla OTP-applikationer är installerade på klientsidan: Google Authenticator, Authy, Duo, Lastpass, installerad brew install oath-toolkit eller apt install oathtool openssl, sedan genereras en slumpmässig base16-sträng (nyckel). Den konverteras till Base32-formatet som mobila autentiseringsenheter använder och importeras direkt till applikationen.

Som ett resultat kan du ansluta till Bastion och se att det nu inte bara kräver en lösenordsfras, utan också en OTP-kod för autentisering:

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

Det andra alternativet är maskinvaruautentisering

I det här fallet behöver användaren inte ange OTP-koden varje gång, eftersom den andra faktorn blir hårdvaruenheten eller biometrin.

Här är Chef-konfigurationen lite mer komplicerad, och klientkonfigurationen beror på operativsystemet. Men efter att ha slutfört alla steg kan klienter på MacOS bekräfta autentisering i SSH med hjälp av en lösenfras och placera ett finger på sensorn (andra faktorn).

iOS- och Android-ägare bekräftar inloggningen genom att trycka på en knapp på din smartphone. Detta är en speciell teknik från Krypt.co, som är ännu säkrare än OTP.

På Linux/ChromeOS finns det ett alternativ att arbeta med YubiKey USB-tokens. Naturligtvis kan en angripare stjäla din token, men han kan fortfarande inte lösenordsfrasen.

Källa: will.com

Lägg en kommentar