Liberasyon OpenSSH 8.2 ak sipò pou siy otantifikasyon de-faktè FIDO/U2F

Apre kat mwa nan devlopman prezante lage OpenSSH 8.2, yon aplikasyon kliyan ak sèvè louvri pou travay atravè pwotokòl SSH 2.0 ak SFTP.

Yon amelyorasyon kle nan liberasyon OpenSSH 8.2 se te kapasite pou itilize otantifikasyon de faktè lè l sèvi avèk aparèy ki sipòte pwotokòl la. U2F, devlope pa alyans lan Fido. U2F pèmèt kreyasyon jeton pyès ki nan konpitè a pri ki ba pou verifye prezans fizik itilizatè a, kominike avèk yo atravè USB, Bluetooth oswa NFC. Aparèy sa yo ankouraje kòm yon mwayen otantifikasyon de-faktè sou sit entènèt, yo deja sipòte pa navigatè prensipal yo epi yo pwodui pa plizyè manifaktirè, ki gen ladan Yubico, Feitian, Thetis ak Kensington.

Pou kominike avèk aparèy ki konfime prezans itilizatè a, yo te ajoute nouvo kalite kle "ecdsa-sk" ak "ed25519-sk" nan OpenSSH, ki itilize algoritm siyati dijital ECDSA ak Ed25519, ansanm ak hash SHA-256 la. Pwosedi pou kominike avèk tokens yo mete nan yon bibliyotèk entèmedyè, ki chaje nan yon fason ki sanble ak bibliyotèk la pou sipò PKCS#11 epi li se yon anbalaj anlè bibliyotèk la. libfido2, ki bay zouti pou kominike ak siy sou USB (pwotokòl FIDO U2F/CTAP 1 ak FIDO 2.0/CTAP 2 yo sipòte). Bibliyotèk entèmedyè libsk-libfido2 prepare pa devlopè OpenSSH enkli ladan li nan libfido2 debaz la, osi byen ke chofè HID pou OpenBSD.

Pou otantifye ak jenere yon kle, ou dwe presize paramèt "SecurityKeyProvider" nan paramèt yo oswa mete varyab anviwònman SSH_SK_PROVIDER, ki endike chemen ki mennen nan bibliyotèk ekstèn libsk-libfido2.so (ekspòtasyon SSH_SK_PROVIDER=/path/to/libsk-libfido2. konsa). Li posib pou konstwi openssh ak sipò entegre pou bibliyotèk kouch la (--with-security-key-builtin), nan ka sa a ou bezwen mete paramèt "SecurityKeyProvider=internal".
Apre sa, ou bezwen kouri "ssh-keygen -t ecdsa-sk" oswa, si kle yo te deja kreye ak konfigirasyon, konekte ak sèvè a lè l sèvi avèk "ssh". Lè ou kouri ssh-keygen, pè kle ki pwodwi a pral sove nan "~/.ssh/id_ecdsa_sk" epi yo ka itilize menm jan ak lòt kle.

Kle piblik la (id_ecdsa_sk.pub) ta dwe kopye sou sèvè a nan fichye authorized_keys. Sou bò sèvè a, se sèlman siyati dijital la verifye, epi entèraksyon ak marqueur fèt sou bò kliyan (ou pa bezwen enstale libsk-libfido2 sou sèvè a, men sèvè a dwe sipòte kalite kle "ecdsa-sk"). . Kle prive pwodwi a (id_ecdsa_sk) se esansyèlman yon manch kle, fòme yon kle reyèl sèlman nan konbinezon ak sekans sekrè ki estoke sou bò siy U2F. Si kle id_ecdsa_sk tonbe nan men yon atakè, pou pase otantifikasyon li pral bezwen tou jwenn aksè nan siy pyès ki nan konpitè, san yo pa kle prive ki estoke nan fichye id_ecdsa_sk la pa itil.

Anplis de sa, pa default, lè w ap fè nenpòt operasyon ak kle (tou de pandan jenerasyon ak pandan otantifikasyon), konfimasyon lokal yo nan prezans fizik itilizatè a obligatwa, pou egzanp, li se pwopoze manyen Capteur a sou siy la, ki fè li difisil a. pote soti nan atak aleka sou sistèm ki gen yon siy konekte. Kòm yon lòt liy defans, yo ka espesifye yon modpas tou pandan faz demaraj ssh-keygen pou jwenn aksè nan dosye kle a.

Nouvo vèsyon OpenSSH la te anonse tou deprésyon k ap vini nan algoritm lè l sèvi avèk hash SHA-1 akòz pwomosyon efikasite nan atak kolizyon ak yon prefiks bay (se pri pou chwazi yon kolizyon estime a apeprè 45 mil dola). Nan youn nan degaje kap vini yo, yo planifye enfim pa default kapasite nan sèvi ak kle piblik algorithm siyati dijital "ssh-rsa", ki mansyone nan RFC orijinal la pou pwotokòl SSH la epi li rete toupatou nan pratik (pou teste itilizasyon an. nan ssh-rsa nan sistèm ou yo, ou ka eseye konekte via ssh ak opsyon "-oHostKeyAlgorithms=-ssh-rsa").

