OpenSSH 8.2 kaleratzea FIDO/U2F bi faktoreko autentifikazio-tokenetarako laguntzarekin

Lau hilabeteko garapenaren ostean aurkeztu askatu OpenSSH 8.2, SSH 2.0 eta SFTP protokoloen bidez lan egiteko bezero eta zerbitzarien inplementazio irekia.

OpenSSH 8.2-ren bertsioaren funtsezko hobekuntza bat protokoloa onartzen duten gailuak erabiliz bi faktoreko autentifikazioa erabiltzeko gaitasuna izan zen. U2F, aliantzak garatua Fido. U2F-k kostu baxuko hardware-tokenak sortzea ahalbidetzen du, erabiltzailearen presentzia fisikoa egiaztatzeko, haiekin USB, Bluetooth edo NFC bidez elkarreragiten. Horrelako gailuak webguneetan bi faktoreko autentifikaziorako bide gisa sustatzen dira, dagoeneko arakatzaile nagusiek onartzen dituzte eta hainbat fabrikatzaileek ekoizten dituzte, Yubico, Feitian, Thetis eta Kensington barne.

Erabiltzailearen presentzia baieztatzen duten gailuekin elkarreragiteko, "ecdsa-sk" eta "ed25519-sk" gako-mota berriak gehitu dira OpenSSH-ra, ECDSA eta Ed25519 sinadura digitalaren algoritmoak erabiltzen dituztenak, SHA-256 hasharekin konbinatuta. Tokenekin elkarreragiteko prozedurak bitarteko liburutegi batean kokatzen dira, PKCS#11 laguntzarako liburutegiaren antzera kargatzen dena eta liburutegiaren gainean bilgarri bat da. libfido2, USB bidez tokenekin komunikatzeko tresnak eskaintzen dituena (FIDO U2F/CTAP 1 eta FIDO 2.0/CTAP 2 protokoloak onartzen dira). OpenSSH garatzaileek prestatutako libsk-libfido2 bitarteko liburutegia barne core libfido2 sartu, baita HID kontrolatzailea OpenBSDrako.

Gako bat autentifikatu eta sortzeko, "SecurityKeyProvider" parametroa zehaztu behar duzu ezarpenetan edo SSH_SK_PROVIDER ingurune-aldagaia ezarri, libsk-libfido2.so kanpoko liburutegirako bidea adieraziz (export SSH_SK_PROVIDER=/path/to/libsk-libfido2. beraz). Posible da openssh geruzaren liburutegirako euskarria integratuta eraikitzea (--with-security-key-builtin), kasu honetan "SecurityKeyProvider=internal" parametroa ezarri behar duzu.
Ondoren, "ssh-keygen -t ecdsa-sk" exekutatu behar duzu edo, gakoak dagoeneko sortu eta konfiguratuta badaude, konektatu zerbitzarira "ssh" erabiliz. Ssh-keygen exekutatzen duzunean, sortutako gako-parea "~/.ssh/id_ecdsa_sk"-n gordeko da eta beste gako batzuen antzera erabil daiteke.

Gako publikoa (id_ecdsa_sk.pub) zerbitzarian kopiatu behar da authorized_keys fitxategian. Zerbitzariaren aldean, sinadura digitala bakarrik egiaztatzen da, eta tokenekin elkarreragina bezeroaren aldean egiten da (ez duzu zerbitzarian libsk-libfido2 instalatu behar, baina zerbitzariak "ecdsa-sk" gako mota onartu behar du) . Sortutako gako pribatua (id_ecdsa_sk) funtsean gako-heldulekua da, benetako gako bat osatuz soilik U2F token aldean gordetako sekuentzia sekretuarekin konbinatuta. Id_ecdsa_sk gakoa erasotzaile baten eskuetan erortzen bada, autentifikazioa gainditzeko hardware tokenerako sarbidea ere lortu beharko du, eta hori gabe id_ecdsa_sk fitxategian gordetako gako pribatuak ez du ezertarako balio.

Gainera, lehenespenez, giltzekin edozein eragiketa egitean (sorkuntzan zein autentifikazioan), erabiltzailearen presentzia fisikoaren tokiko berrespena beharrezkoa da, adibidez, tokeneko sentsorea ukitzea proposatzen da, eta horrek zaildu egiten du. token bat duten sistemetan urruneko erasoak egitea. Beste defentsa-lerro gisa, ssh-keygen abiarazteko fasean pasahitz bat ere zehaztu daiteke gako-fitxategia atzitzeko.

OpenSSH-ren bertsio berriak SHA-1 hash-ak erabiliz algoritmoen zaharkitzea ere iragarri zuen, ondorioz. sustapena aurrizki jakin batekin talka-erasoen eraginkortasuna (talka hautatzeko kostua 45 mila dolar gutxi gorabehera estimatzen da). Datozen argitalpenetako batean, lehenespenez desgaitu nahi dute "ssh-rsa" gako publikoko sinadura digitalaren algoritmoa erabiltzeko gaitasuna, jatorrizko RFC-n SSH protokolorako aipatzen dena eta praktikan hedatuta jarraitzen duena (erabilera probatzeko. ssh-rsa zure sistemetan, ssh bidez konektatzen saia zaitezke "-oHostKeyAlgorithms=-ssh-rsa" aukerarekin).

