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 poslužitelji dostupni su za većinu operativnih sustava. Gotovo svaki drugi mrežni protokol radi unutar SSH-a, to jest, možete raditi na daljinu na drugom računalu, prenositi audio ili video stream preko šifriranog kanala itd. Osim, putem SOCKS proxyja na udaljenom hostu možete se povezati s drugim hostovima u ime ovog udaljenog hosta.

Autentifikacija se odvija pomoću lozinke, ali programeri i administratori sustava tradicionalno koriste SSH ključeve. Problem je što se privatni ključ može ukrasti. Dodavanje zaporke teoretski štiti od krađe privatnog ključa, ali u praksi, prilikom prosljeđivanja i predmemoriranja ključeva, i dalje se može koristiti bez potvrde. Dvofaktorska autentifikacija rješava ovaj problem.

Kako implementirati dvofaktornu autentifikaciju

Programeri iz Honeycomba nedavno su objavili detaljne upute, kako implementirati odgovarajuću infrastrukturu na klijentu i poslužitelju.

Upute pretpostavljaju da imate određeni osnovni host otvoren za Internet (bastion). Želite se spojiti na ovaj host s laptopa ili računala putem interneta, te pristupiti svim drugim uređajima koji se nalaze iza njega. 2FA osigurava da napadač ne može učiniti isto čak i ako dobije pristup vašem prijenosnom računalu, primjerice instaliranjem zlonamjernog softvera.

Prva opcija je OTP

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

U ovom slučaju, na strani poslužitelja, sljedeći redovi su upisani u Chef konfiguraciju:

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

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

Kao rezultat toga, možete se povezati s Bastionom i vidjeti da sada zahtijeva ne samo zaporku, već i OTP kod za provjeru autentičnosti:

➜ 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 unijeti OTP kod, jer drugi faktor postaje hardverski uređaj ili biometrija.

Ovdje je konfiguracija Chefa malo kompliciranija, a konfiguracija klijenta ovisi o OS-u. Ali nakon dovršetka svih koraka, klijenti na MacOS-u mogu potvrditi autentifikaciju u SSH-u pomoću zaporke i stavljanjem prsta na senzor (drugi faktor).

Vlasnici iOS-a i Androida potvrđuju prijavu pritiskom na jednu tipku na pametnom telefonu. Ovo je posebna tehnologija tvrtke Krypt.co, koja je još sigurnija od OTP-a.

Na Linux/ChromeOS postoji opcija rada s YubiKey USB tokenima. Naravno, napadač može ukrasti vaš token, ali još uvijek ne zna šifru.

Izvor: www.habr.com

Dodajte komentar