Pou lis tranzisyon an nan nouvo algoritm nan OpenSSH, nan yon lavni nan lavni anviwònman UpdateHostKeys yo pral aktive pa default, ki pral otomatikman imigre kliyan nan algoritm ki pi serye. Algoritm yo rekòmande pou migrasyon yo enkli rsa-sha2-256/512 ki baze sou RFC8332 RSA SHA-2 (sipòte depi OpenSSH 7.2 epi itilize pa default), ssh-ed25519 (sipòte depi OpenSSH 6.5) ak ecdsa-sha2-nistp256/384. sou RFC521 ECDSA (sipòte depi OpenSSH 5656).

Nan OpenSSH 8.2, kapasite pou konekte lè l sèvi avèk "ssh-rsa" toujou disponib, men yo te retire algorithm sa a nan lis CASignatureAlgorithms, ki defini algoritm yo pèmèt pou siyen dijital nouvo sètifika. Menm jan an tou, yo te retire algorithm diffie-hellman-group14-sha1 nan algorithm echanj kle default yo sipòte. Li te note ke itilizasyon SHA-1 nan sètifika yo asosye ak risk adisyonèl, depi atakè a gen tan san limit pou chèche yon kolizyon pou yon sètifika ki deja egziste, pandan y ap tan nan atak sou kle lame a limite pa delè koneksyon an (LoginGraceTime). ).

Kouri ssh-keygen kounye a par défaut nan algorithm rsa-sha2-512, ki sipòte depi OpenSSH 7.2, ki ka kreye pwoblèm konpatibilite lè w ap eseye trete sètifika ki siyen nan OpenSSH 8.2 sou sistèm ki kouri pi gran OpenSSH degaje (pou travay sou pwoblèm nan lè Lè jenere yon siyati, ou ka presize klèman "ssh-keygen -t ssh-rsa" oswa itilize algoritm ecdsa-sha2-nistp256/384/521, ki sipòte depi OpenSSH 5.7).

Lòt chanjman:

  • Yo te ajoute yon direktiv enkli nan sshd_config, ki pèmèt ou mete sa ki nan lòt dosye nan pozisyon aktyèl la nan fichye a konfigirasyon (yo ka itilize mask glob lè w espesifye non fichye a);
  • Opsyon "pa gen okenn manyen obligatwa" yo te ajoute nan ssh-keygen, ki enfim bezwen pou konfime fizikman aksè a siy la lè w ap jenere kle a;
  • Yo te ajoute yon direktiv PubkeyAuthOptions nan sshd_config, ki konbine divès opsyon ki gen rapò ak otantifikasyon kle piblik. Kounye a, se sèlman drapo "pa gen okenn manyen obligatwa" sipòte pou sote chèk prezans fizik pou otantifikasyon siy. Pa analoji, opsyon "pa gen okenn manyen obligatwa" yo te ajoute nan fichye authorized_keys la;
  • Te ajoute opsyon "-O write-attestation=/path" nan ssh-keygen pou pèmèt sètifika attestasyon FIDO adisyonèl yo dwe ekri lè y ap jenere kle. OpenSSH poko sèvi ak sètifika sa yo, men yo ka itilize pita pou verifye ke yo mete kle a nan yon magazen kenkayri ou fè konfyans;
  • Nan anviwònman ssh ak sshd, kounye a li posib pou mete mòd priyorite trafik atravè direktiv IPQoS la. LE DSCP (Konpòtman pi ba pou chak so);
  • Nan ssh, lè mete valè "AddKeysToAgent = wi", si kle a pa genyen yon jaden kòmantè, li pral ajoute nan ssh-agent ki endike chemen kle a kòm yon kòmantè. NAN
    ssh-keygen ak ssh-agent tou kounye a itilize etikèt PKCS#11 ak non sijè X.509 olye pou yo chemen bibliyotèk la kòm kòmantè nan kle a;

  • Te ajoute kapasite pou ekspòte PEM pou kle DSA ak ECDSA nan ssh-keygen;
  • Te ajoute yon nouvo ègzèkutabl, ssh-sk-helper, ki itilize pou izole bibliyotèk aksè a token FIDO/U2F;
  • Te ajoute opsyon bati "--with-zlib" nan ssh ak sshd pou konpilasyon ak sipò bibliyotèk zlib;
  • Dapre egzijans RFC4253, yon avètisman sou bloke aksè akòz depase limit MaxStartups yo bay nan banyè ki parèt pandan koneksyon an. Pou senplifye dyagnostik, header pwosesis sshd, vizib lè w ap itilize sèvis piblik ps la, kounye a montre kantite koneksyon ki otantifye kounye a ak estati limit MaxStartups la;
  • Nan ssh ak ssh-agent, lè w ap rele yon pwogram pou montre yon envitasyon sou ekran an, espesifye atravè $SSH_ASKPASS, kounye a yon drapo ak kalite envitasyon an transmèt: "konfime" - dyalòg konfimasyon (wi/non), "okenn. ” - mesaj enfòmasyon, “blank” - demann modpas;
  • Te ajoute yon nouvo operasyon siyati dijital "find-directors" nan ssh-keygen pou chèche fichye siyatè yo pèmèt itilizatè a ki asosye ak yon siyati dijital espesifye;
  • Amelyore sipò pou izolasyon pwosesis sshd sou Linux lè l sèvi avèk mekanis seccomp la: enfimite apèl sistèm IPC, sa ki pèmèt clock_gettime64(), clock_nanosleep_time64 ak clock_nanosleep ().

Sous: opennet.ru

Add nouvo kòmantè