Dvofaktorska autentifikacija za SSH

“Secure shell” SSH je mrežni protokol za uspostavljanje sigurne veze između hostova, standardno preko porta 22 (koji je bolje promijeniti). SSH klijenti i SSH serveri dostupni su za većinu operativnih sistema. Gotovo svaki drugi mrežni protokol radi unutar SSH-a, odnosno možete raditi na daljinu na drugom računalu, prenositi audio ili video stream preko šifriranog kanala itd. osim toga, preko SOCKS proxyja na udaljenom hostu možete se povezati na druge hostove u ime ovog udaljenog hosta.

Provjera autentičnosti se odvija korištenjem lozinke, ali programeri i sistemski administratori tradicionalno koriste SSH ključeve. Problem je što privatni ključ može biti ukraden. Dodavanje pristupne fraze teoretski štiti od krađe privatnog ključa, ali u praksi, prilikom prosljeđivanja i keširanja ključeva, oni i dalje se može koristiti bez potvrde. Dvofaktorska autentifikacija rješava ovaj problem.

Kako implementirati dvofaktorsku autentifikaciju

Programeri iz Honeycomb-a su nedavno objavili detaljna uputstva, kako implementirati odgovarajuću infrastrukturu na klijentu i serveru.

Uputstva pretpostavljaju da imate određeni osnovni host otvoren za Internet (bastion). Želite da se povežete na ovaj host sa laptopa ili računara putem interneta, i pristupite svim ostalim uređajima koji se nalaze iza njega. 2FA osigurava da napadač ne može učiniti isto čak i ako dobije pristup vašem laptopu, na primjer instaliranjem zlonamjernog softvera.

Prva opcija je OTP

OTP - jednokratne digitalne lozinke, koje će se u ovom slučaju koristiti za SSH autentifikaciju zajedno sa ključem. Programeri pišu da ovo nije idealna opcija, jer bi napadač mogao podići lažni bastion, presresti vaš OTP i iskoristiti ga. Ali to je bolje nego ništa.

U ovom slučaju, na strani servera, sljedeće linije se upisuju u Chef konfiguraciju:

  • metadata.rb
  • attributes/default.rb (od attributes.rb)
  • files/sshd
  • recipes/default.rb (kopija iz recipe.rb)
  • templates/default/users.oath.erb

Bilo koja OTP aplikacija je instalirana na strani klijenta: Google Authenticator, Authy, Duo, Lastpass, instaliran brew install oath-toolkit ili apt install oathtool openssl, tada se generiše nasumični base16 niz (ključ). Konvertuje se u Base32 format koji koriste mobilni autentifikatori i uvozi direktno u aplikaciju.

Kao rezultat toga, možete se povezati na Bastion i vidjeti da sada zahtijeva ne samo pristupnu frazu, već i OTP kod za autentifikaciju:

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

Druga opcija je hardverska autentifikacija

U ovom slučaju, korisnik ne mora svaki put unositi OTP kod, jer drugi faktor postaje hardverski uređaj ili biometrija.

Ovdje je Chef konfiguracija malo složenija, a konfiguracija klijenta ovisi o OS-u. Ali nakon završetka svih koraka, klijenti na MacOS-u mogu potvrditi autentifikaciju u SSH koristeći šifru i stavljanje prsta na senzor (drugi faktor).

Vlasnici iOS-a i Android-a potvrđuju prijavu pritiskom na jedno dugme na svom pametnom telefonu. Ovo je posebna tehnologija iz Krypt.co, koja je čak sigurnija od OTP-a.

Na Linux/ChromeOS-u postoji opcija za rad sa YubiKey USB tokenima. Naravno, napadač može ukrasti vaš token, ali još uvijek ne zna pristupnu frazu.

izvor: www.habr.com

Dodajte komentar