OpenSSH-n algoritmo berrietarako trantsizioa leuntzeko, etorkizuneko bertsio batean UpdateHostKeys ezarpena lehenespenez gaituta egongo da, eta horrek automatikoki migratuko ditu bezeroak algoritmo fidagarriagoetara. Migraziorako gomendatutako algoritmoen artean, RFC2 RSA SHA-256-n oinarritutako rsa-sha512-8332/2 (OpenSSH 7.2tik onartzen da eta lehenespenez erabiltzen da), ssh-ed25519 (OpenSSH 6.5etik onartzen da) eta ecdsa-sha2-nistp256/384/521/5656. RFC5.7 ECDSAn (OpenSSH XNUMXtik onartzen da).

OpenSSH 8.2-n, "ssh-rsa" erabiliz konektatzeko gaitasuna oraindik eskuragarri dago, baina algoritmo hau CASignatureAlgorithms zerrendatik kendu da, ziurtagiri berriak digitalki sinatzeko baimendutako algoritmoak definitzen dituena. Era berean, diffie-hellman-group14-sha1 algoritmoa onartzen diren gako-trukearen algoritmo lehenetsietatik kendu da. Kontuan izan da ziurtagirietan SHA-1 erabiltzeak arrisku gehigarriarekin lotzen duela, erasotzaileak denbora mugagabea duelako lehendik dagoen ziurtagiri baten talka bilatzeko, ostalariaren gakoen erasoaren denbora konexioaren denbora-mugagatik mugatuta dagoen bitartean (LoginGraceTime ).

Ssh-keygen exekutatzen lehenetsita dago orain OpenSSH 2-tik onartzen den rsa-sha512-7.2 algoritmoa, eta horrek bateragarritasun-arazoak sor ditzake OpenSSH 8.2-n sinatutako ziurtagiriak prozesatzen saiatzean OpenSSH bertsio zaharragoak dituzten sistemetan (arazoa konpontzeko Noiz sinadura bat sortzean, "ssh-keygen -t ssh-rsa" esplizituki zehaztu dezakezu edo OpenSSH 2tik onartzen den ecdsa-sha256-nistp384/521/5.7 algoritmoak erabil ditzakezu).

Beste aldaketa batzuk:

  • Sshd_config-era Include direktiba bat gehitu da, eta horri esker, beste fitxategi batzuen edukia konfigurazio-fitxategiaren uneko posizioan sartzeko (glob maskarak erabil daitezke fitxategiaren izena zehaztean);
  • ssh-keygen-i β€œtoken-beharrik gabeko” aukera gehitu zaio, eta horrek desgaitzen du tokenerako sarbidea fisikoki baieztatu beharra gakoa sortzerakoan;
  • PubkeyAuthOptions direktiba bat gehitu da sshd_config-i, gako publikoaren autentifikazioarekin lotutako hainbat aukera konbinatzen dituena. Momentuz, "ukitu ez den beharrezkoa" marka bakarrik onartzen da token autentifikaziorako presentzia fisikoaren egiaztapenak saltatzeko. Analogiaren arabera, "ukipenik gabe" aukera gehitu da authorized_keys fitxategian;
  • "-O write-attestation=/path" aukera gehitu da ssh-keygen-i, gakoak sortzean FIDO atestazio-ziurtagiri gehigarriak idazteko. OpenSSH-k oraindik ez ditu ziurtagiri hauek erabiltzen, baina geroago erabil daitezke gakoa fidagarri den hardware denda batean dagoela egiaztatzeko;
  • Ssh eta sshd ezarpenetan, orain posible da trafikoa lehenesteko modua ezartzea IPQoS zuzentarauaren bidez. LE DSCP (Jauzi bakoitzeko esfortzu baxuko portaera);
  • Ssh-n, "AddKeysToAgent=yes" balioa ezartzean, gakoak iruzkin-eremurik ez badu, ssh-agent-era gehituko da gakoaren bidea iruzkin gisa adieraziz. IN
    ssh-keygen-ek eta ssh-agentek ere orain PKCS#11 etiketak eta X.509 gaiaren izena erabiltzen dituzte liburutegiko bidearen ordez teklako iruzkin gisa;

  • DSA eta ECDSA gakoetarako PEM esportatzeko gaitasuna gehitu da ssh-keygen-era;
  • FIDO/U2F token sarbidearen liburutegia isolatzeko erabiltzen den ssh-sk-helper exekutagarri berri bat gehitu da;
  • "--with-zlib" eraikitzeko aukera gehitu da ssh eta sshd-i zlib liburutegiaren laguntzarekin konpilatzeko;
  • RFC4253 eskakizunaren arabera, MaxStartups-en mugak gainditzeagatik sarbide blokeatzeari buruzko abisua ematen da konexioan bistaratzen den pankartan. Diagnostikoak errazteko, sshd prozesuko goiburuak, ps utilitatea erabiltzean ikusgai, orain unean autentifikatu diren konexioen kopurua eta MaxStartups mugaren egoera bistaratzen ditu;
  • Ssh eta ssh-agent-en, $SSH_ASKPASS bidez zehazten den $SSH_ASKPASS bidez gonbidapena bistaratzeko programa bati deitzean, gonbidapen mota duen bandera ere transmititzen da: "berretsi" - berrespen-elkarrizketa (bai/ez), "none". ” - informazio-mezua, "hutsik" - pasahitza eskaera;
  • Sinadura digitalen eragiketa berria "find-principals" gehitu da ssh-keygen-era, baimendutako sinatzaileen fitxategia sinadura digital zehatz batekin lotutako erabiltzailea bilatzeko;
  • Linux-en sshd prozesuen isolamendurako laguntza hobetu da seccomp mekanismoa erabiliz: IPC sistema-deiak desgaitu, clock_gettime64(), clock_nanosleep_time64 eta clock_nanosleep() baimenduz.

Iturria: opennet.ru

Gehitu iruzkin berria