Dvofaktorska avtentikacija za SSH

»Varna lupina« SSH je omrežni protokol za vzpostavitev varne povezave med gostitelji, običajno preko vrat 22 (ki jih je bolje spremeniti). Odjemalci SSH in strežniki SSH so na voljo za večino operacijskih sistemov. Znotraj SSH deluje skoraj vsak drug omrežni protokol, kar pomeni, da lahko delate na daljavo na drugem računalniku, prenašate avdio ali video tok po šifriranem kanalu itd. Poleg tega prek proxyja SOCKS na oddaljenem gostitelju se lahko povežete z drugimi gostitelji v imenu tega oddaljenega gostitelja.

Preverjanje pristnosti poteka z geslom, vendar razvijalci in sistemski skrbniki tradicionalno uporabljajo ključe SSH. Težava je v tem, da lahko zasebni ključ ukradejo. Dodajanje gesla teoretično ščiti pred krajo zasebnega ključa, v praksi pa pri posredovanju in predpomnjenju ključev še vedno lahko uporabljate brez potrditve. Dvostopenjska avtentikacija rešuje ta problem.

Kako implementirati dvostopenjsko avtentikacijo

Razvijalci iz Honeycomba so nedavno objavili podrobna navodila, kako implementirati ustrezno infrastrukturo na odjemalca in strežnik.

Navodila predvidevajo, da imate določen osnovni gostitelj odprt za internet (bastion). S tem gostiteljem se želite povezati iz prenosnikov ali računalnikov prek interneta in dostopati do vseh drugih naprav, ki se nahajajo za njim. 2FA zagotavlja, da napadalec ne more storiti enakega, tudi če dobi dostop do vašega prenosnika, na primer z namestitvijo zlonamerne programske opreme.

Prva možnost je OTP

OTP - enkratna digitalna gesla, ki bodo v tem primeru skupaj s ključem uporabljena za avtentikacijo SSH. Razvijalci pišejo, da to ni idealna možnost, saj lahko napadalec dvigne lažni bastion, prestreže vaš OTP in ga uporabi. Ampak to je bolje kot nič.

V tem primeru so na strani strežnika v konfiguracijo Chefa zapisane naslednje vrstice:

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

Katera koli aplikacija OTP je nameščena na strani odjemalca: Google Authenticator, Authy, Duo, Lastpass, nameščen brew install oath-toolkit ali apt install oathtool openssl, potem se ustvari naključni niz base16 (ključ). Pretvorjen je v format Base32, ki ga uporabljajo mobilni avtentifikatorji, in uvožen neposredno v aplikacijo.

Posledično se lahko povežete z Bastionom in vidite, da zdaj ne zahteva samo gesla, ampak tudi kodo OTP za preverjanje pristnosti:

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

Druga možnost je strojna avtentikacija

V tem primeru uporabniku ni treba vsakič vnesti kode OTP, saj drugi dejavnik postane strojna naprava ali biometrija.

Tu je konfiguracija Chefa nekoliko bolj zapletena, konfiguracija odjemalca pa je odvisna od OS. Toda po zaključku vseh korakov lahko odjemalci v sistemu MacOS potrdijo avtentikacijo v SSH z uporabo gesla in s prstom na senzor (drugi faktor).

Lastniki iOS in Android potrdijo prijavo s pritiskom na en gumb na pametnem telefonu. To je posebna tehnologija Krypt.co, ki je še bolj varna kot OTP.

V sistemu Linux/ChromeOS obstaja možnost dela z žetoni YubiKey USB. Seveda lahko napadalec ukrade vaš žeton, vendar še vedno ne pozna gesla.

Vir: www.habr.com

Dodaj komentar